我已经能够设置深层链接(通用链接),每当单击我的网站 (https://app.example.com) 的链接时,它都会自动打开应用程序。如果来自 Slack、Messenger 或其他网站。问题是,如果我在 app.example.com 内并创建了一个打开 app.example.com 的链接,它不会打开该应用程序。
我似乎找不到任何文档来解决这个问题,我不确定它是否允许,但基本上这就是我想要实现的流程:
但如前所述,即使我放置了链接按钮(正如通用链接的工作方式所预期的那样),第 5 步也不会打开应用程序,它只是在浏览器内重定向。
有什么解决办法吗?我需要能够处理 Android 和 iOS,并且不干扰 PC 浏览器。如果需要,我使用 Ionic v6 进行编码。
谢谢!
据我所知,这是预期的行为。
原因是,
假设您的用户实际上选择导航到您的网站而不是应用程序。由于用户已经在浏览该网站,我们可以假设用户将继续浏览该网站,否则,他或她已经在应用程序中了。
该用户可能会导航到您网站上的不同页面。如果深层链接每次都试图将用户引导至应用程序,那将是一个糟糕的用户体验。
如果您的目的是始终打开应用程序,那么使用自定义 URI 方案是最佳选择。
有点晚了,但至少把它留在这里给其他正在寻找解决方案的人。
我们团队最近也遇到了同样的问题。 正如@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
您可以尝试为您的应用程序定义自定义 URI 方案,例如“myApp://”,并在浏览器的按钮内使用它。