دیپ لینک (Deeplink)
ویرایش
دیپ لینک یا لینک عمقی در واقع استفاده از لینکی است که کاربران را به داخل یک صفحه خاص در وبسایت، و یا قسمت خاصی از اپلیکیشن هدایت میکند. به عبارت دیگر، دیپ لینک را میتوانید به عنوان یک میانبر (Shortcut) هوشمند در نظر بگیرید که کاربر را به مقصدهای مرتبط (با پیام شما) هدایت میکند.
مزایا
قابلیت دیپ لینک به شما کمک میکند تا نرخ تبدیل کمپینهای خود را به صورت چشمگیری افزایش دهید. به عنوان مثال، کاربر شما محصولی را به سبد خرید خود اضافه کرده است اما سبد خود را رها کرده و خرید را تکمیل نکرده است. در این صورت شما میتوانید با یک نوتیفیکیشن به موقع تخفیف روی آن محصول، کاربر را مستقیما به صفحه محصول هدایت کنید و به انجام خرید تشویق کنید.
پیادهسازی اندروید
در اندروید، برای استفاده از دیپ لینک باید مقصد مورد نظر را در قالب 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
مورد نظر را در اپلیکیشن خود مشخص کنید. این کار را با باز کردن xcode>project settings> info و وارد کردن Scheme
به The URL Types انجام دهید. Scheme
مورد نظر را به شکل APP_NAME وارد کنید.
برای اینکه آیاواس لینک شما را بشناسد باید شکل آن را مانند url کنید (به این صورت scheme ://resource). به عنوان مثال APP_NAME://PAGE_NAME را وارد میکنیم.
در این حالت، نتیجه twitter://user?screen_name=ChabokPush مانند زیر خواهد شد:
url.scheme = “twitter”
url.host = “user”
parameters = [ “screen_name” : “ChabokPush” ]
پس از آن کد زیر را AppDelegate.m
اضافه کنید:
#import <React/RCTLinkingManager.h>
در آخر، پایین implementation
کد زیر را هم اضافه کنید:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [RCTLinkingManager application:application openURL:url
sourceApplication:sourceApplication annotation:annotation];
}
// Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
دریافت دیپ لینک
پس از پیادهسازی دیپ لینک در اندروید و آیاواس با فراخوانی متد زیر میتوانید آن را دریافت کنید. همچنین شما میتوانید با استفاده از متد appWillOpenUrl
اطلاعات را از اپلیکیشن به سرور چابک ارسال کنید:
componentDidMount() {
...
Linking.getInitialURL().then((url) => {
if (url) {
this.handleOpenURL({ url });
}
});
Linking.addEventListener('url', this.handleOpenURL.bind(this));
}
componentWillUnmount() {
Linking.removeEventListener('url', this.handleOpenURL);
}
handleOpenURL(event) {
console.log("Got deep-link url = ", event.url);
const route = event.url.replace(/.*?:\/\//g, '');
// do something with the url, in our case navigate(route)
if (event && event.url) {
this.chabok.appWillOpenUrl(event.url);
}
}
نکته:
برای اطلاعات بیشتر میتوانید این صفحه را مطالعه کنید.
نحوه استفاده در ترکر
اگر میخواهید از دیپ لینک در ترکر خود استفاده کنید، نامی که به 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__" } }'
با وارد کردن دستور زیر نوتیفیکیشن زیر همراه با دیپ لینک ارسال خواهد شد:
دیپ لینک قبل از نصب اپلیکیشن (Deferred Deep Linking)
این حالت زمانی اتفاق میافتد که شما از پارامترها deep_link
استفاده کرده باشید، اما کاربر در زمان کلیک اپلیکیشن را هنوز روی گوشی خود نداشته باشد. در این حالت روی اندروید کاربر به یکی از مارکتهایی که شما در ترکر تعیین کرداید، هدایت میشود. پس از نصب اپلیکیشن، کاربر با اولین بازدید دیپ لینک را دریافت خواهد کرد.
کالبک دیپ لینک قبل از نصب اپلیکیشن
اگر میخواهید تعیین کنید که چابک این دیپ لینک را باز کند یا خودتان تصمیم بگیرید، میتوانید از کد زیر استفاده کنید:
this.chabok.setOnDeeplinkResponseListener(true, (deepLink) => {
alert('Got deferred deepLink = ' + deepLink)
});
در صورتی که در بالا true
برگردانید، چابک آن را باز میکند. اگر هم false
برگردانید، خودتان تصمیم میگیرید که چه اتفاقی رخ دهد.