微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS:在设备上拒绝访问由扩展程序共享的文件

如何解决iOS:在设备上拒绝访问由扩展程序共享的文件

我的目标是创建一个 iOS 共享扩展(通过 Xamarin),使用户能够通过我的应用程序通过 iOS 共享菜单将音频或视频文件上传到我的后端。工作流程如下:

我已经通过立即从扩展中打开 Dynamic Link 来实现这一点。该链接包含文件的路径,因此主应用程序知道要上传什么文件。这是检索文件路径的代码

private async Task<string> GetFileUrlAsync()
{
    var attachment = ExtensionContext
        .InputItems
        .Where(x => x.Attachments != null)
        .SelectMany(x => x.Attachments)
        .First();
        
    var nsUrl = (NSUrl) await attachment.LoadItemAsync(UTType.FileURL,null);
    return nsUrl.Path;
}

在模拟器上,使用以下路径上传效果很好:

/Users/tobiasbuchholz/Library/Developer/CoreSimulator/Devices/4FE06C03-50D2-4613-892B-5A2EA611D26A/data/Containers/Shared/AppGroup/834E4479-1A30-474B-B3EA-1840D14BE4DC/File Provider Storage/sample.mp3

另一方面,在设备上,我收到了以下消息的异常:

System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Containers/Shared/AppGroup/A4F8EE6A-A229-4869-81AE-36FE96F9B5FA/File Provider Storage/ABLAZE/sample.mp3" is denied.

最后,我的问题是:有没有办法绕过设备上的这个错误?就像我缺少的 Info.plist 设置或类似的东西。或者我是否需要创建一个应用程序组,通过我的扩展程序将文件复制到这个位置并从那里在主应用程序中访问它? (考虑到用户的磁盘空间,这有点糟糕)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。