Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iCloud权利被拒绝_Ios_Core Data_Ios5_Icloud_Entitlements - Fatal编程技术网

Ios iCloud权利被拒绝

Ios iCloud权利被拒绝,ios,core-data,ios5,icloud,entitlements,Ios,Core Data,Ios5,Icloud,Entitlements,我已经在我的(现有)应用程序上工作了一段时间,以添加对iCloud同步的支持。我总共有3个版本的应用程序: a) 常规iPhone版本 b) lite(免费)iPhone版本 c) iPad版 我想使用iCloud使所有3个版本/设备之间的核心数据存储同步。我已经实现了,我在我的设备上安装的开发版本工作得很好 昨天我决定提交iPhone版本,但遭到拒绝: 无效的代码签名权限-应用程序捆绑包的签名包含不受支持的权限值。对于com.apple.developer.ubiquity-container

我已经在我的(现有)应用程序上工作了一段时间,以添加对iCloud同步的支持。我总共有3个版本的应用程序:

a) 常规iPhone版本
b) lite(免费)iPhone版本
c) iPad版

我想使用iCloud使所有3个版本/设备之间的核心数据存储同步。我已经实现了,我在我的设备上安装的开发版本工作得很好

昨天我决定提交iPhone版本,但遭到拒绝:

无效的代码签名权限-应用程序捆绑包的签名包含不受支持的权限值。对于com.apple.developer.ubiquity-container-identifiers权限,数组中的第一个值必须由apple在配置配置文件中提供的前缀和捆绑标识符后缀组成。捆绑包标识符必须与您的一个应用程序或允许您用作iCloud容器标识符的另一个应用程序的捆绑包标识符相匹配

具体而言,[my app]中的键“com.apple.developer.ubiquity容器标识符”不支持值“[teamid].com.[my].[somename]”

我真的不知道这些标识符应该是什么样子。在这个页面上:他们说了一些关于我其他应用程序容器的事情。。。我是否必须为我的3个应用程序版本添加3个容器?到目前为止,我在项目/目标/摘要/权利下进行了配置:

[x] iCloud键值存储:com。[我自己][somename]
iCloud容器:com。[我自己][somename]


对于所有3个版本(相同的标识符)。我必须准确配置什么,以便所有3个版本都能通过iCloud同步其核心数据存储数据库?

您需要创建3个单独的启用iCloud的临时配置文件。运行相同版本应用程序的设备可以在同一iCloud容器上共享数据。但是,如果您希望任何设备运行这三个版本的应用程序中的任何一个来共享数据,那么您需要在每个版本的“权利”部分添加这些标识符

有很好的关于iCloud的教程

编辑:

我为您的案例添加了一张示例图片。此外,以下文字摘自该网站上的教程:

在这里,我们使用一种您还没有见过的新方法,称为URLForUbiquityContainerIdentifier。此方法允许您传入容器标识符(就像前面在iCloud容器部分中设置的那样),它将返回一个URL,用于访问iCloud存储中的文件


您需要在启动时为每个要访问的容器调用此函数,以授予应用程序访问URL的权限。如果将nil传递给该方法(就像我们在这里所做的那样),它将自动返回为项目设置的第一个iCloud容器。因为我们只有一个容器,这使得它变得很好和简单。

您现在可能已经解决了这个问题,但答案是您在所有应用中都使用相同的通用容器标识符。您只需要一个,并且它不依赖于应用程序名称:请注意,Apple告诉您使用“[teamid].com.[Illy].[somename]”而不是“[teamid].com.[Illy].[appname]”。使用应用程序之间一致的“某个名称”,而不是“应用程序名称”。

根据,共享iCloud容器的所有应用程序都可以使用单个iCloud容器(如果您愿意的话)。这里需要注意的是,主(第一个)容器ID必须是正在开发的当前应用的Bundle ID,或者是任何先前提交的应用的Bundle ID(共享相同的团队ID)

我举个例子

假设您的应用程序常规iPhone应用程序(a)有一个Bundle IDcom.yourteam.iphoneapp,它是您首先提交的,并且在应用商店中可用。然后,您还必须为所有其他版本提供与主iCloud容器ID相同的ID

以下是上述文件的相关部分:

在Xcode目标编辑器的摘要选项卡中,您可以请求访问as 根据您的应用程序的需要,提供许多无处不在的容器。比如说 您提供了应用程序的免费和付费版本。你想要的用户是谁 升级,以保留对其iCloud文档的访问权限。或者,也许是你 提供两个互操作且需要访问彼此的应用程序 文件夹。在这两个示例中,您都可以通过 指定通用的ubiquity容器,然后请求访问 它可以从每个应用程序中删除

  • 选择一个支持iCloud的应用程序作为通用ubiquity容器的主应用程序。您选择的应用程序可以是当前应用程序 您正在开发的应用程序,或您提交的其他应用程序 应用商店中的分发,其权限使用同一团队 身份证

  • 恐怕我还是不明白。我有3个单独的配置文件,都是为他们自己的应用程序id而设置的,该应用程序id已启用iCloud。我必须把什么作为键值存储?设置门户中相应版本的XXXXXXXX.com.imf.appname字符串?或者只是教程中显示的com.imf.appname?集装箱呢?com.imf.appname是其他版本的吗?(总共3个)我想知道我们如何能够同步我的开发版本。我基本上和图坦卡蒙一样,在所有版本中。谢谢,它现在变得更清晰了。您在图片中输入的密钥必须与我的应用程序的捆绑标识相对应,或者这可以是任意名称吗?另外,如何确保核心数据存储同步?我需要将一个容器密钥传递给NSPersistentStoreCoordinator选项。这是3个版本的3个不同选项,还是将相同的容器id传递给所有3个NSPersistentStoreCoordinator(iphone/lite/ipad)?我的意思是,这3个容器是否会自动同步,还是我必须选择1个容器在这3个设备之间共享?我确信iCloud不会跨容器自动同步,即使是从t