我有一个装有iOS 9.0的iPod Touch,在iOS 9.3发行后没有收到CloudKit CKSubscription推送通知。

我使用iOS 9.3的iPad使用相同版本的应用程序就可以很好地接收通知。

有人知道这是怎么回事吗?某些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]) {
}

最佳答案

解决方案相当棘手。在我的Xcode项目中,有一个* .entitlements文件,其名称为我的应用程序图标(显示在设备上)。但是,我项目的名称与此* .entitlements文件不同:

我的文件: ABC.entitlements(我的应用在设备上显示为ABC)

我的项目名称: XYZ

因此,我尝试将权利文件的名称更改为XYZ.entitlements,但是Xcode向我发出警告,说已经有一个名为XYZ.entitlements的文件。事实证明,我的“支持文件”文件夹中还有一个* .entitlements文件。此权利文件没有任何iCloud设置。

实际上,这无关紧要,因为在我的构 build 置中,权利文件路径设置为ABC.entitlements,但是由于某种原因,在iPod Touch的iOS 9.0.1中,它似乎正在使用XYZ.entitlements文件(我的假设)。

我从项目中删除了XYZ.entitlements文件,并且还将ABC.entitlements文件包含在我的目标成员资格中。此后,我的iPod Touch能够再次接收CloudKit通知。

谢谢你的帮助!

09-05 20:21