我一直在争论这一段时间,但我终于屈服于提交一个问题,看看是否有其他人有问题。
基本上我尝试使用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个没有登录,因为它未登录尚未)。
对此有任何帮助都很棒,谢谢。
更新:我创建了一个全新的应用程序和一个全新的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>