expo-linking iOS端跳转回应用不触发eventListener 安卓端运行正常
iOS端expo-linking URL事件监听不触发解决方案
以下是针对性的修复步骤:
- 同步处理初始URL,不能只依赖运行时事件监听。iOS的深链接唤起事件如果发生在监听注册完成之前(包括应用冷启动、后台唤醒场景),不会被后注册的监听器捕获,需要在注册监听前先调用
Linking.getInitialURL()接口获取唤起链接,直接传入handleStravaRedirect处理。 - 检查
app.json的iOS端配置,确保你用到的所有自定义协议都已显式声明,开发环境的exp和生产/TestFlight环境的herofit都需要加入scheme数组,配置示例如下:
{ "expo": { "ios": { "bundleIdentifier": "替换为你的应用包名", "scheme": ["herofit", "exp"] } } }
配置完成后执行npx expo prebuild --clean重新同步原生配置,避免旧缓存导致配置不生效。
- 适配AuthSession的内置回调逻辑:你使用
AuthSession.useAuthRequest发起授权的场景下,该Hook已经内部完成了深链接回调的监听和解析逻辑,不需要额外自行注册Linking.addEventListener,自行注册的监听会因为iOS的事件优先级规则捕获不到回调,直接处理useAuthRequest返回的result参数判断授权结果即可。
注意:iOS端应用退至后台超过30秒后被深链接唤起时,系统会将本次唤起判定为新启动事件,只会通过getInitialURL返回链接信息,不会触发运行时的url监听事件,必须双路径处理才能覆盖所有场景
内容的提问来源于stack exchange,提问作者Bryson Kruk
相关产品推荐
相关产品推荐

