问题标签 [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.
nsoperation - CloudKit:当应用程序暂停时,CKOperations 不运行
我正在收听来自 CloudKit 公共数据库的 CKSubscriptions 的远程通知。我想处理在应用程序暂停时收到通知的情况......我通过使用带有“等待启动可执行文件”选项的 Xcode 运行应用程序在我的设备上模拟这种情况。我注意到application:didReceiveRemoteNotification:fetchCompletionHandler
委托方法被正确调用,并且在此之后我排队了一个CKFetchNotificationChangesOperation
操作,但该操作从未运行。我没有得到任何notificationChangedBlock
orfetchNotificationChangesCompletionBlock
回调。如果应用程序在前台运行并且收到通知,则同样可以正常工作。
我尝试将 CKOperation 和操作队列上的 QoS 设置为,NSQualityOfServiceUserInteractive
但这似乎也无济于事。
我也在 WiFi 上尝试这个,iPhone 以 100% 的电量插入我的电脑。
我还需要研究什么才能让 CKOOperations 在后台运行吗?
swift - CK订阅错误
嗨,我正在尝试保存对 iCloud 的订阅,我正在使用此代码:
我收到此错误(仅当我使用 TestFlight 运行应用程序时):
修改部分订阅失败
我怎样才能解决这个问题?
ios - 如何使用 CKSubscription 发送多列信息
我可以使用 CKNotificationInfo() 和 CKNotificationInfo.alertBody 获得 CKSubscription 工作。所以我可以发送一条信息。我正在尝试让 CKSubscription 以字典格式向用户发送消息、用户名、位置等信息。我已经涉足 CKNotificationInfo.alertLocaliztionKey 和 CKNotificationInfo.alertLocaliztionArgs 但似乎无法使其工作。感觉就像我错过了一些小东西,因为 CKSubscription 不应该让它工作起来那么麻烦。
ios - 无法创建订阅:错误(类型 11)表示未找到记录类型,即使它存在
我正在尝试设置一个 Cloudkit 订阅,每次创建特定记录类型的新记录时都会向我发送通知。我用来设置订阅的代码如下。
它正在一台设备上运行。如果我在另一台设备上创建新记录,它会收到通知。
但相同的代码在另一台设备上运行时会返回 Type 11 错误。这个相同的设备能够创建这种类型的记录并存储它。
我完全被难住了。任何关于正在发生的事情以及如何解决它的指针将不胜感激!
此 NSLog 显示设备能够创建 DummyRecordType 类型的记录
}>
此 NSLog 显示设备无法为相同的记录类型 DummyRecordType 创建订阅
ios - 每个 iCloud 用户如何在 CloudKit 中保存用户特定的订阅?
我在公共 CloudKit 数据库中创建订阅时遇到问题。该代码在为第一个 iCloud 用户保存订阅时工作正常,但在尝试为第二个 iCloud 用户保存针对相同记录类型的稍微不同的订阅时失败。
这是保存订阅的代码(Swift 中的答案也很好):
_ckUserID
是一个CKRecordID
代表当前 iCloud 用户。
_ckdatbase
是CKDatabase
对当前 CloudKit 容器的公共数据库的引用。
当此代码在用户 A 的设备 A 上运行时,订阅保存得很好。
当此代码在用户 B 的设备 B 上运行时,订阅失败,日志中显示以下消息:
2016-04-19 11:38:42:504 MyApp [560:f03] 尝试更新用户的访问订阅时出错:<CKError 0x147830530:“部分失败”(2/1011);“修改部分订阅失败”;uuid = 98E9F99A-C4F6-4488-8087-45285A7C1DB1;容器 ID = "iCloud.com.blah.MyApp"; 部分错误:{ access-_df09e8908eeb9b9f12ebbe935e389d51 = <CKError 0x14664b4e0: "Unknown Item" (11/2003); 服务器消息 = "没有找到所需的记录类型:_sub_trigger_sub_08b399dc1448e58993a967b704a07ee0"> }>
access
记录类型有一个user
字段是对代表 iCloud 用户 ID 的 CKRecordID 的引用。
我的目标是为每个用户订阅,让应用程序知道何时从该表中添加、更新或删除特定于当前用户的记录。
为什么我不能保存来自第二个用户的第二个订阅,用于此记录类型?我什至根据用户 ID 为每个订阅提供自己的唯一 ID。
swift - CloudKit CKFetchNotificationChangesOperation 不获取从 iCloud 注销时收到的通知
我的应用有 CKSubscriptions 来记录更改。当发生更改时,会收到推送通知,并使用最后保存的 serverChangeToken 创建 CKFetchNotificationChangesOperation 以检索最新通知。
这一切都很好,除了当我从设置应用程序中注销 iCloud 时。如果我注销 iCloud,我的应用程序不会获取从我注销到我重新登录 iCloud 并重新启动我的应用程序时收到的任何通知。但是,当我检查 serverChangeToken 上的数据时,它与我退出 iCloud 之前保存的数据相同。重新启动应用程序后,我也可以收到新的通知,但我会丢失注销后收到的所有通知。
有谁知道一旦我注销 iCloud,CKSubscription 推送通知是否会以某种方式被丢弃?这没有多大意义,因为 CKFetchNotificationChangesOperation 应该根据提供的 serverChangeToken 获取所有通知。
ios - 如何在 Objective-c 中删除 cksubscription?
很抱歉,我找不到简单的英语答案,或者至少我看到的每个答案都假设我有一定数量的知识,而这些知识是不应该有的。我只需要删除一个CKSubscription
. 我该怎么做呢?所有提示和帮助将不胜感激。
cloudkit - CloudKit 订阅问题
我正在为以下订阅而苦苦挣扎:
基本上,当创建或更新新的 Player 记录时,我会记录用户的位置。
当用户 B 创建或更新他们的玩家记录并且在 10KM 内时,我希望通过推送通知用户 A。
我相信我在我的应用程序中正确设置了推送权限(例如,在创建他们的子之前提示用户确认这一点)。
没有推送到达。有任何想法吗?我是否有一些基本的 CK 误解?
ios - sharedCloudDatabase 不支持 CKQuerySubscriptions
我注意到文档提到新引入的共享 CloudKit 数据库不支持CKQuerySubscription
(在早期的 iOS 版本中,这些被称为CKSubscription
)。所以我猜这意味着当私人共享记录发生变化时无法通知用户。主要失望。有没有人遇到过这个问题?
macos - CloudKit 从 OSX 中的记录 ID 获取实际对象
我正在尝试使用 CKSubscription 订阅更改。我正在关注 Apple 的文档,该文档似乎非常笼统且不完整。 链接到 Apple 文档
我已经通过didReceiveRemoteNotification
in 方法将记录 ID 发送到我的应用程序,AppDelegate
并且我得到了我的记录 ID:使用以下代码:
如何将 CKNotification 转换为存储在 Cloudkit 中的实际对象?我是否需要执行另一次提取,或者是我只需要转换的 CKNotification 中包含的数据。