当我使用华为AppLinking服务时,会查询app包名来定位app详情页。但是,应用程序包名称会因渠道而异。例如,对于华为渠道,包名以.huawei结尾,这与谷歌channel.Does中的包名不同,这意味着由于包名不一致,应用链接链接不可能在所有本地应用商店中打开?
发布于 2021-05-28 09:04:07
这是不是意味着,由于包名称不一致,无法在所有本地应用商店中打开应用链接链接?
答案是no,因为这个问题有一个解决方案。
执行以下操作以解决问题:
我们知道,如果应用程序尚未安装,App Linking可以将用户重定向到自定义网站,因此您可以使用Android intents创建自定义链接,在其中您可以配置要打开的包名和回退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; 利用前面的函数,您可以:
涉及的接口如下:
.setAndroidLinkInfo(new AppLinking.AndroidLinkInfo.Builder()
.setAndroidDeepLink(Android_LINK)
.setOpenType(CustomUrl)
.setFallbackUrl(BACK_LINK)
.build())"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.使用应用市场方案启动包名为com.huawei.appmarket的app,即打开华为AppGallery。
2.向华为AppGallery传递包名为com.taobao.taobao。然后,华为AppGallery将启动此套餐。
3.如果没有找到com.huawei.appmarket,则将S.browser_fallback_url设置为备用URL。
4.备用URL是Google Play链接。只需将此URL中的id设置为要打开的包的名称即可。在本例中,ID为com.taobao.taobao。
确保Android平台的App链接工程已经完成。有关详细信息,请访问:
https://forums.developer.huawei.com/forumPortal/en/topic/0204442462434640048?fid=0101188387844930001
打开原App链接项目,添加以下粗体信息:
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());

测试:


若要使用非华为手机,请点击Open/Download.


有关更多详细信息,请访问:
https://stackoverflow.com/questions/67720080
复制相似问题