pow*_*old 5 synchronization push-notification ios cloudkit
我有一个iOS 9.0的iPod Touch,在iOS 9.3发布后没有收到CloudKit CKSubscription推送通知.
我的iPad与iOS 9.3正在接收通知,使用相同版本的应用程序.
有谁知道这里发生了什么?某些CloudKit版本是否不再将通知推送到旧版本?
当我在iPod Touch上删除并重新安装应用程序时,我点击"允许"以允许推送通知,但如果我在CloudKit仪表板中进行任何记录更改,则只有我的iPad收到推送通知,并且甚至没有调用didReceiveRemoteNotification iPod Touch.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Register for push notifications
let notificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert, categories: nil)
application.registerUserNotificationSettings(notificationSettings)
application.registerForRemoteNotifications()
return true
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
}
Run Code Online (Sandbox Code Playgroud)
解决方案相当棘手。在我的 Xcode 项目中,有一个 *.entitlements 文件,其中包含我的应用程序图标的名称(如设备上显示的)。但是,我的项目名称与这个 *.entitlements 文件不同:
我的文件: ABC.entitlements(我的应用程序在设备上显示为 ABC)
我的项目名称: XYZ
因此,我尝试将权利文件的名称更改为 XYZ.entitlements,但 Xcode 向我发出警告,称已经存在一个名为 XYZ.entitlements 的文件。事实证明,我的支持文件文件夹中还有另一个 *.entitlements 文件。此权利文件没有任何 iCloud 设置。
实际上,这并不重要,因为在我的构建设置中,权利文件路径设置为 ABC.entitlements,但由于某种原因,对于我的 iPod Touch 的 iOS 9.0.1,它似乎正在使用 XYZ.entitlements 文件(我的假设)。
我从项目中删除了 XYZ.entitlements 文件,并将 ABC.entitlements 文件包含在我的目标成员资格中。此后,我的 iPod Touch 能够再次接收 CloudKit 通知。
感谢您的帮助!