我试图将iCloud键值存储支持包含在Visual Studio 2013中的Xamarin.iOS(v4.0.30319)应用程序(Mac上的Xcode 7.2.1)中,但不断获取:
错误MT1019:您的应用程序的权利不受您的支持 当前的配置文件,无法安装在设备上 '我的iPhone 4'。请查看iOS设备日志以获取更多详细信息 信息(错误:0xe8008016)。
顺便说一句,设备上没有日志,至少xCode不会显示任何内容。
我在Xcode中使用本机目标C编写了另一个应用程序,它也支持iCloud,它运行正常。所以我做了同样的事情:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>iCloud.[my team id].[my bundle id]</string>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>iCloud.[my team id].[my bundle id]</string>
</array>
</dict>
</plist>
之后,Xamarin不想在设备上安装我的应用程序。 我更改了容器名称,从权利中删除了com.apple.developer.ubiquity-container-identifiers并将其返回(始终删除所有配置文件,重新下载到xcode,重新启动visual studio,清理解决方案,删除设备上的配置文件,卸载现有的应用程序)。 只有当我从权利中删除com.apple.developer.ubiquity-kvstore-identifier和com.apple.developer.ubiquity-container-identifiers时,Xamarin才会将应用程序安装到设备上。但显然NSUbiquitousKeyValueStore不起作用。 我的设置有什么问题?
答案 0 :(得分:1)
在设置Capabilities-&gt; Cloud“on”之后,我甚至试图从我的其他xcode项目获得权利。它生成plist,只有com.apple.developer.ubiquity-kvstore-identifier值和默认值 $(AppIdentifierPrefix)[我的包ID]。
当我几乎准备好睡觉时,app就会启动! 最终权利(没有“iCloud。”previx,没有其他密钥):
<plist version="1.0">
<dict>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>[my team id].*</string>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>iCloud.[my team id].[my bundle id]</string>
</array>
<key>com.apple.developer.icloud-container-identifiers</key>
<array>
<string>iCloud.[my team id].[my bundle id]</string>
</array>
</dict>
</plist>
诀窍就是打开myapp.mobileprovision文件并查看它的建议。
它确实有效,但NSFileManager.DefaultManager.GetUrlForUbiquityContainer(null)返回null,NSFileManager.DefaultManager.UbiquityIdentityToken也为null。所以没有办法看看iCloud是否打开:它总是保存数据甚至显示它(直到重新安装应用程序)。但是,如果iCloud在重新安装后数据仍然存在。
重要通知:NSFileManager.DefaultManager.GetUrlForUbiquityContainer(null)在DEBUG中返回null,adHoc版本返回有效的令牌和路径。
APPLE讨厌开发者!我花了3天的时间来制作云,所有这些都是因为缺乏文档,现有的已经过时了。