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修复了这个问题。