我想在我的Android应用程序中实现延迟深度链接。我的理解是我需要提供一个网址,当用户打开网址时,如果尚未安装该应用,它会将用户引导至应用或玩商店。根据我的研究,似乎Android能够默认解析延迟深度链接。但我的问题是URL来自哪里? Google是否有任何网址构建器可以为我生成或者我是否需要拥有一个网站并为网址编写一些代码?
到目前为止,答案和评论都是指正常的深层链接。它们都不会让你延迟深度链接(即,即使还没有安装应用程序且用户需要首先访问Play商店下载它,也能够进行深层链接)。
Vanilla iOS根本不支持延迟深度链接。 Android可以使用Android Google Play referrer来实现,但它不可靠,并且根本无法在Chrome上运行。
要做到这一点,你可能想要调查一个免费的第三方服务,如Branch.io(完全披露:我在分支团队)。 Branch平台将所有技术细节和边缘情况抽象化,因此您需要担心的是在创建链接时定义一组键/值参数(例如:articleID: story123
)。分支确保在用户单击链接后第一次启动时,应用程序内部会返回这些参数,无论是否在单击链接时安装了应用程序。然后,您可以根据需要使用这些值进行路由/自定义。
该网址来自任何应用或用户。它只是http://example.com/path形式的普通应用程序。不可思议的是,您的清单会为http方案和example.com/path路径注册一个intent过滤器,而Android会将具有该URL的ACTION_VIEW的任何意图注册到您的应用程序。如果你的应用程序没有安装,因为它的http url会回退到浏览器。如果url碰巧或重定向到Play商店,那么它也会让你获得这种行为。
Firebase Dynamic Links似乎是支持延迟深层链接的官方Android方式,如果需要,它将在安装UI中发送用户。它也适用于iOS和Web。
您可以尝试使用此方案(发送给用户):
intent://details?id=X&url=Y&referrer=Z#Intent;scheme=market;action=android.intent.action.VIEW;package=com.android.vending;end";
X:应用程序的包名称
Y:应在App的清单中定义的深层链接方案。 (请参阅此处)这里,他们使用此URL作为示例:“http://www.example.com/gizmos”,因此Y应该被此URL替换。
Z:可以是您想通过Google Play传递给应用的任何数据。请注意,您传递的任何数据都不应该“分开”,因为原始参数本身是“&”分开的。
根据我的实验,浏览器会理解此URL,并根据包名称和深层链接方案将您重定向到App。否则它会带你进入Google Play。
PS:Google Play会向应用广播。因此,请确保您在接收器中收到广播。