问题标签 [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 回答
107 浏览

ios - 当用户未登录 iCloud 时,我可以使用 CloudKit 在我的应用程序中使用订阅吗?

好奇如果用户未登录是否可以阻止使用订阅通知?

0 投票
2 回答
986 浏览

ios - CKReference 的 CloudKit 订阅通知未按预期工作

我正在尝试为包含用户的 CKReference 字段的记录设置 CKSubscription。但是无论何时创建记录,它都会忽略复合谓词的这一部分,并且永远不会收到通知。在 CKSubscription 的谓词中使用 CKReference 有什么不同吗?我进入仪表板以在我自己的用户 recordID 下输入新记录(在模拟器中运行另一个用户时),因为我相信我读到如果记录来自设备,它将不会收到通知。非常感谢任何见解,因为我已经坚持了一周并且无法在网上找到任何特定于此的内容。我能够获得真实类型的谓词通知,所以我认为我的基本设置还可以。

在仪表板中,我看到两个测试用户都有一个通用订阅,但没有看到任何一个用户的任何特定记录 ID(这有关系吗?):

当我执行 fetchAllSubscriptionsWithCompletionHandler 方法时,它会在调试器中将当前用户对此设备的特定记录 ID 显示为 CKReference。所以我不知道为什么它不起作用。

这是我的代码,我首先创建 CKReference,然后将其用于我的谓词:

0 投票
1 回答
191 浏览

ios - CloudKit 和 CKSubscriptions

我正在解决一个关于 CloudKit 和 Apple 通过 CKSubscriptions 提供的推送通知的非常奇怪的问题。

首先,一切正常,我能够收到 CKNotification,它工作了几天,直到我对开发模式进行了一些更改,我只是添加了一个新字段,没有别的,没有什么奇怪的。

从那一刻起,我无法收到 CKNotifications。我确信我没有对代码犯任何错误,因为我没有更改它。我只在 Cloud Dashboard 的架构中添加了一个新字段。

我是唯一一个解决这个问题的人吗?你知道修复是否存在吗?

谢谢。

更新:如果字段“list”是 CKReference,如果设置了 DeleteSelf 操作,则不会触发通知,如果操作为 None,则触发通知。顺便说一句,我需要 DeleteSelf。

0 投票
2 回答
146 浏览

ios - CloudKit 修改现有的 CKSubscription

已保存到 publicDatabase 的现有 CKSubscription 不能直接修改,可以吗?

查看类文档,只能将其删除,然后可以创建具有新行为的新 CKSubscription。

它是否正确 ?

谢谢

0 投票
1 回答
603 浏览

ios - 努力理解 CloudKit 中的 CKSubscriptions

几周以来,我一直在阅读并尝试使用 CKSubscription 功能,但我找不到有关一些一般问题的信息。我已经阅读了 Apple 文档、在线教程、我购买的书籍以及关于 SO 的问题,但我仍然不了解我认为的基本原理。很感谢任何形式的帮助。

以下是我找不到答案的问题:

1)。订阅 ID 的用途是什么?便利的init不包含它,那为什么在指定的init中需要它呢?如果你使用它,它对应用程序的所有用户都是一样的吗?

2)。我在这里看到有人提到您可以取消注册订阅 ID。为什么或如何做到这一点?

3)。可以在公共或用户的私人数据库中设置订阅吗?

4)。如果我有一个对所有用户都相同的基于查询的订阅,那么数据库中是否只会列出 1 个订阅?

例如,我无法让通知与我的特定用例一​​起工作。这在我的设置中不是问题,因为我可以让 True 谓词起作用并且通知来了。所以我一定不明白订阅如何运作的基本原理。

我正在尝试设置一个订阅,该订阅会在其他用户对帖子发表评论时在创建新记录时触发。然后,此新记录将包含对创建帖子的用户的引用。我在数据库中看到的两个用户的唯一订阅是 - Notifications.user(等于参考)。所以,我假设我只会看到这个订阅。(?)但是服务器如何跟踪每个用户的记录 ID 或知道何时将其发送到特定设备?

问题是我无法让通知工作。我在仪表板中手动添加了一条记录,并将其他用户的记录 ID 作为 CKReference。当我添加记录时,我让应用程序在后台运行在用户帐户下的设备上,我将其添加为字段中的 CKReference。我希望查询能够触发并发送推送通知,因为有人对此用户的帖子发表了评论。

