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

Flutter中url_launcher调用Apple Maps在iOS端崩溃问题排查

排查iOS上maps_launcher触发PlatformException的问题

可能的原因及排查步骤:

  1. URL格式异常
    报错中的URL末尾带有多余的+号,这大概率是maps_launcher生成URL时的编码错误。虽然Apple Maps能兼容解析该URL,但url_launcher的底层校验会判定其为无效请求并抛出异常。

    • 测试方法:手动复制报错里的URL,用url_launcher直接调用launchUrl,观察是否同样抛出异常。如果是,说明问题出在URL本身,需要确认maps_launcher的编码逻辑是否存在字符处理漏洞(比如地址末尾的空格未截断就直接编码)。
  2. 插件与url_launcher的API适配问题
    maps_launcher 2.2.0可能未完全适配url_launcher 6.1.12的回调逻辑。比如url_launcher在打开外部应用后,返回的状态可能被maps_launcher误判为错误:

    • 查看插件实现:找到本地项目中maps_launcher的iOS源码(路径通常为ios/.symlinks/plugins/maps_launcher/ios),检查它调用url_launcher的代码。比如是否在launch后错误地将非true的返回值直接抛出为PlatformException,忽略了iOS中切换应用后返回false但实际操作成功的情况。
  3. 回调结果处理逻辑缺陷
    即使Apple Maps成功打开,maps_launcher可能未正确处理url_launcher的异步回调结果。比如插件调用url_launcher时,没有捕获非致命错误,而是直接将所有错误抛给上层导致崩溃。

临时验证方案

  • 手动构造正确的地址URL(去掉末尾多余的+),用maps_launcher的自定义URL方法打开:
    await MapsLauncher.launchUrl('https://maps.apple.com/?q=Merivale+Lane+Theatre+Rangi+Ruru+Girls+School+Merivale+Lane+off+Rossall+Street');
    
    如果不再崩溃,说明确实是URL编码的问题。

后续建议

  • 尝试升级maps_launcher到最新版本,看是否已修复该编码或适配问题;
  • 若升级无效,可向maps_launcher仓库提交Issue,附带你的地址案例和报错信息,帮助开发者定位问题。

内容的提问来源于stack exchange,提问作者Sarah K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:52:33