Push-уведомления

Обзор

The following guide covers the configuration of the iOS SDK for processing incoming push notifications and sending extracted attribution data to AppsFlyer.

Есть 2 метода для реализации интеграции:

  • By utilizing OneLink in the push payload (recommended method). Step 3 is required only if implementing this solution.
  • Использование обычного JSON в полезной нагрузке push-уведомления (устаревший метод).

Выберите подходящий для вас метод в зависимости от того, как маркетолог структурирует push-уведомление.

Интеграция AppsFlyer и push-уведомлений iOS

Интеграция AppsFlyer и push-уведомлений iOS состоит в следующем:

  • Настройка SDK AppsFlyer.
  • Configuring a UNUserNotificationCenter delegate.

Prerequisites

Прежде чем продолжить, убедитесь, что у вас есть:

  1. Приложение для iOS с включенными push-уведомлениями.
  2. Integrated the SDK.
  3. При внедрении рекомендуемого решения на основе OneLink вам потребуется имя ключа в полезной нагрузке push-уведомления, содержащего 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. Реализуйте делегат UNUserNotificationCenter delegate. In the didReceive вызовите 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:

    • В полезной нагрузке присутствует необходимый ключ.
    • Ключ содержит действительный URL OneLink.

📘

Примечание

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