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

Flutter+GoRouter iOS深度链接跳转异常及OneSignal推送问题解决

go_router 12 iOS深度链接跳转首页问题排查与修复

问题背景

我用go_router 12给Android和iOS应用实现导航与深度链接功能,Android端完全正常,但iOS端点击深度链接虽能打开应用,却始终跳转到首页,无法加载链接指向的目标页面。已确认Universal Links和自定义URL scheme配置无误(能打开应用可作为证明),查阅go_router文档及示例后,理论上仅需配置iOS权限与AndroidManifest即可正常运行,求排查方向。

排查步骤

  • 核对go_router路由配置:确保目标页面的路由path与深度链接的path完全匹配,注意大小写、动态参数占位符等细节是否一致
  • 检查iOS深度链接回调处理:
    • 原生侧(AppDelegate):确认冷启动时的didFinishLaunchingWithOptions、热启动时的continueUserActivity方法中,已正确获取深度链接的完整URL并传递给Flutter
    • Flutter侧:确保初始化阶段将获取到的URL交给go_router处理,比如通过GoRouter.of(context).go(linkPath)设置,或在GoRouter的initialLocation中指定正确初始路径
  • 验证Info.plist配置:检查是否添加NSUserActivityTypes字段并包含对应Universal Links的活动类型;同时确认LSApplicationQueriesSchemes中已添加自定义URL scheme
  • 区分冷/热启动测试:分别测试应用完全关闭(冷启动)、后台运行(热启动)时点击深度链接的情况,确认两种场景下均能正确获取链接信息
  • 开启go_router调试日志:在GoRouter初始化时设置debugLogDiagnostics: true,查看日志中是否存在路由匹配失败的提示(如“no match found for location”)
  • 测试纯Flutter路由跳转:直接调用GoRouter.of(context).push('/目标路径'),验证路由本身是否能正常跳转,排除路由配置本身的问题

后续修复更新(2024-02-01)

最初用uni_links解决了iOS普通深度链接的问题,但推送通知中的深度链接仍未正常工作。排查后发现问题出在OneSignal Flutter包上,修复方案如下:

  • 改用additionalData方式传递推送深度链接
  • 升级OneSignal包至以下版本:
    • 5.1.0正式版本
    • 5.0.4版本,同时手动应用对应Android问题的修复补丁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:25:14