ディープリンクを使用したプッシュメッセージの実装

Adobe Mobile Services UI で設定したディープリンク URL は、プッシュペイロードの adb_deeplink キーに含まれます。

  1. AppDelegate で、ディープリンク URL を返し、以下の場所で独自に処理できます。

    • application:didFinishLaunchingWithOptions:

      プッシュクリックスルーが発生したときにアプリが動作していない場合は、launchOptions からプッシュペイロードを取得できます。ディープリンク URL は、adb_deeplink キーによってペイロード辞書に含まれます。

    • リモート通知用の delegate メソッド

      didReceiveRemoteNotification: アプリケーションまたは didReceiveRemoteNotification:fetchCompletionHandler: アプリケーション内で、userInfo 辞書に adb_deeplink キーを使用してアクセスし、URL を取得することができます。

    • UNUserNotificationCenter 用の delegate メソッド

      userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: メソッド内で、userInfo 辞書から、adb_deeplink キーでプッシュペイロードを取得できます。

以下に例を示します。

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSDictionary *remoteNotification = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
    if (remoteNotification && [remoteNotification isKindOfClass:[NSDictionary class]]) {
        NSString *deeplink = remoteNotification[@"adb_deeplink"];
        // handle deep link url
    }
    return YES;
}

// app target < iOS 7
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    // only send the hit if the app is not active
    if (application.applicationState == UIApplicationStateInactive) {
        [ADBMobile trackPushMessageClickThrough:userInfo];
        NSString *deeplink = userInfo[@"adb_deeplink"];
        // handle deep link url
    }
}

// app target >= iOS 7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateInactive) {
        [ADBMobile trackPushMessageClickThrough:userInfo];
        NSString *deeplink = userInfo[@"adb_deeplink"];
        // handle deep link url
    }
    ...
}

// if using UNUserNotificationCenterDelegate and device is running iOS 10 or newer
- (void) userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
    if ([response.notification.request.trigger isKindOfClass:UNPushNotificationTrigger.class]) {
        [ADBMobile trackPushMessageClickThrough:response.notification.request.content.userInfo];
        NSString *deeplink = response.notification.request.content.userInfo[@"adb_deeplink"];
        // handle deep link url
    }
    ...
}

このページ