iCloud已在Xcode中打开,但未与应用商店连接。如何解决?

时间:2019-02-21 18:09:48

标签: ios xcode nativescript icloud

我一直在努力获取iOS应用程序以启用iCloud。

我已遵循文档,并在Xcode的项目中使用CloudKit打开了iCloud。

但是,当我随后将应用程序从Xcode上传到App Store Connect时,iCloud不存在。它不会显示在“功能”下,并且在通过TestFlight使用该应用程序时,未启用iCloud。

我需要做些特别的事情吗?使用Xcode版本10.1 + Mac OS High Sierra 10.13。

注意:下面有很多细节。如果您想跳过细节,摘要是我遵循了直接启用iCloud的方法,但尚未显示在App Store Connect或通过TestFlight的设备上。


步骤:

我已遵循文档并尝试了一些解决方案,例如herehere

1)我用xcode打开项目。

2)在“ xcode功能”窗格中,我打开iCloud,检查CloudKit,并使用默认容器(名为“ iCloud.com。[bundle identifier]”的容器)。

3)在developer.apple.com上,我验证我正在使用的应用程序ID是否已自动启用iCloud和CloudKit(在此处显示为绿色)。

4)在developer.apple.com上,使用该应用程序ID创建一个配置文件。 iCloud在此配置文件的“已启用服务”中列出。

5)返回xcode,在“常规”窗格中,关闭“自动管理签名”并选择此配置文件。如果选择“自动管理签名”,它将使用“ iPhone Developer”帐户作为签名证书,这似乎是不正确的。当我进行手动签名并选择更新的prov配置文件时,签名证书正确显示为“ Iphone分配:[团队名称]”

6)存档应用:产品->存档。 (我在这里再次检查了“功能”窗格中仍选择了iCloud,没有错误)

7)上传应用程序:窗口->管理器->选择存档,单击分发应用程序,然后从那里获取。

结果:内部版本成功上传到App Store Connect,但是看不到iCloud支持。

我还需要做什么?

注意:

我存档应用程序时,权利文件(在AppName-> AppName-> AppName.entitlements下列出)包括以下内容:

<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.icloud-container-identifiers</key>
    <array>
        <string>iCloud.$(CFBundleIdentifier)</string>
    </array>
    <key>com.apple.developer.icloud-services</key>
    <array>
        <string>CloudKit</string>
    </array>
    <key>com.apple.developer.ubiquity-kvstore-identifier</key>
    <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
</dict>
</plist>

aps环境说“发展”。我已经尝试过以这种方式进行归档和上传,但是在App Store Connect中启用icloud并没有起作用。我还尝试过手动将其切换为“生产”并进行归档/上载-但结果在那里也相同。

-底层应用程序是用Nativescript制作的,但是我认为这对本阶段不重要,因为我是通过xcode上传的。 (我已经了解了有关Nativescript的信息。)

-当我进入cloudkit仪表板时,Container表示“正在开发中”。我还没有办法无误地更改它

2 个答案:

答案 0 :(得分:0)

这是一个很长的故事,因此,很难理解并获得整个图片,但是要根据您的评论...

似乎您以某种方式缺少控制台Cloud激活。我想您可能会混合使用开发和发行资料。

我现在建议您迁移到App Store Connect是将所有内容移至生产环境,如果尚未迁移,则更新配置文件/设置。

我引用

  

在云工具包仪表板上,每个容器都会有一个蓝色框,用于   生产的开发环境和绿箱   环境。

您可以在(蓝色)开发环境中动态创建和删除记录类型。但是,一旦部署到(绿色)生产环境,该架构将在该容器中永久存在。您无法从(绿色)生产环境中删除记录类型。

删除非常困难...

尝试这种方法,让我知道我是否当场! ;)如果没有,请不要拒绝我的投票,请发表评论,我会尽力帮助您的。

本教程是众所周知的,但是我认为这对iCloud初学者来说非常有用,请查看您是否还没有: https://www.raywenderlich.com/1000-cloudkit-tutorial-getting-started

祝你好运!

答案 1 :(得分:0)

我在这里已经找到了一个基本问题:我基本上混淆了两种不同的iCloud(或者至少两种非常不同的使用iCloud作为开发人员的方式)。

这对于许多熟悉iOS编程的大多数人来说都是显而易见的,但这是我没有掌握的关键点。

在没有这些信息的情况下,我被一些人甩开了,说iCloud只是“自动运行”,而另一些人则对需要进行配置的问题进行了深入探讨。他们俩都是对的,只是在谈论不同的事情。

因此,这是我之前没有了解的:从开发人员的角度来看,这是iCloud的两种不同用法:

1)自动备份iCloud 。这是系统范围的功能,允许用户从其设备备份数据。用户通过打开“ iCloud Backup”(设置->苹果ID-> iCloud)将其打开。开启后,设备会自动定期备份用户数据。此功能将自动从app / Documents目录中包含的应用程序中备份数据。进一步的信息here

请参阅here,以获取有关防止根据需要防止某些数据备份的详细信息。

作为应用程序开发人员,除了将需要备份的数据放入系统中的完整文件并备份到Document Director中之外,您无需执行任何其他操作。您甚至不需要通过Xcode启用iCloud(我认为-尽管其他人如果我做错了请改正我)。

加载应用程序后,这不会将数据从iCloud加载到您的应用程序中。相反,它可以保存(您的应用程序数据和用户手机上的其他数据的)备份-其主要好处是,如果用户丢失了设备,他们可以在其他设备上恢复该数据。

2)通过iCloud特定于应用程序的云存储。当然,这不会自动发生,需要进行有意义的配置。

在这里您可以像后端云解决方案一样使用iCloud。例如,您可以在创建特定数据时将特定数据发送到iCloud,然后在用户加载应用程序时将其从iCloud数据获取到应用程序中(而不是将数据本地存储在用户设备上)。

这是CloudKit出现的地方。

要启用此功能,您需要生成适当的权利文件-例如在Xcode上启用带CloudKit的iCloud,并确保应用程序ID和配置文件确认已启用CloudKit。有关更多详细信息,请参阅问题中的步骤1至7。这应该使事情“启用”。

但这只是第一步,然后您需要对事情进行“配置”。为此,您可能必须对CloudKit为您的应用程序生成的容器进行一些配置,并在应用程序中添加特定于后端流程的代码。先前答案的tutorial链接中有一些不错的信息。

感谢提供此信息的人员,包括Apple开发人员技术支持。