在 Gmail 嵌入式浏览器中打开电子邮件的应用程序链接,而不是启动我的应用程序
Posted
技术标签:
【中文标题】在 Gmail 嵌入式浏览器中打开电子邮件的应用程序链接,而不是启动我的应用程序【英文标题】:Application links from email opening in Gmail embedded browser instead of launching my app 【发布时间】:2021-11-25 06:26:31 【问题描述】:我们正在开发一个全新的应用程序,并且与您在注册帐户期间的许多应用程序一样,您将收到一封电子邮件,其中包含一个激活按钮。
按钮后面的链接类似于https://links.mydomain.dev/activate/somecodeorso。该应用程序被配置为拦截来自https://links.mydomain.dev 的所有 URL。如果我们在点击时在聊天应用程序中传递此链接,它会要求打开我们的应用程序或在浏览器中打开。
但是,在 android 上,我们主要使用 Gmail 帐户进行测试,并且从 GMail 中启动嵌入式浏览器,并在其中打开我们的链接,并打开“后备”页面,我们将在该页面上重定向您的游戏或应用商店。 所以我知道我的应用程序已正确配置为拦截 URL。所以问题与应用无关。
我也知道,在 GMail 中我可以禁用嵌入式浏览器,但这对我来说是不正常的,我们的许多潜在用户将拥有未修改的标志,当然我们也不能要求他们切换此设置。 但是在同一台设备上,我测试了其他服务(例如,我测试的最后一个服务是 Tricount),他们的电子邮件后面都有常规 URL,但不是启动嵌入式浏览器,而是要求打开应用程序或常规浏览器。
所以现在问题不在了,我做错了什么。我应该做些什么特别的事情来使链接在应用程序中打开(或者至少让操作系统问我如何处理它)?
任何帮助将不胜感激!
【问题讨论】:
“我做错了什么” - 将您的清单与那些按照您想要的方式运行的应用程序进行比较,看看有什么区别。 This app 可让您检查其他已安装应用的清单。 【参考方案1】:感谢@CommonsWare,我开始研究其他一些 APK,发现了一些差异。
其中一个区别在于查询块内部:
<!-- If your app opens https URLs -->
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>
我只有 VIEW 一个,而不是与 BROWSABLE 结合的那个。然而,这似乎没有必要。
但诀窍是我的 URL 的意图过滤器:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="mydomain.com" />
<data android:scheme="http" android:host="mydomain.com" />
</intent-filter>
我只有https
行,因为我将使用正确的 https 网址生成所有电子邮件。但是添加 http 方案修复了它。 Gmail 现在让我可以先选择我的应用!
【讨论】:
以上是关于在 Gmail 嵌入式浏览器中打开电子邮件的应用程序链接,而不是启动我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章