Ios 使用应用程序组进行数据共享可以在模拟器上工作,但不能在设备上工作

Ios 使用应用程序组进行数据共享可以在模拟器上工作,但不能在设备上工作,ios,swift,appgroups,Ios,Swift,Appgroups,我开发了一个单页应用程序和一个键盘扩展,我想将数据从我的键盘扩展发送到我的应用程序。我创建了一个应用程序组,并将其添加到两个目标中;授权文件位于每个目标文件夹下 在模拟器中工作良好;但是当我在我的设备上运行它时,我无法访问扩展保存的数据。有趣的是,我可以访问应用程序保存的扩展数据 在模拟器上运行我的应用程序和扩展时,我没有收到任何警告/错误,但在设备上运行时,我在将数据写入共享容器时收到以下警告: 2020-11-05 12:19:14.542150-0600 TestKeyboard[2887

我开发了一个单页应用程序和一个键盘扩展,我想将数据从我的键盘扩展发送到我的应用程序。我创建了一个应用程序组,并将其添加到两个目标中;授权文件位于每个目标文件夹下

在模拟器中工作良好;但是当我在我的设备上运行它时,我无法访问扩展保存的数据。有趣的是,我可以访问应用程序保存的扩展数据

在模拟器上运行我的应用程序和扩展时,我没有收到任何警告/错误,但在设备上运行时,我在将数据写入共享容器时收到以下警告:

2020-11-05 12:19:14.542150-0600 TestKeyboard[2887:46080] [User Defaults] Couldn't write values for keys (
    "test_key2"
) in CFPrefsPlistSource<0x282052000> (Domain: DOMAIN_NAME, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-11-05 12:19:14.542150-0600测试键盘[2887:46080][用户默认值]无法为键写入值(
“测试密钥2”
)在CFPrefsPlistSource中(域:Domain_NAME,用户:kCFPreferencesCurrentUser,按主机:否,容器:(null),内容需要刷新:否):在应用程序容器外部设置首选项需要用户首选项写入或文件写入数据沙盒访问
在其他论坛中,我看到有时会出现这些消息,但这些值仍然存储在共享容器中,但我的情况并非如此

不确定这些信息是否有用,但我没有苹果开发者付费订阅

我在iPhone8 Plus,iOS13.6上运行这段代码。XCode版本12.1


谢谢。

正如@EmilioPelaez所指出的,键盘扩展需要完全访问权限,这样应用程序组才能工作。它在模拟器中工作,因为模拟器中的键盘扩展总是被授予完全访问权限


要授予对键盘扩展的完全访问权限,请在NSExtension->NSExtensionAttributes扩展的plist中将RequestsFullAccess设置为True。

您是否将键盘扩展配置为具有完全访问权限?您好@EmilioPelaez,我不确定这是什么意思。完全访问什么?你介意让我知道我该怎么做吗?键盘扩展需要特殊的访问权限来完成一些事情,如网络请求和将内容写入磁盘。我还没有做一个,所以我不能给你更多的信息,但这个链接应该是一个很好的开始。谢谢@EmilioPelaez,我会调查的。祝你一切顺利。@EmilioPelaez你是对的;它起作用了!非常感谢你的帮助。