我花了几个小时试图让我的深层链接发挥作用。我仍然遇到的唯一问题是,如果从应该由应用程序处理的域打开链接,它将无法工作,但如果从任何其他网站单击链接,它就可以正常工作。
例如: 应打开应用程序的链接:https://example34.com/test。 如果我点击 Github 上的链接,它就会起作用。 如果我打开 https://example34.com/ 然后单击那里的链接,它将在浏览器而不是应用程序中打开它...
我做错了什么?
简短回答:这是预期的行为。
使用Applinks时,Chrome将始终推迟将同一域中的用户引导到网络,而不是深层链接到本机应用程序。打开应用程序的唯一方法是当用户在同一域内路由时触发 URI 方案。我建议使用 Branch 来保证您的链接在所有这些情况下都有效。
我们团队最近也遇到了同样的问题。 正如之前所说,这确实是预期的行为。但有一些方法可以克服它。
最佳解决方案:使用子域进行深层链接 如果用户在浏览器中的同一域中导航,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
替代解决方案 1:使用自定义 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>
此解决方案的缺点是,如果您的应用程序未安装,此方法将失败。
如果您想了解更多有关此主题的信息,可以查看我的文章: https://medium.com/@oleg7green/the-specific-case-of-app-links-on-android-ios-apps-47a0455f8892