我已经设置了CKSubscription*,以便我收到记录类型的更改.
我正在使用公共数据库.
当我使用相同的用户(相同的iCloud帐户)进行测试时,我会收到通知.
如果我使用其他用户(不同的iCloud帐户),我不会收到通知.
订阅是否仅适用于同一用户的设备之间?
以下是描述订阅的文档:
使用CKSubscription对象来跟踪服务器上发生的更改.订阅的作用类似于服务器上的持久查询,可以跟踪记录的创建,删除和修改.发生更改时,它们会触发推送通知的传递,以便您的应用可以正确响应.
无论哪个用户编辑记录,我都希望收到通知,并且订阅谓词仍应匹配.
UPDATE
*每个用户都有一个具有相同谓词的订阅,主要关注具有特定属性值的单个recordType.
此订阅的有效负载仅用于推送shouldSendContentAvailable = YES.
文件内容如下:
当此属性为YES时,服务器在推送通知的有效负载中包含content-available标志.该标志会导致系统唤醒或启动当前未运行的应用程序.然后,应用程序将获得后台执行时间,以下载与推送通知相关的任何数据,例如更改的记录集.如果应用程序已在前台运行,则包含此标志不会产生额外影响,并且通知将传递给应用程序代理以便照常处理.
recordType的安全权限是:
进一步更新
检查设备未接收推送的日志,并且看到:
apsd[85]: Silent Push: Deny app not available
Run Code Online (Sandbox Code Playgroud)
重启设备,现在工作正常!
此行为是由于我的 CKSubscription 配置方式错误造成的。如果我们希望所有用户都收到来自订阅的通知,那么它不应该设置 zoneID(应该保持为零)。我将 zoneID 设置为 defaultRecordZone 中的值,这将仅将通知限制为当前用户,因为 defaultRecordZone 的用户是当前用户。
更新
终于解决了问题。不仅是zoneID的问题,而且似乎还有一个bug。我的订阅 notificationInfo 只是将 shouldSendContentAvailable 设置为 YES。这不会导致当前用户(u1d1->u1d2,但不是 u1d1>u2d2)以外的任何人所做的更改触发订阅通知。我只是添加了一个alertBody,然后通知就开始触发。
还有其他人面临这个问题吗?
更新2
重新启动设备解决了该问题。
归档时间: |
|
查看次数: |
2042 次 |
最近记录: |