10 android deep-linking android-instant-apps
使用正常安装的应用程序,可以使用深度链接技术,不仅可以从URL打开特定应用程序,还可以将其重定向到特定的部分/功能,例如特定的Facebook帖子或地图上的特定坐标.
由于我已经阅读了Instant Apps,因此链接已经指向要下载和运行的特定模块,不仅可以访问所述模块而且还可以传递一些参数?
例如:
这是我的地图应用程序的仅查看模块将从其下载的链接:" www.myinstantappexample.com/onlyviewmap "
如果我希望它指向一组特定的坐标,那么链接将如何组成?会是这样的:" www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000 "?
从我能够找到的谷歌没有涵盖这方面,我真的无法绕过它.
Ada*_*amK 14
如果我希望它指向一组特定的坐标,那么链接将如何组成?
由您决定如何在URL中包含任何其他信息.它可以通过URL参数或路径本身.例如.
https://www.myinstantappexample.com/location/2/user/5
https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4
然后,您解析接收中的URL Activity.本Uri类包括一些辅助方法,如getQueryParameter()并getPathSegments()使它更容易些.
例如,要解析此URL:
https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4
您可以在以下方面执行以下操作Activity:
Uri uri = getIntent().getData();
String x;
String y;
if (uri != null) {
x = uri.getQueryParameter("x"); // x = "1.2"
y = uri.getQueryParameter("y"); // y = "3.4"
}
if (x != null && y != null) {
// do something interesting with x and y
}
Run Code Online (Sandbox Code Playgroud)
Instant Apps依赖于 App Links来工作,App Links 只是一种类型的深层链接。因此,即时应用程序仍然可以进行深度链接,并且实际上对于它们的运行方式至关重要。但是,不支持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);
}
Run Code Online (Sandbox Code Playgroud)
您只需要操纵该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);
});
Run Code Online (Sandbox Code Playgroud)
作为回报,您将获得一个类似 的 URL http://myappname.app.link/iDdkwZR5hx,然后在单击该链接后在应用程序内,您将获得如下所示的内容:
{
tags: [ 'tag1', 'tag2' ],
channel: 'facebook',
feature: 'dashboard',
stage: 'new user',
data: {
x: '0.000',
y: '0.000'
}
}
Run Code Online (Sandbox Code Playgroud)
为此,您必须使用“工具”->“应用链接助手”中的“应用链接助手”
然后检查您的链接,并在路径选择器中检查是否选择了“pathPrefix”选项。
然后在您的活动(与您最近编辑的链接相关)的 OnCreate 方法的底部添加以下代码:
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
// then use appLinkData.getQueryParameter("YourParameter")
Run Code Online (Sandbox Code Playgroud)
您可以使用“editConfigurations”选项对此进行测试和调试,只需打开该窗口并编辑您的 InstantApp 模块(使用您最近编辑的链接启动的模块),然后在 URL 字段中添加您需要的 URL 参数。(然后只需运行该模块:D)
希望这会有所帮助。