这是我设置订阅的代码:

0 投票
1 回答
1655 浏览

ios8 - 云套件。订阅问题

我不太了解有关订阅的信息。我有私人数据库。有一个我创建订阅的表。如果我在一个 iCloud 帐户下订阅两台设备,则会出现错误:订阅错误:

CKError 0x165c6ac0:“服务器拒绝请求”(15/2032);服务器消息 = "订阅与 'C6051A24-2DB5-47EA-98D2-7D8786AA6D3B' 重复"; uuid = 48AC7472-006A-4FD7-84A9-DB342C83C199;容器 ID = "iCloud.com.*.*"

也许我做错了什么?我需要做什么才能让两台设备都收到订阅通知?

编辑

还。我只创建一个订阅。如果我使用 fetchAllSubscriptionsWithCompletionhandler 方法,我会看到每个表有 3-4 个订阅。但这很奇怪,因为我只创建了一个。当我收到通知时,我看到的通知超出了应有的数量。

0 投票
1 回答
726 浏览

ios - 私有数据库中的 CloudKit 订阅

我有一个应用程序,我想为其添加使用 CloudKit 将数据备份到 iCloud 的可能性。“备份”部分似乎工作正常(我的记录在私人数据库中,因为它们是......好吧,私人的)。

现在我想使用 CKSubscriptions 让我的所有设备与相同的数据保持同步。我尝试实现一个 CKSubscription 来监控基于查询(而不是基于区域)的记录创建/更新/删除。

直到现在,我还无法触发我的设备的通知。

我知道您可以创建基于区域的订阅。区域在私有数据库中,所以我想 CKSubscriptions 可以在私有数据库中工作。但我不想实现区域(否则我不需要)。

问题:基于查询的私有数据库中的 CKSubscriptions 是否存在问题?

0 投票
1 回答
333 浏览

ios - CloudKit:查询订阅请求

我正在使用 CloudKit 在应用程序中工作,并且正在创建对 CloudKit 的订阅。这是我的代码:

我的问题给你们。如何查询或验证用户对 CloudKit 的订阅?

0 投票
1 回答
696 浏览

ios - CK订阅不起作用

我正在CKSubscriptions我的 App Delegate 的didFinishLaunchingWithOptions方法中创建我的两个。

这些已成功创建,因为当我注销时NSError,它返回 null 并且每次我打开应用程序时,它都能正确获取它们。但是,当在一台设备(例如 iPhone)上创建或删除记录时,通知不会在另一台设备(例如 Mac)上触发(或未正确接收)。这就是我在 Mac 上收听通知的方式。

不幸的是,这NSLog永远不会触发。

0 投票
1 回答
766 浏览

ios - 记录更新的 CloudKit 推送通知停止工作

编辑:今天 27.08.2015 重新测试,它再次工作,Apple 已修复它。

我有一个处于开发模式的应用程序。该应用程序使用 CKSubscription 来获取服务器上更改的通知,并针对所有三个选项进行了配置:创建、更新、删除。一切正常,但最近在回归测试期间,我发现应用程序没有收到有关记录更新的通知,创建和删除通知仍在工作。当我在仪表板上检查时,所有三个选项的订阅类型都已正确设置,并且应用程序已为 CKSubscription 注册,就像几天前它像魅力一样工作时。我没有从 CloudKit 收到任何错误。开发环境的重置没有帮助。我已经使用我确信它可以正常工作并得到相同结果的版本进行了重新测试。

知道可能导致此问题的原因,我还应该检查/尝试什么?

附加信息: 我猜服务器端可能会出现问题。我没有更改订阅 CloudKit 事件和处理推送通知的代码中的任何内容 - 无论如何,它正在工作的版本也不再收到更新通知。我正在处理的应用程序已发布,因此无法更改容器。不确定这是否会导致问题,只想提一下:应用程序使用相同的容器将核心数据存储在云中 - 应用程序升级的目标是将数据迁移到 CloudKit 并将其用作云专门存储。令人困惑的是,几周以来一切正常,然后突然停止工作,没有任何明确的原因,可能是由于密集测试负载的影响,添加了记录类型......

使用从头开发的应用程序进行测试: 我编写了一个简单的测试应用程序来检查接收通知。我只能收到有关记录创建的通知。我的代码有什么问题:

}