类型 库 修订版 版本 2024.3703 关键词 iCloud,同步,存储 平台 iOS、tvOS、macOS
iCloud 插件允许访问 Apple 的 iCloud API,并提供工具在用户的设备之间同步数据。
虽然 iCloud 是 iOS 操作系统的一部分,但用户可能没有登录他们的 iCloud 帐户,或者用户可能选择完全禁用 iCloud。因此,即使未启用 iCloud,用户也能与您的应用交互非常重要。
iCloud 提供三种不同的数据存储和共享方式
**键值存储**(KVS) 是 iCloud 最容易使用的方面,Apple 建议所有应用都应该利用其实现。本质上,它提供了将数据(值)与键(字符串)关联的功能。这些
请注意,KVS 的存储空间非常有限。您可以声明最多 1024 个键,所有值的总大小应小于 1 MB。键应少于 64 个符号(字节)。您可以选择将所有数据存储在一个键中,并使用大型数据集,或者将数据分成多个键 - 只需注意,如果一个
**iCloud 中的文档**旨在跨用户的
请注意,iCloud 中文档的存储空间限制为用户的 iCloud Drive 空间。另请注意,用户可以通过 iOS 设置屏幕手动删除特定的存储文件,因此您的应用不应假设 iCloud 存储中存在某个文件。
**CloudKit** 是 iCloud 框架的最新成员。这是一个分布式数据库,您可以在其中私有或公开地存储记录。私有记录只能由创建它们的用户访问,而公共记录在用户之间共享。本质上,CloudKit 是一个非常强大的工具,用于存储数据以及在用户之间共享数据。
请注意,CloudKit 存储空间“随用户扩展”,但一般情况下,除非有专门的大量数据库使用需求,否则您的应用不应超过免费存储限制。
要使用此插件,请在 `build.settings` 的 `plugins` 表中添加一个条目。添加后,构建服务器将在构建阶段集成该插件。
settings = { plugins = { ["plugin.iCloud"] = { publisherId = "com.coronalabs" }, }, }
使用 iCloud 需要在应用的配置文件中进行某些设置。您**不能**将通配符 App ID 与 iCloud 一起使用,因此您必须配置并使用显式 App ID(指南)。要为您的应用配置 iCloud,请按照以下基本步骤操作
登录 Apple Developer 门户,进入**会员中心**,然后导航到
在所需平台下点击**标识符**。您应该会在那里看到列出的所有应用。选择要添加 iCloud 支持的应用,然后在服务列表下方点击**编辑**。
在服务列表中,选中**iCloud**复选框。
生成
除了上述步骤之外,如果要使用 iCloud 中的文档或 CloudKit,则必须将**iCloud 容器**与应用关联,如下所示
在 Apple Developer 门户中,从上述步骤到达的同一部分,选择
在同一行中,点击**编辑**按钮。您可以在此处创建新的 iCloud 容器或将现有的 iCloud 容器与应用关联。如果您是第一次创建 iCloud 容器,请注意,您需要先创建/注册它,然后再重复此步骤以将新容器与应用和 iCloud 关联。
生成
键值存储
iCloud 中的文档
CloudKit
键值存储
iCloud 中的文档
CloudKit
CloudKit
-- This simple example counts user taps across devices and keeps a -- synchronized counter in the cloud using Key-Value Storage (KVS) local iCloud = require( "plugin.iCloud" ) -- Create text object for text readout local text = display.newText( "iCloud", display.contentCenterX, display.contentCenterY, nil, 20 ) -- Set/reset the text readout local function setText() text.text = tostring( iCloud.get( "taps" ) ) end -- KVS listener function local function listenKVS( event ) setText() end -- Set the KVS listener iCloud.setKVSListener( listenKVS ) -- Set the initial text readout setText() -- Tap listener function local function globalTap( event ) local tapCount = 1 + ( iCloud.get( "taps" ) or 0 ) iCloud.set( "taps", tapCount ) iCloud.synchronize() setText() end -- Detect taps in Runtime Runtime:addEventListener( "tap", globalTap )