世博会共享链接不可点击

Dol*_*ard 4 share react-native expo

我一直在尝试为我的 Expo 应用程序创建机制,该机制将允许用户共享应用程序的内容(所以我基​​本上需要与参数链接,并且根据文档,我认为我知道如何做到这一点

我想开始通过简单的共享来创建这种机制,无需参数(只需可单击的链接即可打开应用程序)。这是我的代码(当用户按下共享按钮时执行):

share = async () => {
  await Share.share({
    message: Linking.makeUrl()
  })
}
Run Code Online (Sandbox Code Playgroud)

它共享链接(我在Messenger上尝试过),但共享链接不可点击。我还尝试使用exp://192.168.100.3:190000该点指向我在同一 LAN 中的 PC(我从http://localhost:19002/) 中运行 Metro Bunler,并复制隧道链接 - 这些都不起作用,链接只是纯文本,如果用户单击它,则什么也没有发生。但是,当我扫描二维码时,http://localhost:19002/(metro 捆绑器页面)应用程序会按例外打开。

Kal*_*sev 6

你做的一切都很好!

共享链接在某些应用程序中不可点击的原因仅仅是因为其他应用程序从纯文本中“检测”链接并“链接”它们的机制。

你看,这些链接实际上是“深层链接”(自定义 URL 方案)。

这是一个例子。如果我通过 Slack 共享此链接,exp://192.168.100.3:190000它就会变得“可点击”,因为 Slack 看起来有一种机制可以检测这些通向移动应用程序的自定义“深层链接”:

松弛消息

如果我通过 Messenger 共享相同的链接,它会将其输出为纯文本。这是因为 Messenger 没有检测这些“深层链接”的机制。

信使消息

为了让链接“点击”,它必须呈现在锚标记中。Messenger 仅链接“已知”Web 链接(http://https://...),而不链接自定义链接。

您的情况中的二维码阅读器会打开您的深层链接,因为它具有检测“深层链接”的机制。

因此,如果您想要一种可靠的方法来使链接始终“可点击”,那么解决方法如下:分拆一个网站。当人们生成(和共享)链接时,他们共享网络链接https://your-server。当他们打开这些链接时 -> Web 服务器会使用exp://...(或您自定义的)方案重定向它们。如果用户安装了您的应用程序 - 链接将通过您的应用程序打开。