ios8扩展和容器应用程序如何共享数据
我无法在iOS 8扩展程序和容器应用程序之间共享数据。 我从开发门户和Xcode设置了组,我的权利plist看起来像:
<dict> <key>com.apple.security.application-groups</key> <array> <string>my group id</string> </array> </dict>
在苹果文档build议的解决scheme使用[[NSUserDefaults standardUserDefaults]
不适合我
我已经从这篇文章中尝试了@Santa Claus的解决scheme在应用程序与应用程序组之间进行通信和持久化数据以供使用
[[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"];
圣诞老人的解决scheme在模拟器上工作,但不是在我的iPhone 4s上,关于如何使其在真实设备上工作的任何想法? 还是我错过了什么?
一些更新:
[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group id"];
函数返回url,而来自容器应用程序和扩展名的这两个url看起来相同,如“ path / private / var / mobile / Containers / Shared / AppGroup / 3DFB9750-A9F3-4C37-BC3C-0D5BF746B 233” 。 我从容器应用程序在该文件夹内创build了一个json文件,但扩展名在设备上运行时找不到文件夹中的任何文件。 但在模拟器中,它发现它很好,一切正常。
我的解决scheme是编辑我的自定义键盘的Info.plist:
NSExtension – > NSExtensionAttributes – > RequestsOpenAccess
使它成为。
然后删除设备中的键盘并重新添加。 在你的键盘添加页面,你会发现一个名为“允许完全访问”的设置,启用它,键盘将访问共享数据。
对于键盘扩展,请确保启用RequestsOpenAccess作为heheBear的答案
并尝试偶尔从设置/键盘上删除和添加键盘
键盘扩展不稳定,性能是非常糟糕,因为testing版4,包括testing版5
这个问题只发生在自定义键盘上,iOS8 beta 2修复了这个问题。