在iOS 9.3发布后,CloudKit iOS 9.0 didReceiveRemoteNotification未调用

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)

pow*_*old 0

解决方案相当棘手。在我的 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 通知。

感谢您的帮助!