提问人:dev_jac 提问时间:6/13/2014 最后编辑:Cœurdev_jac 更新时间:6/30/2017 访问量:2642
如何使远程通知适用于 CloudKit 订阅?
How to make remote notifications work with CloudKit Subscriptions?
问:
到目前为止,我无法订阅工作。(在我的设备上收到推送通知,订阅似乎已成功创建)
我一直在玩 [CloudKitAtlas][1]。我按照该方案的自述文件中的内容做了:
要求
建
- iOS 8.0 SDK 和 Xcode 6
- 在 iCloud 中启用 CloudKit 授权(来自“功能”)
- 更改容器名称以在开发者帐号中预配容器
我能够启动该应用程序,它成功注册了远程通知:
2014-06-09 11:15:17.712 CloudKitAtlas[841:220562] 注册推送 带有令牌的通知:
我还可以创建记录、查询它们并订阅:
2014-06-09 11:15:21.966 CloudKitAtlas[841:220934] 订阅项目
如果我转到仪表板,我会看到创建了多个订阅。 但是当我创建一个新记录时,没有任何反应,回调:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)info
从不执行(注意:我在 iPhone 5S 上运行应用程序,而不是在模拟器上运行)
我正在使用带有显式捆绑 ID(无通配符)的调试签名,对于此应用程序 ID,我还创建了相应的推送通知证书,尽管我刚刚下载了它们,因为我与这些文件无关。
- 我忘了做某事吗?
- 我没有正确测试它吗?
- 是否有人设法在他的设备上获得由订阅触发的远程通知?
更新 15 / 06 / 14 显然这是苹果方面的一个错误,让我们等待几个星期。https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599
更新 18 / 05 / 15
如果有人想知道这个错误很久以前就被苹果解决了,现在它就像一个魅力,尽管你需要做一些考虑:
- 确保 saveSubscription:completionHandler: 方法执行时没有错误
- 如果您使用 [application registerForRemoteNotifications];您只会在前台使用应用程序收到通知,它可能看起来毫无意义,但它非常有用,因为这种推送通知是“静默”的,您不需要用户许可即可使用它们
- 如果您想通过弹出窗口获取老式推送通知,请求权限和出现在应用程序外部的警报,以及使用以下功能所需的一切:
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[应用程序registerUserNotificationSettings:设置];
就这样
答:
registerForRemoteNotificationTypes:类型 NS_DEPRECATED_IOS(3_0, 8_0, “请改用 registerForRemoteNotifications 和 registerUserNotificationSettings:”);
返回启用的类型,同时考虑任何系统范围的设置;与连接无关。
enabledRemoteNotificationTypes NS_DEPRECATED_IOS(3_0, 8_0, “请使用 -[UIApplication isRegisteredForRemoteNotifications] 或 -[UIApplication currentUserNotificationSettings] 检索用户启用的远程通知和用户通知设置”);
从 iOS8 开始,它被弃用不是原因,可能会吗?
评论