iOS终止状态下Firebase Dynamic Links功能异常技术问询
iOS平台Firebase Dynamic Links深度链接异常问题
我们在iOS平台使用Firebase Dynamic Links(DL)时遇到异常:该深度链接本应打开iOS应用并传递数据,供应用解析后触发对应功能(如展示数据页面)。
测试场景及结果
- iOS应用后台运行:
- 在浏览器地址栏粘贴并打开DL → 符合预期
- 在第三方App(如Slack/WhatsApp)中点击分享的DL → 符合预期
- iOS应用已终止且未在后台运行:
- 在浏览器地址栏粘贴并打开DL → 符合预期
- 在第三方App中点击分享的DL → 不符合预期:应用虽能打开,但数据未传递,预期功能未触发
问题集中在场景2.2:应用终止状态下,从第三方App点击DL无法正常传递数据。
已尝试的解决方案
- 使用官方Firebase包监听DL时返回null
- 使用Flutter的uni_links包可获取终止状态下的DL,但仅返回短链接而非完整解析的深度链接,相关代码如下:
void initDeeplinks() async { // Get initial dynamic link if app is started using the link if (Platform.isIOS) { // handle initial link with uni_links package because firebase_dynamic_links doesn't work correctly on iOS try { final initialLink = await getInitialLink(); log('initial link: $initialLink'); if (initialLink != null) onDeeplink(initialLink); } on PlatformException { log('Platform Exception'); } } else if (Platform.isAndroid) { final dlData = await FirebaseDynamicLinks.instance.getInitialLink(); if (dlData != null) _handleDeepLink(dlData); } // Listen for dynamic links while app is open FirebaseDynamicLinks.instance.onLink.listen(_handleDeepLink).onError((error) { log('$error'); }); }
疑问与求助
这是iOS应用终止状态下的预期行为吗?应用启动至前台后,难道不应支持完整解析的Dynamic Links的全部功能吗?
恳请分享相关处理经验或建议。
注:使用Flutter开发,测试环境为iOS 16和iOS 17
内容的提问来源于stack exchange,提问作者Tom Barrington
相关产品推荐
相关产品推荐

