IOS 8 App Group 访问键盘扩展中的容器应用程序文件
Posted
技术标签:
【中文标题】IOS 8 App Group 访问键盘扩展中的容器应用程序文件【英文标题】:IOS 8 App Group access container app file in Keyboard extension 【发布时间】:2014-08-22 15:01:03 【问题描述】:我想通过应用组功能访问自定义键盘扩展中的容器应用文件。为此,我在 Apple 门户上创建了组 ID,并将其添加到我的两个目标(键盘和应用)中
我已通过NSUserDefaults
成功访问数据,它工作正常,我可以访问数据。但我坚持从容器应用程序获取文件
我有访问网址
NSURL *containerURL = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:@"group.com.company.app"];
NSURL 按以下方式返回 URL。
/Users/AxisCyberTech1/Library/Developer/CoreSimulator/Devices/1649BBF4-6615-4E53-BFC9-A3D07F3CA70A/data/Containers/Shared/AppGroup/49A4F24B-30A8-474E-8FFA-072E0DF61CBD/
但此路径无法访问 Container 源包中的任何文件。 如何访问容器源文件
【问题讨论】:
【参考方案1】:键盘扩展还有另一个限制。您应该在 Info.plist 中将 RequestsOpenAccess 设置为 YES,然后它才能访问文件。
https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html#//apple_ref/doc/uid/TP40014214-CH16-SW2
【讨论】:
【参考方案2】:要访问包含的应用程序包是沙盒的,不允许从外部应用程序访问。调用[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_ID]
获取App Group Shared container的URL。
请注意,使用 NSFileCoordinator
内部扩展访问包含应用程序共享容器可能会导致死锁。见this documentation
【讨论】:
以上是关于IOS 8 App Group 访问键盘扩展中的容器应用程序文件的主要内容,如果未能解决你的问题,请参考以下文章
带有 App Group 的 NSUserDefault 在 iOS 8 Beta3 中不起作用