React Native iOS端使用Linking打开Facebook链接无法唤起App问题
解决方案
- 第一步:修正LSApplicationQueriesSchemes完整配置
你需要在Info.plist的LSApplicationQueriesSchemes数组中补充完整的Facebook相关Scheme,仅加fb和facebook不足以适配新版Facebook iOS App,完整配置如下:
<key>LSApplicationQueriesSchemes</key> <array> <string>fb</string> <string>facebook</string> <string>fbapi</string> <string>fbauth2</string> <string>fbshareextension</string> <string>fb-messenger-share-api</string> </array>
注意配置要放在Info.plist的根节点下,不要嵌套到其他配置项中。
- 第二步:检查唤起链接的格式和ID类型
- 区分目标账号类型使用对应路径:
- 个人账号使用
fb://profile/<个人数字ID> - 公共主页使用
fb://page/<公共主页数字ID>
- 个人账号使用
- 路径后必须跟随Facebook分配的纯数字ID,不能直接使用自定义用户名,如果你只有自定义用户名,需要先转换为对应的数字ID再使用。
- 第三步:优化代码逻辑,补充错误捕获
避免Promise未捕获报错,同时增加兜底逻辑:
const openFacebook = (targetId, isPage = false) => { const schemeUrl = isPage ? `fb://page/${targetId}` : `fb://profile/${targetId}`; Linking.canOpenURL(schemeUrl) .then(supported => { if (supported) { return Linking.openURL(schemeUrl); } return Linking.openURL('https://facebook.com/XXXXX'); }) .catch(err => { // 唤起失败直接跳转浏览器兜底 Linking.openURL('https://facebook.com/XXXXX'); }); };
- 第四步:确认测试环境
必须使用真机测试,且真机已安装最新版Facebook App并完成账号登录,模拟器下Facebook Scheme唤起通常会失效。
内容的提问来源于stack exchange,提问作者Ankit Jayaprakash
相关产品推荐
相关产品推荐

