即时应用和深度链接
即时应用依赖于应用链接才能正常工作,而应用链接只是深度链接的一种类型。因此,对于即时应用来说,深度链接仍然可行,并且实际上对其功能至关重要。然而,不支持URI方案深度链接(这在Android应用程序中仍然非常普遍)。
常规应用程序和即时应用程序之间的区别在于,设备将仅在用户单击应用链接时加载单个Activity,而不需要通过Play商店下载完整软件包。这对用户来说是更无缝的体验,但底层技术的工作方式相同。
传递自定义参数
如果用户单击启用应用链接的URL,例如http://www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000
,打开应用后你将得到整个字符串。你需要自己解析x
和y
变量,但它们将对你可用。类似这样:
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团队的一员)来提供链接支持。我们完全支持即时应用程序,这使您可以使用更加友好的数据格式进行工作。我们允许您创建此类链接,以控制行为的每个部分:
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);
});
作为回报,您会获得一个类似于
http://myappname.app.link/iDdkwZR5hx
的URL,然后在链接被点击后,在应用程序内部您会看到如下内容:
{
tags: [ 'tag1', 'tag2' ],
channel: 'facebook',
feature: 'dashboard',
stage: 'new user',
data: {
x: '0.000',
y: '0.000'
}
}
getPathSegments()
按名称调用参数。 - Dan Chaltiel