问题描述
我在使用huawei AppLinking Service时,通过查询应用包名定位到应用详情页。但是,应用程序包名称因频道而异。比如华为渠道,包名以.huawei结尾,与谷歌渠道的包名不同。是不是说包名不一致,本地所有应用商店都无法打开App Linking链接?
解决方法
这是否意味着应用链接链接无法在 包名不一致导致所有本地应用商店?
答案是否,因为这个问题有解决方案。
执行以下操作以解决问题:
我们知道,如果应用尚未安装,App Linking 可以将用户重定向到自定义网站,因此您可以使用 Android Intent 创建自定义链接,您可以在其中配置要打开的包名称和回退 URL。基本语法如下:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
S.browser_fallback_url=[encoded_full_url]
end;
利用上述功能,您可以:
- 创建App Linking的链接,并使用
setOpenType(CustomUrl)
方法设置打开类型,将用户重定向到Android平台的自定义网站。涉及的API如下:
.setAndroidLinkInfo(new AppLinking.AndroidLinkInfo.Builder()
.setAndroidDeepLink(Android_LINK)
.setOpenType(CustomUrl)
.setFallbackUrl(BACK_LINK)
.build())
- 使用 Android Intent 配置上述自定义网站。这里我以淘宝为例:
"intent://details?id=com.taobao.taobao#Intent;scheme=appmarket;package=com.huawei.appmarket;S.browser_fallback_url=https://play.google.com/store/apps/details?id=com.taobao.taobao;end"
流程如下:
1.使用appmarket方案启动包名为com.huawei.appmarket的应用,即打开华为应用市场。
2.将包名com.taobao.taobao传递给华为应用市场。然后,华为应用市场会启动这个包。
3.如果没有找到com.huawei.appmarket,设置S.browser_fallback_url为fallback URL。
4.后备网址是 Google Play 链接。只需将此 URL 中的 id 设置为要打开的包的名称。本例中,ID为com.taobao.taobao。
确保已完成Android平台的App Linking项目。详情请访问:
https://forums.developer.huawei.com/forumPortal/en/topic/0204442462434640048?fid=0101188387844930001
打开原来的App Linking项目,加粗体的如下信息:
String BACK_LINK = "intent://details?id=com.taobao.taobao#Intent;" +
"scheme=appmarket;package=com.huawei.appmarket;" +
"S.browser_fallback_url=https://play.google.com/store/apps/details?" +
"id=com.taobao.taobao;end";
AppLinking.Builder builder = new AppLinking.Builder()
.setUriPrefix(DOMAIN_URI_PREFIX)
.setDeepLink(Uri.parse(DEEP_LINK))
.setAndroidLinkInfo(new AppLinking.AndroidLinkInfo.Builder()
.setAndroidDeepLink(Android_DEEP_LINK)
.setOpenType(CustomUrl)
.setFallbackUrl(BACK_LINK)
.build());
测试:
-
在设备上安装演示,创建应用链接链接,并将其添加到笔记中。
-
卸载应用以模拟未安装应用的场景。
-
对于华为手机,点击打开/下载。在显示的应用市场上,打开淘宝详情页。下图为华为浏览器淘宝详情页。
-
对于非华为手机,请点按打开/下载。在显示的 Google Play 上,打开淘宝详情页面。下图为谷歌浏览器中淘宝详情页。
-
问题现已解决。如果您遇到类似问题,只需按照我的示例一步一步更改包名称即可解决问题。
更多详情,请访问: