8

我无法在 iOS 8 扩展程序和容器应用程序之间共享数据。我从开发门户和 Xcode 建立了组,我的权利 plist 看起来都像:

<dict>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>my group id</string>
    </array>
</dict>

苹果文档中建议使用的解决方案[[NSUserDefaults standardUserDefaults]

对我不起作用。

我已经尝试了@Santa Claus 在这篇文章中使用应用程序组在应用程序之间通信和持久化数据以使用的解决方案

[[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"];

圣诞老人的解决方案适用于模拟器,但不适用于我的 iPhone 4s,关于如何使其在真实设备上运行的任何想法?还是我错过了什么?

一些更新:

[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group id"];

函数返回 url,来自容器应用程序和扩展的两个 url 看起来相同,为 " path /private/var/mobile/Containers/Shared/AppGroup/3DFB9750-A9F3-4C37-BC3C-0D5BF746B‌​233"。我从容器应用程序在该文件夹中创建了一个 json 文件,但是当我在设备上运行时,扩展程序在该文件夹中找不到任何文件。但是在模拟器中它发现它很好并且一切正常。

4

3 回答 3

20

我的解决方案是编辑自定义键盘的 Info.plist:

NSExtension -> NSExtensionAttributes -> RequestsOpenAccess

让它是的。

然后删除设备中的键盘并重新添加。在您的键盘添加页面中,您将找到一个名为“允许完全访问”的设置,启用它,键盘将访问共享数据。

于 2014-07-03T06:35:16.007 回答
2

对于键盘扩展,确保启用 RequestsOpenAccess 作为 heheBear 的答案
,并尝试从设置/键盘中删除并添加回键盘偶尔
键盘扩展不稳定,性能非常糟糕,因为 beta 4,包括 beta 5

于 2014-09-07T07:46:16.050 回答
1

该问题仅发生在自定义键盘上,iOS8 beta 2 修复了该问题。

于 2014-06-18T23:04:43.397 回答