Facebook Analytics Push on iOS仅适用于偶尔

时间:2016-12-07 15:47:02

标签: ios facebook-analytics

我一直在争论这一段时间,但我终于屈服于提交一个问题,看看是否有其他人有问题。

基本上我尝试使用Facebook Analytics推送服务,但似乎只是在某些时候接收推送通知。我一直在使用charles代理拦截API调用,以确保Facebook SDK正确发送推送令牌,并按预期记录事件。从这个角度看,一切都很好。

接下来,我使用推送广告系列设置验证'在设置页面上尝试发送推送和应用内推送测试,这些也可以在我使用的3个测试设备上正常工作(卡片在设备上正确显示等)。

在尝试创建广告系列以将推送发送到设备的某个部分时,问题就出现了。我尝试过的第一台设备完全没有任何问题,但随后的设备(根本没有对代码库进行任何更改)将不会从我设置的任何广告系列中获得任何推送。我的目标受众是“设备操作系统是iOS'所以我希望所有iOS设备都能从广告系列中获得推动。这似乎有点奇怪,所以我删除了所有设备上的应用程序并重新重建它们(确保测试推送适用于所有设备)并再次设置广告系列,但这次甚至第一台设备也不再有效。 在事件调试器中,我收到了推送通知错误'以及' InvalidDeviceOS'的错误消息这完全没有意义。

我现在已经回来了第四次,但现在却没有成功。我可以看到令牌被发送到Facebook,我可以看到事件调试器中记录的事件,我可以在设置中使用推送测试服务,所有设备都可以毫无问题地接收推送,但是一旦我尝试使用我一无所获。

为了完成目的,以下是代码I的代码片段:

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个应用程序启动时有ID&1;并且1个没有登录,因为它未登录尚未)。

enter image description here

对此有任何帮助都很棒,谢谢。

更新:我创建了一个全新的应用程序和一个全新的Facebook分析实例,新的推送证书等。最初我开始接收来自广告系列的推送,但是一旦我删除并重新安装该应用,就会发布广告系列消息又开始失败了。然后我将其安装到另一台设备上并克隆现有的广告系列并再次尝试。这导致原始设备获得推动但新设备没有......令人难以置信!

现在我不知道最近发生了什么。从表面上看,一旦推出APNS推送错误,Facebook服务似乎变得不稳定,但由于事件调试器中的错误报告几乎没用,所以很难证明这一假设。

再次为了完整性,这里是新应用程序的代码:

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/ < / p>

0 个答案:

没有答案