即时应用程序和深度链接
Instant Apps依赖于 App Links工作,而 App Links 只是一种深度链接。因此,即时应用程序仍然可以进行深度链接,实际上对于它们的运行方式至关重要。但是,不支持URI 方案深度链接(在 Android 应用程序中仍然非常普遍)。
普通应用和 Instant App 的区别在于,设备只会加载单个 Activity 以响应用户点击的 App Link,而不需要通过 Play 商店下载完整的包。这对用户来说是一种更无缝的体验,但底层技术的工作方式相同。
传递自定义参数
如果用户单击启用了应用链接的 URL,例如http://www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000
,您将在应用打开后将整个字符串返回到应用中。您必须自己解析x
andy
变量,但您可以使用它们。像这样的东西:
Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
String uri = this.getIntent().getDataString();
Log.i("MyApp", "Deep link clicked " + uri);
}
您只需要操纵该uri
值即可找到所需的内容。
自定义参数的替代方法
或者,您可以使用Branch.io(完全披露:我在 Branch 团队)来为您的链接提供动力。我们完全支持 Instant Apps,这使您可以使用更友好的数据格式。我们让您创建这样的链接,以控制行为的每个部分:
branch.link({
tags: [ 'tag1', 'tag2' ],
channel: 'facebook',
feature: 'dashboard',
stage: 'new user',
data: {
x: '0.000',
y: '0.000',
'$desktop_url': 'http://myappwebsite.com',
'$ios_url': 'http://myappwebsite.com/ios',
'$ipad_url': 'http://myappwebsite.com/ipad',
'$android_url': 'http://myappwebsite.com/android',
'$og_app_id': '12345',
'$og_title': 'My App',
'$og_description': 'My app\'s description.',
'$og_image_url': 'http://myappwebsite.com/image.png'
}
}, function(err, link) {
console.log(err, link);
});
作为回报,你会得到一个类似的 URL http://myappname.app.link/iDdkwZR5hx
,然后在点击链接后在应用程序内部,你会得到如下所示的内容:
{
tags: [ 'tag1', 'tag2' ],
channel: 'facebook',
feature: 'dashboard',
stage: 'new user',
data: {
x: '0.000',
y: '0.000'
}
}