دیپ لینک یا لینک عمقی در واقع استفاده از لینکی است که کاربران را به داخل یک صفحه خاص در وبسایت، و یا قسمت خاصی از اپلیکیشن هدایت می‌کند. به عبارت دیگر، دیپ لینک را می‌توانید به عنوان یک میانبر (Shortcut) هوشمند در نظر بگیرید که کاربر را به مقصدهای مرتبط (با پیام شما) هدایت می‌کند.


مزایا

قابلیت دیپ لینک به شما کمک می‌کند تا نرخ تبدیل کمپین‌های خود را به صورت چشمگیری افزایش دهید. به عنوان مثال، کاربر شما محصولی را به سبد خرید خود اضافه کرده است اما سبد خود را رها کرده و خرید را تکمیل نکرده است. در این صورت شما می‌توانید با یک نوتیفیکیشن به موقع تخفیف روی آن محصول، کاربر را مستقیما به صفحه محصول هدایت کنید و به انجام خرید تشویق کنید.

آپلود عکس


پیاده‌سازی

افزودن intent filter

برای استفاده از دیپ لینک باید مقصد مورد نظر را در قالب host، scheme و prefix (در صورت نیاز) تعیین کنید. این پارامترها را باید در دیتای کلاس intent-filter در activity دلخواه خود (صفحه‌ای که می‌خواهید هنگام اجرای اپلیکیشن باز شود) در فایل AndroidManifest.xml تعریف کنید:

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/app_name"
    android:screenOrientation="portrait">

    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        
        <!-- Accepts URIs that begin with "twitter://user” 
        <data android:scheme="twitter"
              android:host="user" />  -->
              
        <data android:scheme="APP_NAME"
              android:host="PAGE_NAME" />
    </intent-filter>
</activity>

نحوه استفاده در ترکر

اگر می‌خواهید از دیپ لینک در ترکر خود استفاده کنید، نامی که به scheme اختصاص دادید را در پارامتر deep_link لینک ترکر قرار دهید. به نمونه زیر دقت کنید:

https://a.chabok.io/TRACKER_ID?deep_link=APP_NAME%3A%2F%2Fpagename

همچنین در لینک ترکر خود می‌توانید از پارامتر ‍‍‍‍‍redirect هم استفاده کنید تا در صورت کار نکردن دیپ لینک، کاربر به این مقصد هدایت شود:

https://a.chabok.io/TRACKER_ID?deep_link=APP_NAME%3A%2F%2Fpagename&redirect=https://chabok.io

نحوه استفاده در نوتیفیکیشن

  • نمونه Curl

با اجرای دستور زیر در Terminal می‌توانید یک نوتیفیکیشن با دیپ لینک ارسال کنید. دقت کنید که در دستور زیر مقدار <ACCESS_TOKEN> حساب کاربری خود و مقدار USER_ID را شناسه‌ کاربری که می‌خواهید پیام به او تحویل داده شود، وارد نمایید. (این دستور برای ارسال به یک کاربر به خصوص است. برای ارسال به گروهی از کاربران به این صفحه مراجعه کنید.)

curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/toUsers?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{ "user": "USER_ID", "content": "ما را در توئیتر دنبال کنید", "notification": { "clickUrl": "twitter://user?screen_name=chabokpush", "title": "ما را در توئیتر دنبال کنید", "body": "با فالو کردن چابک، از تخفیف ۲۰٪ ما بهرمند شوید.", "actions": [ { "id": "new_tweet_action", "title": "توئیت جدید", "options": 5, "url": "twitter://post?message=%40chabokpush%20%D8%B1%D9%88%20%D9%81%D8%A7%D9%84%D9%88%20%DA%A9%D8%B1%D8%AF%D9%85%20%D9%88%20%D8%AA%D8%AE%D9%81%DB%8C%D9%81%D9%85%D9%88%20%DA%AF%D8%B1%D9%81%D8%AA%D9%85%20" }], "mediaType": "jpeg", "mediaUrl": "https://raw.githubusercontent.com/chabokpush/chabok-assets/master/samples/notification/chabokpush_twitter.jpeg", "mutableContent": true, "category": "__TWITTER_FOLLOW__" } }'

با وارد کردن دستور زیر نوتیفیکیشن زیر همراه با دیپ لینک ارسال خواهد شد:

Its You

ارسال اطلاعات به سرور

آمار دیپ لینک از طریق متدهای onCreate و یا onNewIntent انتقال داده می‌شود. زمانی که اپ را باز کنید و یکی از این متدها فراخوانی شوند، می‌توانید اطلاعات دیپ لینک را دریافت کنید.

پس از اینکه اطلاعات دیپ لینک را در اپلیکیشن خود دریافت کردید، متد appWillOpenUrl را فراخوانی کنید. این متد اطلاعات را از اپلیکیشن به سرور چابک ارسال می‌کند تا بررسی کند که اتریبیوشن جدید رخ داده است یا خیر.

به نمونه زیر دقت کنید:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = getIntent();
    AdpPushClient.get().appWillOpenUrl(data);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Uri data = intent.getData();
    AdpPushClient.get().appWillOpenUrl(data);
}

این حالت زمانی اتفاق می‌افتد که شما از پارامترها deep_link استفاده کرده باشید، اما کاربر در زمان کلیک اپلیکیشن را هنوز روی گوشی خود نداشته باشد. در این حالت کاربر به یکی از مارکت‌هایی که شما در ترکر تعیین کرد‌اید، هدایت می‌شود. پس از نصب اپلیکیشن، کاربر با اولین بازدید دیپ لینک را دریافت خواهد کرد.

کالبک دیپ لینک قبل از نصب اپلیکیشن

اگر می‌خواهید تعیین کنید که چابک این دیپ لینک را باز کند یا خودتان تصمیم بگیرید، می‌توانید از کالبک زیر استفاده کنید:

AdpPushClient.get().setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() {
    @Override
    public boolean launchReceivedDeeplink(Uri uri) {
        if (shouldChabokSdkLaunchTheDeeplink(uri)) {
            return true;
        } else {
            return false;
        }
    }
});

در صورتی که در بالا true برگردانید، چابک آن را باز می‌کند. اگر هم false برگردانید، خودتان تصمیم می‌گیرید که چه اتفاقی رخ دهد.