博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信中通过页面(H5)直接打开本地app的解决方案
阅读量:7072 次
发布时间:2019-06-28

本文共 1911 字,大约阅读时间需要 6 分钟。

简述

微信中通过页面直接打开app分为安卓版和IOS版,两个的实现方式是完全不同的。

安卓版实现:使用腾讯的应用宝,只要配置了“微下载”之后,打开链接腾讯会帮你判断本地是否已经安装了app,如果本地安装就直接打开,没有安装的话就是腾讯微下载的页面进行app下载,当然微下载的页面腾讯提供了几个模板,可以自己选择和修改。

IOS实现:ios像直接点击链接打开本地app就难了,有两种方式可供我们选择:

  1.腾讯深度合作的公司,微信可以帮你打开app;

  2.使用IOS9+的新功能“Universal Links”(通用链接);

很显然,第二种方式更适合我们普通的公司。

 

效果展示

 

 

实现步骤

1.配置https(必须是https)网站支持;

创建“apple-app-site-association”文件,注意不带后缀,放到网站根目录,确保可以使用:https://xxx.xxx.xxx/apple-app-site-association直接可以访问,apple-app-site-association文件内容如下:

{    "applinks": {        "apps": [],        "details": [            {                "appID": "*****.com.gangguwang.yewugo",                "paths": [ "/app/*" ]            }        ]    }}

其中appId是你的Prefix + ID,如图:

 

paths为你链接拦截的地址,比如我上面填写的是“/app/*”,就是当我访问https://xxx.xxxx.xxx/app/x的时候,会打开本地app,其他连接时候则为正常显示,这个地址可以配置成多个,也可以直接写*;

 

2.配置苹果证书,开启“Associated Domains”,如下图:

Identifiers - App IDs –Edit 然后开启打钩 Associated Domains 后保存,配置地址:

 

3.配置你的App的Universal Links(通用链接)

如果你是普通的ios项目的的话,配置如下:项目 targets->Capabilities->Associated Domains,如图填写你的链接域名

域名的格式必须为:applinks:你的域名(ex:applinks:www.domain.com),可以配置多个;

如果你是Xamarin项目的话,需要选择Entitlements.plist配置关联域,如图:

 

这样配置完之后,打包即可测试你的应用咯。

官方配置文件:

 

扩展知识(关于Xamarin)

如果你要处理链接打开本地app并跳转到相应的详情页的话,需要这样实现:

1.在你的xxx.iOS项目打开“AppDelegate.cs”文件;

2.重写方法,代码如下:

 

public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler){    if (userActivity.ActivityType == NSUserActivityType.BrowsingWeb)    {        string url = userActivity.WebPageUrl.ToString(); //全地址        if (!string.IsNullOrEmpty(url))        {            //你的业务处理        }    }    return true;}

参考文档:

注意事项

1.配置的网站必须是https,不能为http;

2.[重要]展示地址和打开的地址不能在一个域名下(作者测试发现放在同一服务器下都不行),比如展示页的地址是https://a.domain.com/?id=10,打开的如果是https://a.domain.com/app/?id=10,系统默认是打开页面,而不是触发通用链接打开app;

3.[重要]配置玩证书之后需要更新证书,才能内部打包和提测上传成功;

4.通用链接可被屏蔽,点击右上角配置的链接之后,通用链接就失效了,解决方案详见:。

 

 

如果觉得本文对你有帮助,请点击右下角“推荐”按钮,谢谢!

 

转载地址:http://jkkml.baihongyu.com/

你可能感兴趣的文章
如何判断元素是否在当前文档显示区内?
查看>>
ICMP协议
查看>>
IOS 5 ARC机制 (四)
查看>>
生成二维码
查看>>
网页打开时左上角带的小图标
查看>>
java中json数据生成和解析(复杂对象演示)
查看>>
二分 三分搜索
查看>>
C#中反射type记录
查看>>
View在测量时的MeasureSpec由什么决定?
查看>>
HDU3067 小t的游戏
查看>>
JDK源码 ArrayList
查看>>
程序员面试大揭秘——应聘微软、亚马逊、谷歌、苹果等IT公司你都要做什么准备?...
查看>>
【转】如何理解云计算?很简单,就像吃货想吃披萨了
查看>>
ECharts测量图,功率图
查看>>
个人总结作业
查看>>
C++的预处理(Preprocess)
查看>>
仿网易菜单 实现侧滑 SlidingMenu
查看>>
延时显示的三种实现方式
查看>>
LeetCode算法题-Missing Number(Java实现-四种解法)
查看>>
Quick Cocos2dx 与 EnterFrame事件
查看>>