问题标签 [cloudkit]

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 回答
8048 浏览

ios - NSOperationQueue 的 addOperation: 操作完成,不能入队?

注意:
这只是一个概念验证。
真正的后台任务将是不断请求原始数据的“HTTP Get”并通过主线程显示;一经请求。

场景:
1)按需切换后台任务(循环)。
2) 后台任务在每次迭代时通知主线程 UI。
3) 队列中仅运行一 (1) 个块操作。

Modus Operandus
1) 使用 NSBlockOperation 来包含后台代码。
2)使用区域BOOL来切换循环;通过 IBAction。

问题
1) 编译器将 BOOL 'isRunning' 标记为链接:

在此块中强烈捕获“自我”可能会导致保留周期。


2) 在尝试添加块操作之前,我检查了队列中是否有任何操作。
但我总是收到以下错误:

-[NSOperationQueue addOperation:]:操作已完成,无法入队

除了所述的问题外,这个概念验证似乎是有效的。

问题:
1) 为什么编译器将 BOOL 'running' 标记为强行,而它只是一个缩放器?
2) 如果队列中没有找到,为什么我不能通过添加另一个 NSBlockOperation 来重用 NSOperationQueue?

以下是整个代码:

控制台输出:

0 投票
2 回答
689 浏览

ios - 是否可以找到也拥有 Apple 设备的用户联系人?

给定 iOS 通讯簿 API 或其他可能对 App Store 友好的 API,是否有可能找到也使用 iOS 的用户联系人?我能想出的唯一启发式方法是找到所有有kABPersonPhoneIPhoneLabel电话号码的联系人——但这种方法有很多误报和误报。

0 投票
5 回答
10316 浏览

ios - CloudKit - no server-side logic?

With CloudKit, you can focus on your client-side app development and let iCloud eliminate the need to write server-side application logic. CloudKit provides you with Authentication, private and public database, structured and asset storage services — all for free with very high limits.

You cannot upload any code to run on Apple's servers?

I've heard it being compared to Google App Engine and other cloud computing platforms, but without the ability to run your own code, isn't the whole thing pretty limited and not really comparable?

For example, if I want to build a news app which periodically pushes stories on topics that the user is interested, then this can't be done just using CloudKit because I would need scheduled jobs and data processing on the server.

Any thoughts?

0 投票
2 回答
2913 浏览

ios - CloudKit 用于通过 cron 作业发送推送通知?

我正在创建一个大学餐饮菜单应用程序,我需要在其中发送基于每日菜单的推送通知。最初,我计划通过 Heroku 将用户数据存储在数据库中,并使用 cron 作业将数据库中的数据与每日菜单进行比较,并向用户发送适当的通知。

然而,在关于 Cloudkit 的消息之后,我认为我可以使用它来管理我的代码中与服务器相关的部分。但是,经过仔细检查,Cloudkit 似乎目前能够存储数据,但不允许我们编写服务器端代码。

我想知道我是否正确解释了这个限制,或者事实上我是否可以在 CloudKit 上安排一个数据库,每天将其数据与在线菜单进行比较并发送适当的推送通知。

0 投票
2 回答
756 浏览

ios - 从 Mac 访问 CloudKit 数据库?

我想尝试使用 CloudKit 从 iOS 应用程序访问我的数据。理想情况下,我想从我的 iOS 应用程序中使用这些数据,但要从 Mac 应用程序中生成并保存它。

有没有人看到任何暗示能够从 Mac OS 访问 CloudKit 数据库的东西,或者这是一个仅限 iOS 的框架?

0 投票
2 回答
2497 浏览

ios - CloudKit Dashboard 权限不足

我无法访问 CloudKit 仪表板https://icloud.developer.apple.com/dashboard/。我不断收到Insufficient privileges You Apple ID does not have the required privileges to access any iCloud Container. Please contact your team administrator for the necessary privileges.错误即使我是唯一的团队成员,我也会收到此错误。关于如何解决这个问题的任何想法?

0 投票
2 回答
469 浏览

eventual-consistency - CloudKit 是强一致还是最终一致?

官方文档是否在某处谈论 CloudKit 一致性?根据我的测试,它似乎最终是一致的——在写入后立即读取记录可能有效,也可能无效(返回空结果):

有没有办法强制进行反映所有先前更新的强一致读取?

0 投票
1 回答
1071 浏览

ios - 在测试中运行 CloudKit 代码?

我想使用 XCTest 框架为我的 CloudKit 代码编写自动化测试。测试用例运行,得到一个有效的容器对象,得到一个有效的公共数据库对象,但是当我尝试做任何真实的事情时,它会因异常而死:

到目前为止我已经尝试过:

  • 我已经检查了Info.plist我的测试目标,并且那里的包 ID 对应于容器 ID。
  • 我已经调整[[NSBundle mainBundle] bundleIdentifier]以确保它返回正确的捆绑 ID。
  • 我已经从我的主应用程序的目标中复制了 iCloud 权利。

但我仍然得到例外。有没有办法让 CloudKit 代码在测试中运行?

0 投票
2 回答
4110 浏览

ios - CloudKit 计数记录

我有一个可能有很多记录的“表”,在添加新记录时,我需要知道当前表中已经有多少记录,因为我在计算某些值时使用它。我能找到的最接近的事情是请求所有这样的条目:

我希望 queryCompletionBlock 与 CKQueryCursor 一起提供计数或结果数组,但不幸的是它没有。

还有其他方法可以计算表中的行数吗?

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

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

就这样