Flutter iOS已配置Info.plist仍报scheme查询无权限错误
问题根因
LSApplicationQueriesSchemes字段类型配置错误:iOS系统强制要求该字段为数组类型,用于存放所有需要查询的第三方URL Scheme白名单。你当前将其配置为字符串类型,系统无法正确读取你声明的instagram scheme权限,直接抛出无查询权限的错误。- Info.plist存在无效冗余节点:你在该配置项后额外添加了一组空的
<key></key><string></string>无效键值对,可能干扰系统对plist文件的正常解析。 - 配置更新后未做全量清理:iOS仅在App首次安装时读取Info.plist配置,如果你修改配置后仅使用热重载/热重启,或未卸载旧版本App直接覆盖安装,旧配置缓存会持续生效,新配置无法加载。
修复方案
- 修正Info.plist配置
找到原文件中错误的LSApplicationQueriesSchemes配置段:
<key>LSApplicationQueriesSchemes</key> <string>instagram</string> <key></key> <string></string>
将其替换为正确的数组类型配置,同时删除无效空节点:
<key>LSApplicationQueriesSchemes</key> <array> <string>instagram</string> <!-- 后续业务需要跳转的其他App的URL Scheme,直接新增<string>项加入该数组即可 --> </array>
- 清理缓存重新安装
配置修改完成后,依次执行以下操作确保配置生效:
- 在项目根目录执行清理命令:
flutter clean - 删除模拟器/真机上已安装的旧版本测试App
- 重新执行
flutter run编译安装新版本,不要使用热重载/热重启触发更新
- 跳转代码校验
你当前写的跳转调用逻辑本身没有语法问题,可以补充失败兜底逻辑优化体验:
void _launchApp() async { final launchResult = await LaunchApp.openApp( iosUrlScheme: 'instagram://', ); if (launchResult == null || launchResult == false) { // 这里写跳转失败的兜底逻辑,比如提示用户未安装对应应用 } }
内容的提问来源于stack exchange,提问作者flutterloop
相关产品推荐
相关产品推荐

