来自同一网站时深层链接不起作用

问题描述 投票:0回答:3

我已经能够设置深层链接(通用链接),每当单击我的网站 (https://app.example.com) 的链接时,它都会自动打开应用程序。如果来自 Slack、Messenger 或其他网站。问题是,如果我在 app.example.com 内并创建了一个打开 app.example.com 的链接,它不会打开该应用程序。

我似乎找不到任何文档来解决这个问题,我不确定它是否允许,但基本上这就是我想要实现的流程:

  1. (在应用程序内)单击“连接可穿戴设备”按钮
  2. (在浏览器中)默认浏览器打开可穿戴设备的登录页面
  3. (在浏览器中)可穿戴设备重定向到我自己的网站(https://app.example.com/confirmed
  4. (在浏览器中)此页面内有一个按钮,显示“返回应用程序”[href="https://app.example.com/"]
  5. (应用程序内)应用程序打开

但如前所述,即使我放置了链接按钮(正如通用链接的工作方式所预期的那样),第 5 步也不会打开应用程序,它只是在浏览器内重定向。

有什么解决办法吗?我需要能够处理 Android 和 iOS,并且不干扰 PC 浏览器。如果需要,我使用 Ionic v6 进行编码。

谢谢!

android ios angular ionic-framework deep-linking
3个回答
1
投票

据我所知,这是预期的行为。

原因是,

假设您的用户实际上选择导航到您的网站而不是应用程序。由于用户已经在浏览该网站,我们可以假设用户将继续浏览该网站,否则,他或她已经在应用程序中了。

该用户可能会导航到您网站上的不同页面。如果深层链接每次都试图将用户引导至应用程序,那将是一个糟糕的用户体验。

如果您的目的是始终打开应用程序,那么使用自定义 URI 方案是最佳选择。


0
投票

有点晚了,但至少把它留在这里给其他正在寻找解决方案的人。

我们团队最近也遇到了同样的问题。 正如@selcuk-sahin 所说,这确实是预期的行为。但有一些方法可以克服它。

解决方案 1:使用子域进行深层链接 如果用户在浏览器中的同一域中导航,https://app.example.com,则 Chrome 和 Safari 都不允许应用程序拦截请求并打开。 但是,如果用户导航到 https://subdomain.app.example.com 那么这就是域的更改,并且如果链接到该子域,您的应用程序将被打开。

因此,只需在第 5 步中使用新的子域:

https://subdomain.app.example.com

苹果官方文档上也有相关推荐 https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links#Use-universal-links-on-your-site

解决方案 2:使用自定义 URI 方案。 例如:

openapp://app.example.com

例如在 AndroidManifest.xml 中订阅它:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />

  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />

  <data
    android:scheme="openapp"
    android:host="app.example.com" />
</intent-filter>
此解决方案的

缺点是,如果您的应用程序未安装,此方法将失败。

解决方案3(仅限Android) 还有一种方法,专门针对 Android 的是使用预定义的系统自定义 URL 方案:

android-app://com.example.app/

在您的网页中您将看到如下内容:

<a href="android-app://com.example.app/
#Intent;action=com.example.CUSTOM_ACTION;end" target="_blank">Open app</a>

在应用程序中:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />

  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />

  <data android:scheme="android-app" />
  <data android:host="com.example.app" />
</intent-filter>

这是官方 Android 文档:https://developer.android.com/reference/android/content/Intent#URI_ANDROID_APP_SCHEME

如果您想了解更多有关此主题的信息,可以查看我的文章: https://medium.com/@oleg7green/the-specific-case-of-app-links-on-android-ios-apps-47a0455f8892


-1
投票

您可以尝试为您的应用程序定义自定义 URI 方案,例如“myApp://”,并在浏览器的按钮内使用它。

© www.soinside.com 2019 - 2024. All rights reserved.