【问题标题】:Cannot save file to App Groups on iOS 8无法在 iOS 8 上将文件保存到应用程序组
【发布时间】:2014-09-22 12:07:20
【问题描述】:

我尝试使用- (NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier 在 iOS 8 b4 上的容器应用和扩展程序之间保存/加载文件。

代码如下:

NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID];
containerURL = [containerURL URLByAppendingPathComponent:[NSString stringWithFormat:@"Library/Caches/test.txt"]];
NSString* string = @"hihihihihi";
NSError* error;
[string writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",error);

我将此代码放在扩展程序(自定义键盘)和容器应用程序中。 当我在 iOS Simulator 上运行它时,它们都可以成功保存文件。但是在 iOS 设备上,扩展程序无法保存文件(而容器应用程序仍然可以)

扩展程序尝试保存文件时,控制台显示可可错误 513。

2014-07-31 01:37:49.316 TestExtention[2359:288820] 错误域=NSCocoaErrorDomain 代码=513“操作无法完成。(Cocoa 错误 513。)”UserInfo=0x15df2100 {NSFilePath=/private /var/mobile/Containers/Shared/AppGroup/4FA2DA5E-89C3-4BC3-AA5B-DD869827C5E7/Library/Caches/test.txt, NSUnderlyingError=0x15df1d90 "无法完成操作。不允许操作"}

这是 iOS 8 扩展的限制吗?

【问题讨论】:

    标签: objective-c iphone sandbox ios8 ios-app-group


    【解决方案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

    【讨论】:

    • 我将 requestOpenAccess 设置为 YES,但在模拟器上工作时它不能在真实设备上工作
    【解决方案2】:

    包含的应用程序和扩展程序都可以访问同一共享组容器下的文件,前提是它们具有相同组 ID。

    在您包含的应用程序和扩展程序中,检查它是否存在于它的 .entitlements 中。

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


    然后检查他们的 Provisioning Profile 是否有这个组 ID。

    【讨论】:

    • 我检查了containerURL ,它们在Container App和Extension中都是一样的。当然,组 ID 也是相同的。但是我如何检查配置文件有这个组 ID?我用文本编辑器打开 .mobileprovision ,发现文件中有我的组 ID。它在 iOS 模拟器中完美运行,这就是我感到困惑的原因。
    • 在 APPLE 上:developer.apple.com/account/ios/identifiers/bundle/… 标识符 > 应用程序 ID > 编辑
    • 组 ID 在 App ID 中设置,然后由您的个人资料使用
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多