问题标签 [cksubscription]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2557 浏览

iphone - 如何使远程通知与 CloudKit 订阅一起工作?

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

我一直在玩 [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] 订阅项目

如果我转到仪表板,我会看到创建了几个订阅。但是当我创建一条新记录时,什么也没发生,回调:

从未执行(注意:我在 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. 如果您想通过弹出请求获得许可和出现在应用程序外部的警报以及您需要使用的所有内容来获取旧时尚推送通知,例如:

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

就这样

0 投票
1 回答
4043 浏览

ios - 未收到 CloudKit 推送通知

我正在编写一个使用 CloudKit 的小应用程序。由于某种原因,当有与查询匹配的新记录时,应用程序不会收到任何通知。有没有人能够让这个功能工作?

我在应用程序中创建新记录,也在 CloudKit 仪表板中创建新记录。记录非常简单,只有一个整数字段。

创建记录:

注册通知:

创建订阅:

运行上述代码并在仪表板中创建新记录后,我希望调用此应用程序委托方法:

但是,它永远不会被调用。

0 投票
1 回答
288 浏览

ios8 - 创建订阅时出现“CKSubscriptionTypeRecordZone 订阅与订阅选项 7 不兼容”

我正在尝试使用以下代码创建 CloudKit 订阅:

它失败并出现此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'CKSubscriptionTypeRecordZone subscriptions are incompatible with subscription options 7'

这是什么意思,我该如何解决?我希望在创建、更新或删除记录时收到通知。

0 投票
2 回答
2158 浏览

push-notification - 如何设置最小的 CKSubscription?

我想设置一个简单CKSubscription的通知我recordType创建了一个,如何?

0 投票
1 回答
482 浏览

cloudkit - 有条件的 CKSubscription 不会触发通知

我有一个OUP记录类型,它有一个记录类型的.DeleteSelf引用OU

如果我只是设置一个无条件订阅,那就行了

条件方式不是

终端内容:

我的谓词或订阅 ID 有什么问题?

0 投票
2 回答
1704 浏览

push-notification - CloudKit 不会将我的徽章计数重置为 0

我已经尝试了很多事情,但似乎无法从来自 cloudKit 的通知中重置徽章计数。有没有其他人遇到过这个问题。这是我尝试过的:

1)在本地设置徽章计数为0

没运气...

2)调用服务器清除徽章计数

没运气...

3) 拉入所有通知更改并将它们全部标记为已读

再次没有运气......

任何建议将不胜感激!谢谢,克里斯

0 投票
1 回答
573 浏览

ios - 具有复杂谓词的 CKSubscription

我正在尝试使用CKSubscription这种方式:

这让我出错:

这看起来像 validNSPredicate不能作为CKSubscription对象的一部分正确存储在 CloudKit 中。是真正的苹果虫还是我的?

PS我通过删除谓词条件的不同部分尝试了很多不同的组合。看起来event_type工作正常的唯一条件,但是当我混合 3 个条件时AND- 这会导致问题。

我在 iPhone 5S 上Xcode 6 beta 6使用的OSX 10.10 DP6PPSiOS8 beta 5

更新:

具有以下谓词之一的订阅可以正常工作:

但是使用公共谓词保存订阅失败:

看起来像真正的 Apple CloudKit 错误。刚刚在 bugreport.apple.com 上打开问题 #18105879

更新 2:

感谢@purrrminator - 这里有两个雷达接收 CloudKit 推送通知有问题:

http://openradar.appspot.com/18807663

http://openradar.appspot.com/18798061

我找到了通过使用大量相等比较器CKSubscription呈现条件来正确保存的解决方法。IN但实际上我没有收到来自 CLoudKit 的推送通知......

0 投票
1 回答
996 浏览

ios - 通过 CKSubscription 观察 CKRecord 删除不起作用

CKSubscriptiondoc 说:当记录修改导致订阅触发时,服务器会向所有具有该订阅的设备发送推送通知,但对记录进行原始更改的设备除外。

假设我有两个设备:device 1device 2从不同的 iCloud 帐户登录。假设两个设备都订阅了某个记录类型的记录删除。

  1. 如果 device 1创建记录然后将其device 1删除,则会device 2收到通知-这是根据文档,但是..
  2. 如果device 1创建记录然后将其device 2删除然后device 2收到通知 - 我不认为它是根据文档,并且它没有任何意义,device 2删除它所以device 1应该通知

在设备 1 和设备 2 上设置订阅


在设备 1 上创建记录


删除设备 2 上的记录

0 投票
3 回答
2116 浏览

ios - CloudKit 订阅有时不起作用

如果我尝试使用以下代码订阅 CloudKit:

我有时会收到此错误:

CKError 0x17558460:“服务器拒绝请求”(15/2000);server message = "内部服务器错误"; uuid = B89DE7A4-9D22-42BC-9CD4-4330F3FE04EF;容器 ID = "iCloud.com.app.testApp"

或者

CKError 0x14fb3510:“服务不可用”(6/2022);server message = "安装模式失败,CAS失败"; uuid = F562D1AD-B40E-4842-A5EA-2A5F800C18F2;容器 ID = "iCloud.com.app.testApp"

有人知道如何解决吗?我可以用我的代码做点什么吗?这是Apple的问题,我无能为力吗?谢谢。

0 投票
1 回答
270 浏览

ios - CKQueryNotification 原因怎么可能是 RecordUpdated 但 recordFields 是 nil?

println("queryNotification.recordFields.keys: \(queryNotification.recordFields?.keys)")

我不明白这个日志怎么可能?如果我收到记录已更新的通知,那么我至少需要一个已更改的字段,不是吗?顺便说一句,我正在更改另一台设备上的一个字段,所以我看不出为什么recordFields是 nil,它应该至少有一个键值。

在此处输入图像描述