android - *反应原生* | 链接 => canOpenURL(url) 与未知 URL?
问题描述
我有这段代码:
Linking.canOpenURL(url)
.then((supported) => {
if (!supported) {
console.log("Can't handle url: " + url);
return false;
} else {
return Linking.openURL(url);
}
})
.catch((err) => console.error('An error occurred', err));
我在文档中读到:
从 iOS 9 开始,您的应用需要在 Info.plist 中提供 LSApplicationQueriesSchemes 键,否则 canOpenURL 将始终返回 false。
因此有必要在 info.plist 中指定需要管理的方案。问题是我不知道用户想要的 URL。在我的代码上调用此Linking.canOpenURL
方法的用户操作在这里,因为大多数情况下,当您在我的应用程序上询问此操作时,另一个应用程序会打开。
我只想做:
用户调用该操作并希望打开安装在他手机上的应用程序。我收到了一个方案,我需要检查用户是否确实在他的手机上安装了该应用程序才能打开它。
他的手机上是否安装了该应用程序?( canOpenURL()
) 但它可以是任何方案 Google、Twitter、Instagram、银行应用程序,这就是为什么我不知道方案,在 Info.plist 中添加的内容太多了。
如果他的手机上有该应用程序,请看在上帝的份上打开它啊啊啊!
有任何想法吗 ?
解决方案
React Native 链接不需要知道应用方案。您需要做的就是从您要打开的应用程序中找到深层链接,并将其作为 url 传递给Linking
组件。如果安装了应用程序,它将自动在应用程序中打开链接。
例如,要直接在应用程序中打开 Instagram 链接,您需要调用此 url instagram://user?username=nike
,如果安装,应用程序将自动打开。
推荐阅读
- java - 如何转换以厘米为单位的给定长度并将其表示为公里、米和厘米的组合?
- ios - 泛型获取 Firestore 集合
- mysql - 四个表的内部联接不起作用?
- selenium - 我们如何在桌面 Safari 浏览器中处理 Windows 身份验证
- java - 如何在 bean 验证期间确定哪个参数导致 HttpMessageNotReadableException
- r - 如何同时播放两个同名的df
- javascript - 通过创建隐藏输入在 React 中复制文本
- laravel - 使用 Laravel 在本地机器上使用 Envoy
- reactjs - Recharts - 如何强制图表从 x=0 开始?
- python - Selenium“选择”类返回“不支持的定位器策略”错误