Facebook Analytics Push на iOS работает только изредка

Некоторое время я боролся с этим, но наконец-то уступил, чтобы задать вопрос, чтобы увидеть, есть ли у кого-то еще проблемы.

По сути, я пытаюсь использовать push-сервис Facebook Analytics и, похоже, получаю push-уведомления только иногда. Я перехватывал вызовы API с помощью прокси-сервера charles, чтобы убедиться, что push-токены правильно отправляются SDK Facebook и события регистрируются, как и ожидалось. С этой точки зрения все хорошо.

Затем я использую "Подтверждение настройки push-кампании" на странице настроек, чтобы попытаться отправить push-тесты и push-тесты в приложении, и они также отлично работают (карты правильно отображаются на устройствах и т. Д.) На 3 тестовых устройствах, которые я использую. с помощью.

Проблема возникает при попытке создать кампанию для отправки сообщений на определенный сегмент устройств. Первое устройство, с которым я пробовал, работало без проблем, но затем последующие устройства (без каких-либо изменений в кодовой базе вообще) не получат толчков от любых настроенных мной кампаний. Моя целевая аудитория - "Device OS - iOS", поэтому я ожидаю, что все устройства iOS получат толчок от кампании. Это показалось немного странным, поэтому я удалил приложение со всех устройств и перестроил их снова (убедившись, что тестовый пуш работал на всех устройствах) и снова настроил кампанию, но на этот раз даже первое устройство больше не работало. В отладчике событий я получаю "Push Notification Error" и error_message "InvalidDeviceOS", который не имеет никакого смысла вообще.

Я возвращался и четвертый с этим в течение нескольких часов безуспешно. Я вижу, как токены отправляются в Facebook, и вижу события, регистрируемые в отладчике событий, я могу использовать сервис push-тестирования в настройках, и все устройства получают нажатия без проблем, но как только я пытаюсь использовать Походу я ничего не получаю.

Для завершения здесь приведены фрагменты кода, который я использую:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // ...
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil))
    // ...
}

func application(application: UIApplication, didRegisterUserNotificationSettings settings: UIUserNotificationSettings) {
    UIApplication.sharedApplication().registerForRemoteNotifications()
}

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

    FBSDKAppEvents.setPushNotificationsDeviceToken(deviceToken)
}

Наконец, отладчик событий после открытия новой установки на 3 разных устройствах (см. Первые события запуска, у 2 запусков приложения есть идентификаторы, а у 1 нет, поскольку он еще не вошел в систему).

Любая помощь с этим была бы отличной, спасибо.

ОБНОВЛЕНИЕ: я создал новое приложение и новый экземпляр аналитики Facebook, новые push-сертификаты и т. Д. Сначала я начал получать push-уведомления от кампаний, но как только я удалил и переустановил приложение, обмен сообщениями в кампании снова начал давать сбой. Затем я установил его на другое устройство, клонировал существующую кампанию и повторил попытку. Это привело к тому, что оригинальное устройство получило толчок, но новое устройство не... поражает воображение!

Теперь я не знаю, что происходит. На первый взгляд, сервис Facebook, похоже, становится нестабильным, когда APNS возвращает ошибку push, но действительно сложно доказать это предположение, так как сообщение об ошибке в Event Debugger практически бесполезно.

Опять же для полноты вот код из нового приложения:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

    application.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))

    return true
}

func applicationDidBecomeActive(_ application: UIApplication) {

    FBSDKAppEvents.activateApp()
}

// MARK: Notification Methods

func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {

    application.registerForRemoteNotifications()
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    FBSDKAppEvents.setPushNotificationsDeviceToken(deviceToken)
    FBSDKAppEvents.setUserID(NSUUID().uuidString)

    var token: String = ""
    for i in 0 ..< deviceToken.count {
        token += String(format: "%02.2hhx", deviceToken[i] as CVarArg)
    }
    print("Token: \(token)")
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

    if FBNotificationsManager.shared().canPresentPushCard(fromRemoteNotificationPayload: userInfo) {

        FBNotificationsManager.shared().presentPushCard(forRemoteNotificationPayload: userInfo, from: nil, completion: nil)

    } else {

        print("Unknown Payload")
    }

    completionHandler(.newData)
}

ОБНОВЛЕНИЕ 2: После нескольких часов экспериментов и копаний мы столкнулись с этим отчетом об ошибках на страницах поддержки Facebook, который, кажется, подтверждает, что это не отдельная проблема: https://developers.facebook.com/bugs/118059088679219/

0 ответов

Другие вопросы по тегам