Expo应用中react-native Linking.openURL打开链接后闪退问题求助
Expo中Linking.openURL打开链接后浏览器闪退、应用崩溃问题解决
问题描述
在Expo应用中使用react-native的Linking.openURL打开任意链接时,浏览器刚启动就关闭,同时应用闪退。canOpenURL返回true,但无法正常打开链接,相关代码如下:
const url = "https://www.google.com"; try { const canOpen = await Linking.canOpenURL(url); console.log(canOpen); // 返回true if (canOpen) { Linking.openURL(url); } } catch (error) { console.log("the error is ", error); }
解决方案
- 修正异步调用缺失问题
Linking.openURL是异步方法,原代码未添加await会导致应用状态处理异常,修改后代码:
const url = "https://www.google.com"; try { const canOpen = await Linking.canOpenURL(url); console.log(canOpen); if (canOpen) { await Linking.openURL(url); // 添加await } } catch (error) { console.log("the error is ", error); }
- 检查应用权限配置
在app.json中确认配置了正确的链接访问权限,适配iOS和Android平台:
{ "expo": { "scheme": "your-app-scheme", "ios": { "infoPlist": { "LSApplicationQueriesSchemes": ["https", "http"] } }, "android": { "intentFilters": [ { "action": "VIEW", "data": [ { "scheme": "https", "host": "*" } ], "category": ["BROWSABLE", "DEFAULT"] } ] } } }
- 清除缓存重启项目
执行命令清除Expo缓存,避免缓存引发的异常:
expo r -c
- 排查SDK版本兼容性
若使用旧版Expo SDK,尝试升级至最新稳定版本,部分旧版本存在Linking模块的已知bug。
内容的提问来源于stack exchange,提问作者Wahidullah Shadab
相关产品推荐
相关产品推荐

