プッシュ通知の計測

概要

このガイドでは、受信プッシュ通知を処理し、抽出されたアトリビューションデータをAppsFlyerに送信するためのiOS SDKの実装内容について説明します。

実装には次の2つの方法があります:

  • プッシュペイロードでOneLinkを利用する(推奨方法)
    ステップ 3 は、このソリューションを実装する場合にのみ必要です。
  • プッシュペイロードでプレーンなJSONを使用する(旧来の方法)

マーケティング担当者がプッシュ通知をどのように設定するかに基づいて、適切な方法を選択してください。

AppsFlyerとiOSプッシュ通知の連携

AppsFlyerとiOSプッシュ通知の連携は、次の要素で構成されます:

  • AppsFlyer SDKの設定
  • Configuring a UNUserNotificationCenter delegate.

Prerequisites

続行する前に、次を確認してください:

  1. プッシュ通知が有効 なiOSアプリ
  2. AppsFlyer SDKが実装されていること
  3. 推奨される OneLink ベースのソリューションを実装する場合は、OneLink (アプリのマーケティング担当者によって提供される) を含むプッシュ通知ペイロード内のキーの名前が必要です。

Steps

  1. Configure the app to use the UNUserNotificationCenter delegate:

    if #available(iOS 10.0, *) {
              // For iOS 10 display notification (sent via APNS)
              UNUserNotificationCenter.current().delegate = self
    
              let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
              UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: { _, _ in }
              )
            } else {
              let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
              application.registerUserNotificationSettings(settings)
            }
    
            application.registerForRemoteNotifications()
    }
    
  2. Implement the UNUserNotificationCenter delegate. In the didReceive method, call handlePushNotification:

    @available(iOS 10, *)
    extension AppDelegate: UNUserNotificationCenterDelegate {
      func userNotificationCenter(_ center: UNUserNotificationCenter,
                                  didReceive response: UNNotificationResponse,
                                  withCompletionHandler completionHandler: @escaping () -> Void) {
        let userInfo = response.notification.request.content.userInfo
        print(userInfo)
        completionHandler()
        AppsFlyerLib.shared().handlePushNotification(userInfo)
      }
      
      // Receive displayed notifications for iOS 10 devices.
      func userNotificationCenter(_ center: UNUserNotificationCenter,
                                  willPresent notification: UNNotification,
                                  withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions)
                                    -> Void) {
        let userInfo = notification.request.content.userInfo
        print(userInfo)
    
        // Change this to your preferred presentation option
        completionHandler([[.alert, .sound]])
      }
    }
    
  3. This step is required only if you're implementing the recommended OneLink-based solution.
    In didFinishLaunchingWithOptions, call addPushNotificationDeepLinkPath before calling start:

    AppsFlyerLib.shared().addPushNotificationDeepLinkPath(["af_push_link"])
    

    In this example, the SDK is configured to look for the af_push_link key in the push notification payload.
    When calling addPushNotificationDeepLinkPath the SDK verifies that:

    • 必要なキーがペイロード内に存在しているか
    • そのキーに有効なOneLink URLが含まれているか

📘

注意

addPushNotificationDeepLinkPath accepts an array of strings too, to allow you to extract the relevant key from nested JSON structures. For more information, see addPushNotificationDeepLinkPath.