首页 > 解决方案 > *反应原生* | 链接 => 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 中添加的内容太多了。

如果他的手机上有该应用程序,请看在上帝的份上打开它啊啊啊!

有任何想法吗 ?

标签: androidiosreact-nativedeep-linking

解决方案


React Native 链接不需要知道应用方案。您需要做的就是从您要打开的应用程序中找到深层链接,并将其作为 url 传递给Linking组件。如果安装了应用程序,它将自动在应用程序中打开链接。

例如,要直接在应用程序中打开 Instagram 链接,您需要调用此 url instagram://user?username=nike,如果安装,应用程序将自动打开。


推荐阅读