Xamarin Forms iOS配置.PV4文件关联无法唤起应用问题咨询
Xamarin.Forms iOS端关联.PV4后缀文件唤起应用配置方案
你当前配置失效的核心原因是缺失自定义UTI(统一类型标识符)声明段,填写的com.content为无效标识,系统无法识别你的App具备.pv4文件的处理能力,因此只会触发系统默认预览。
正确Info.plist配置
直接替换原有文件关联相关配置,注意将UTI标识替换为你自己App对应的反向域名格式唯一值:
<!-- 自定义文件类型UTI声明,为必须配置项 --> <key>UTExportedTypeDeclarations</key> <array> <dict> <key>UTTypeIdentifier</key> <string>com.yourdomain.pv4</string> <key>UTTypeDescription</key> <string>PV4业务文件</string> <key>UTTypeConformsTo</key> <array> <string>public.xml</string> <string>public.data</string> </array> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <array> <string>pv4</string> <string>PV4</string> </array> <key>public.mime-type</key> <array> <string>application/x-pv4</string> </array> </dict> </dict> </array> <!-- 文档类型关联配置 --> <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>PV4 File</string> <key>CFBundleTypeRole</key> <string>Editor</string> <key>LSHandlerRank</key> <string>Owner</string> <key>LSItemContentTypes</key> <array> <string>com.yourdomain.pv4</string> </array> </dict> </array>
配置要点:
UTTypeIdentifier必须为全局唯一的反向域名格式字符串,禁止使用无意义的通用标识LSItemContentTypes内填写的值必须和上方声明的UTTypeIdentifier完全一致- 你的PV4文件为XML格式,
UTTypeConformsTo添加public.xml可让系统正确识别文件基础属性
接收唤起文件的代码配置
仅配置Info.plist只能让系统识别App支持该文件类型,还需要在iOS项目中添加回调逻辑接收文件路径:
- 打开iOS项目的
AppDelegate.cs,重写OpenUrl方法:
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) { if (url.StartAccessingSecurityScopedResource()) { string targetFilePath = url.Path; // 在此处添加业务逻辑,将文件路径传递给Xamarin.Forms核心项目处理即可 url.StopAccessingSecurityScopedResource(); return true; } return false; }
测试验证注意事项
- 修改配置后必须完全卸载设备上的旧版App,再重新编译部署,iOS仅在App首次安装时注册文件关联信息,增量更新不会刷新注册配置,会导致配置不生效
- 部署完成后,在系统文件App中长按.pv4文件选择共享,即可在打开选项中看到你的App;配置生效后直接点击文件会弹出打开方式选择,不会直接进入预览页
- 若仍无法识别,可重启设备后再测试,iOS的文件类型关联缓存偶尔会出现延迟刷新的问题
内容的提问来源于stack exchange,提问作者TPitman
相关产品推荐
相关产品推荐

