iOS13中应用无法接收自定义UTI关联的CSV文件问题求助
我之前适配iOS13时也碰到过类似的UTI注册失效问题,结合你描述的情况(iOS12及更早版本正常,iOS13后App不在AirDrop接收列表),给你几个具体的排查和解决方向:
明确声明支持公开CSV UTI
iOS13对UTI的匹配逻辑更严格了,之前只注册自定义UTI可能就能被识别,但现在需要同时把公开的public.csv类型添加到CFBundleDocumentTypes的LSItemContentTypes数组里。比如你的Info.plist配置可以参考这样:<key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>CSV Document</string> <key>LSItemContentTypes</key> <array> <string>com.yourcompany.yourapp.csv</string> <!-- 你的自定义UTI --> <string>public.csv</string> <!-- 必须添加公开CSV类型 --> </array> <key>LSHandlerRank</key> <string>Alternate</string> </dict> </array>完善UTI导出声明的关联关系
确保你的自定义UTI在UTExportedTypeDeclarations里正确声明继承自public.csv,让系统能明确识别它和标准CSV的关联:<key>UTExportedTypeDeclarations</key> <array> <dict> <key>UTTypeIdentifier</key> <string>com.yourcompany.yourapp.csv</string> <key>UTTypeDescription</key> <string>Your App CSV Document</string> <key>UTTypeConformsTo</key> <array> <string>public.csv</string> </array> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <array> <string>csv</string> </array> </dict> </dict> </array>检查文件共享相关权限配置
iOS13开始,部分场景下需要开启UIFileSharingEnabled(允许文件共享)和LSSupportsOpeningDocumentsInPlace(允许在原地打开文件),才能让App出现在文件接收列表里,你可以在Info.plist中添加这两个键并设为YES试试。刷新系统UTI缓存
有时候iOS会缓存UTI注册信息,导致修改配置后不生效。你可以尝试:删除App → 重启设备 → 重新安装App,强制系统重新读取你的UTI配置。交叉验证问题范围
先试试用系统的「文件」App打开一个CSV文件,看你的App是否出现在“打开方式”列表里。如果这里也不出现,那肯定是UTI配置的问题;如果这里出现但AirDrop里不出现,大概率是AirDrop的临时缓存问题,多测试几次或者重启设备就能解决。
内容的提问来源于stack exchange,提问作者Jonno

