17

到目前为止,我无法订阅工作。(在我的设备上收到推送通知,订阅似乎已成功创建)

我一直在玩 [CloudKitAtlas][1]。我做了那个项目的自述文件中所说的:

要求

建造

  • iOS 8.0 SDK 和 Xcode 6
  • 在 iCloud 中启用 CloudKit 权利(来自 Capabilities)
  • 更改您的容器名称以在您的开发者帐户中配置容器

我能够启动该应用程序,它成功注册了远程通知:

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,我还创建了相应的推送通知证书,尽管我只是下载了它们,因为我与这些文件无关。

  1. 我忘记做某事了吗?
  2. 我没有正确测试它吗?
  3. 有没有人设法在他的设备上收到由订阅触发的远程通知?

更新 15 / 06 / 14 显然这是苹果方面的一个错误,让我们等几个星期。 https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599


更新 18 / 05 / 15

万一有人想知道这个 bug 很久以前就被 Apple 解决了,现在它就像一个魅力,虽然你需要做一些考虑:

  1. 确保saveSubscription:completionHandler:方法执行没有错误
  2. 如果您使用[应用程序 registerForRemoteNotifications];您只会在前台收到应用程序的通知,这可能看起来毫无意义,但它非常有用,因为这种推送通知是“无声的”,并且您不需要用户许可即可使用它们
  3. 如果您想通过弹出请求获得许可和出现在应用程序外部的警报以及您需要使用的所有内容来获取旧时尚推送通知,例如:
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
                                        UIUserNotificationTypeBadge |
                                        UIUserNotificationTypeSound |
                                        UIUserNotificationTypeAlert
                                                                         categories:nil];
    

    [应用程序注册用户通知设置:设置];

就这样

4

1 回答 1

-1

registerForRemoteNotificationTypes:types NS_DEPRECATED_IOS(3_0, 8_0, "请使用 registerForRemoteNotifications 和 registerUserNotificationSettings: 代替");

// 返回启用的类型,同时考虑任何系统范围的设置;与连通性无关。

enabledRemoteNotificationTypes NS_DEPRECATED_IOS(3_0, 8_0, "请使用 -[UIApplication isRegisteredForRemoteNotifications] 或 -[UIApplication currentUserNotificationSettings] 检索用户启用的远程通知和用户通知设置");

从 iOS8 开始它被弃用不是原因,可能会是?

于 2014-06-26T10:17:32.260 回答