You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin iOS应用读取共享文件触发System.UnauthorizedAccessException权限问题排查求助

Xamarin iOS应用读取共享文件触发System.UnauthorizedAccessException权限问题排查求助

大家好,我最近碰到一个棘手的问题,想请各位帮忙分析下:我们的Xamarin iOS应用在读取来自其他应用或者公共文件夹的共享文件时,会触发System.UnauthorizedAccessException异常。

这个问题是全新出现的——之前用VS2019的时候完全正常,自从升级到VS2022(Windows版本)后就开始报错,期间Mac系统也升级到了Ventura 13.7。共享功能的代码逻辑本身是没问题的,我怀疑是不是某个安全权限配置漏了,应该是个小疏忽,但目前还没找到方向。

下面是应用里的相关代码片段,麻烦各位帮忙看看从哪里开始排查比较好?

info.plist 相关配置

<dict>
    <key>CFBundleTypeName</key>
    <string>Public plain-text</string>
    <key>LSItemContentTypes</key>
    <array>
        <string>public.plain-text</string>
    </array>
</dict>

AppDelegate.cs 代码

public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
    MyModule mm = new MyModule();
    mm.AddFile(url.Path);
    return true;
}

MyModule.cs 代码片段

public class MyModule
{
    public void AddFile(string filePath)
    {
        // 这里读取filePath对应的文件时触发权限异常
        // ... 省略后续读取逻辑
    }
}

我自己初步梳理了几个可能的排查方向,也想听听大家的补充意见:

  • 是不是直接用url.Path访问文件的方式不符合iOS沙盒规则?共享文件应该通过安全范围URL获取临时访问权限,是不是需要调用StartAccessingSecurityScopedResource()来获取权限,用完再调用StopAccessingSecurityScopedResource()释放?
  • info.plist里除了文件类型关联,是不是还需要添加针对公共文件夹访问的权限描述?比如NSDownloadsFolderUsageDescription这类说明文本?
  • 升级VS2022后,Xamarin iOS的版本是不是也跟着更新了,有没有API变更导致原来的文件访问方式失效?

备注:内容来源于stack exchange,提问作者Lefty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:38:10