دیپ لینک (Deeplink)
ویرایش
دیپ لینک یا لینک عمقی در واقع استفاده از لینکی است که کاربران را به داخل یک صفحه خاص در وبسایت، و یا قسمت خاصی از اپلیکیشن هدایت میکند. به عبارت دیگر، دیپ لینک را میتوانید به عنوان یک میانبر (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__" } }'
با وارد کردن دستور زیر نوتیفیکیشن زیر همراه با دیپ لینک ارسال خواهد شد:
ارسال اطلاعات به سرور
آمار دیپ لینک از طریق متدهای 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);
}
دیپ لینک قبل از نصب اپلیکیشن (Deferred Deep Linking)
این حالت زمانی اتفاق میافتد که شما از پارامترها deep_link
استفاده کرده باشید، اما کاربر در زمان کلیک اپلیکیشن را هنوز روی گوشی خود نداشته باشد. در این حالت کاربر به یکی از مارکتهایی که شما در ترکر تعیین کرداید، هدایت میشود. پس از نصب اپلیکیشن، کاربر با اولین بازدید دیپ لینک را دریافت خواهد کرد.
کالبک دیپ لینک قبل از نصب اپلیکیشن
اگر میخواهید تعیین کنید که چابک این دیپ لینک را باز کند یا خودتان تصمیم بگیرید، میتوانید از کالبک زیر استفاده کنید:
AdpPushClient.get().setOnDeeplinkResponseListener(new OnDeeplinkResponseListener() {
@Override
public boolean launchReceivedDeeplink(Uri uri) {
if (shouldChabokSdkLaunchTheDeeplink(uri)) {
return true;
} else {
return false;
}
}
});
در صورتی که در بالا true
برگردانید، چابک آن را باز میکند. اگر هم false
برگردانید، خودتان تصمیم میگیرید که چه اتفاقی رخ دهد.