bar*_*oon 32 objective-c nsuserdefaults ios8 ios-app-group
有时,但并非总是(我已经有一点工作),app/extension处于一种状态,我无法读取我的应用程序组在我的随播应用程序和我的应用程序扩展之间设置的标志.不知道它是如何处于这种状态或为什么值不同,但它对我的应用程序至关重要,它们始终是同步的.
Companion app viewDidLoad:
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
.....
[myAppSettings setBool:true forKey:@"myBool"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");
Run Code Online (Sandbox Code Playgroud)
应用扩展程序viewDidLoad
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");
Run Code Online (Sandbox Code Playgroud)
控制台输出
Companion app - bool TRUE
App extension - bool FALSE
Run Code Online (Sandbox Code Playgroud)
我也会在我的同伴应用程序进入后台之前进行同步.我在门户网站等设置了我的应用程序组
我究竟做错了什么?
编辑
显然其他人也有这个问题:https: //devforums.apple.com/message/977151#977151
"我认为这目前非常糟糕.
有时数据共享起作用,然后进行更改,并且窗口小部件突然无法再看到共享数据(在模拟器和设备上).
烦人并希望它在下一个测试版中更加可靠!"
编辑2 看起来另一个人也报告了这个问题:
"我也注意到了同样的事情.这不仅发生在NSUserDefaults上,而且发生在容器文件夹中的所有文件中.使用键盘一段时间后,键盘扩展突然失去对容器文件夹的读/写权限."
编辑3 更多证据:https://devforums.apple.com/message/1028078#1028078
升级到beta 3后,我注意到有时键盘无法打开数据库,因为它无法访问数据库文件.键盘之前已能够访问该文件.

编辑4
似乎这可能是因为键盘失去了RequestsOpenAccess旗帜.但我无法重现它,我无法确定.
编辑5
似乎其他人在iOS8 GM版本中报告此情况:
这个问题在全球机制中仍然存在.它似乎与键盘崩溃有关..但是在键盘和包含应用程序之间似乎存在一些争用,因为谁以什么顺序创建套件.我认为这个问题在苹果公司的最后.相信我,我希望它是我的错,但我花了无数个小时进行反复试验.无论我在代码中执行什么操作并使用NSLog进行验证,它最终都会处于此状态.希望有人找到一个神奇的药丸.:S
有人解决了这个吗?
您必须请求开放访问才能访问共享的NSUserDefaults. 应用程序扩展编程指南中直接说明了这一点:
默认情况下,键盘没有网络访问权限,并且无法与其包含的应用程序共享容器。要启用这些功能,请将 Info.plist 文件中的 RequestsOpenAccess 布尔键的值设置为 YES。
请务必将该RequestsOpenAccess字段更改为YES。您可以在键盘的 Info.plist > NSExtension > NSExtensionAttributes > RequestOpenAccess 中找到它。然后在“设置”中删除键盘,删除应用程序,再次运行它,然后再次添加键盘。添加后,点击键盘名称,然后翻转开关以启用“允许完全访问”。您需要指示用户遵循相同的步骤来授予访问权限(并向他们保证您不是邪恶的),否则它根本不起作用,您将永远无法获取存储在共享容器中的数据。请注意,在 iOS 8.3+ 中,如果用户未启用完全访问,键盘将能够访问共享容器,但出于安全和隐私目的,写入内容不会保存数据。在 8.2 中,如果没有授予开放访问权限,您将无法访问该数据。
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |