我已在Google guidelines之后的Android应用中实施了https深度链接。
工作正常,当用户打开Chrome浏览器,搜索与 mycompany 相关的内容并点击链接时,操作系统会提示在我的应用或浏览器之间进行选择。此外,如果有人通过邮件或信使应用程序发送链接,如果用户点击它,操作系统也会提示在应用程序/浏览器之间进行选择。
但是,我发现以下问题:
如果用户打开Chrome并输入地址栏: www.mycompany.com ,操作系统将不会提示在应用/浏览器之间进行选择,只会在浏览器中打开它
用户在浏览器中浏览www.mycompany.com的主页时,点击应用处理的链接(例如https://www.mycompany.com/product/1234)操作系统将不会提示在应用和浏览器之间进行选择。
最糟糕的问题是:如果用户点击了应用无法处理的链接(例如https://www.mycompany.com/not-handled-path),它会按预期打开相应的网页,但如果是用户则会在此网页中打开点击应用处理的链接(例如https://www.mycompany.com/product/1234)操作系统将提示在应用/浏览器之间进行选择。
正如您所看到的,行为似乎并不一致。 我会说,预期的行为是始终提示在应用程序/浏览器之间做出决定,或者始终让用户浏览网站。
如果我误解了什么,请告诉我,欢迎任何建议。
这是我的调度活动处理的意图过滤器:
<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="https"/>
<data android:host="www.mycompany.com"/>
<data android:pathPattern="/" />
<data android:pathPattern="/product.*" />
<data android:pathPattern="/list.*" />
<data android:pathPattern="/stores.*" />
<data android:pathPattern="/brands.*" />
</intent-filter>
提前致谢。
修改
总之,这是不一致的:
写地址www.mycompany.com进入主页。此网页有https://www.mycompany.com/product/123的链接,点击它进入产品详细信息网页(操作系统不会提示在应用或浏览器中打开)。
写地址www.mycompany.com/not-handled-path进入网页,然后这个网页还有一个指向https://www.mycompany.com/product/123的链接,然后点击它,然后,我惊讶的OS DOES提示在app中打开或浏览器。
答案 0 :(得分:0)
据我所知,你的行为符合预期。 1)您要求您的浏览器打开一个网站。如果您要求操作系统允许您在浏览器和应用程序之间进行选择,但您询问了浏览器。
2)我用它的方式,它工作得很好。
3)我没有看到任何问题。操作系统只有一个选项可以打开它,所以它使用浏览器。如果你发现它很尴尬,请处理未处理的链接。
答案 1 :(得分:0)
我在处理我的应用时遇到了类似的问题,并且没有找到任何明确说明预期行为的文档。然后我深入研究chromium source以找出正在发生的事情。根据chrome实现,当在同一主机内导航时,如果有一个较新的应用程序可用于处理目标URL,则它将显示一个Intent应用程序选择器,与可以处理源/引用URL的应用程序相比。
根据以上所述,您所看到的解释如下: