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 (将#修改为@)