我试图将iCloud键值存储支持包括到Visual Studio 2013(在Mac上为Xcode 7.2.1)的Xamarin.iOS(v4.0.30319)应用程序中,但不断得到:
错误MT1019:您的应用程序具有您的权利不支持的权利
当前的配置文件,无法安装在设备上
“我的iPhone 4”。请检查iOS设备日志以了解更多详细信息
信息(错误:0xe8008016)。
顺便说一下,设备上没有日志,至少xCode不会显示任何日志。
我有另一个用Xcode的本机目标C编写的应用程序,它还具有iCloud支持,并且可以正常运行。所以我做了同样的事情:
在名称为“ iCloud。[我的团队ID]。[我的捆绑包ID]”的developer.apple.com上创建了iCloud容器(我使用了确切的值,没有宏)
在developer.apple.com上为[我的捆绑包ID]创建了应用程序ID,并为容器“ iCloud。[我的团队ID]。[我的捆绑包ID]”启用了iCloud。
创建了开发配置文件
在Xcode中安装了它。
在“ iOS捆绑签名”的Visual Studio中选择了它
编辑的权利,如here所示:
<?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不起作用。
我的设置有什么问题?
最佳答案
将Capabilities-> Cloud设置为“ on”后,我什至试图从我的其他xcode项目中获取权利。它仅使用com.apple.developer.ubiquity-kvstore-identifier值和默认值生成plist
$(AppIdentifierPrefix)[我的捆绑包ID]。
当我几乎准备入睡时,会启动应用程序!
最终权利(无“ iCloud”前缀,无其他键):
<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天的时间使云工作,所有这些都是由于缺少文档,现有的已经过时了。
关于c# - Xamarin.iOS iCloud访问iCloud键值存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37887984/