DeepLink 功能整合
在使用 DeepLink 功能時,首先需要完成以下設定
- 在應用程式中正確整合 Android 、iOS SDK
- 在活動頁面正確整合 Web JS SDK
Android 端
在神策分析頁面查看對應的設定
設定 AndroidManifest.xml
將取得的設定資訊放入 AndroidManifest.xml 中需喚醒的 Activity 中
設定 Activity
重寫 onNewIntent(Intent intent) 方法,呼叫 setIntent(intent):
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
取得應用内參數
DeepLink 喚醒應用成功後會回呼 setDeepLinkCallback 方法:
SensorsDataAPI.sharedInstance().setDeepLinkCallback(new SensorsDataDeepLinkCallback() {
/**
* @description 處理本次 DeepLink 跳轉
* @param params 建立管道連結時填寫的參數
* @param success 請求管道資訊是否成功
* @param appAwakePassedTime 本次請求時長
*/
@Override
public void onReceive(String params, boolean success, long appAwakePassedTime) {
}
});
iOS 端
在神策分析頁面查看對應的設定
設定 Universal Link
iOS 工程選擇 TARGETS -> Signing & Capabilities -> Associated Domains ,打開 Associated Domains 開關並在 Domains 中填入上一步中取得到的 Associated Domain 設定資訊:
設定 URL Scheme
iOS 工程選擇 TARGETS -> Info -> URL Types,點擊加號(+),設定喚醒 App 的 URL Schemes。内容為上面步驟中取得的 URL Scheme 設定資訊:
增加 URL Scheme 和 Universal Link 支援
在 SDK 中設定 URL Scheme 和 Universal Link 後,就可以透過 URL Scheme 和 Universal Link 喚醒 App。在 AppDelegate 中實作下列方法監聽 DeepLink 喚醒。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
// 業務相關邏輯處理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:url]) {
return YES;
}
return YES;
}
- (BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void (^)(NSArray*))restorationHandler {
// 業務相關邏輯處理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:userActivity.webpageURL]) {
return YES;
}
return YES;
}
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
// 業務相關邏輯處理
if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:url]) {
return YES;
}
return YES;
}
取得應用程式内參數
呼叫 - setDeeplinkCallback: 方法取得在建立管道連結時填寫的 App 内參數資訊。使用說明如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:Sa_Default_ServerURL launchOptions:launchOptions];
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart | SensorsAnalyticsEventTypeAppEnd | SensorsAnalyticsEventTypeAppClick | SensorsAnalyticsEventTypeAppViewScreen;
[SensorsAnalyticsSDK startWithConfigOptions:options];
/// 處理本次 DeepLink 跳轉
/// @param params 建立管道連結時填寫的參數
/// @param success 請求管道資訊是否成功
/// @param appAwakePassedTime 本次請求時長
[[SensorsAnalyticsSDK sharedInstance] setDeeplinkCallback:^(NSString * _Nonnull params, BOOL success, NSTimeInterval appAwakePassedTime) {
}];
return YES;
}
Web 端
增加 DeepLink 按鈕
在活動頁面增加立即打開或類似的操作按鈕:
按鈕的事件處理
在按鈕的操作處呼叫 openDeepLink() 方法,超時則判斷為喚醒失敗,瀏覽器會跳轉至設定的下載網址
// 初始化深度連結外掛程式
sensors.quick('useAppPlugin', {
deeplink: function(deeplink) {
deeplink.init({timeout: 2900}); // 等待喚醒 App 的時間,預設 3000 ms
document.getElementById('theBtn').addEventListener('click', function(e) {
e.preventDefault();
deeplink.openDeepLink();
});
}
});
其他
查看 Android 應用程式簽名
在本地使用 keytool -list -v -keystore 【簽名路徑】
查看 iOS 應用程式的 App ID Prefix
登入 Apple開發者網站,在 Certificates, Identifiers & Profiles 頁面,查看對應的 App ID Prefix