iOS H5打开App(通用链接)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS H5打开App(通用链接)相关的知识,希望对你有一定的参考价值。
参考技术A 入秋了,路上会遇到用小贩用小货车拉着卖芒果,和去年一样,我会停下急匆匆的脚步,买几个。一则自己爱吃芒果不过敏,二则品尝下是否和去年一样熟悉的味道。在微信里面点击的分享的商品:
浏览器如何知道手机是否安装了App呢,通过设置延时。
白名单如下:在这个 plist 文件中找到白名单很简单,因为微信已经达到了49个的上限,一个很扎眼的 “(49 items)” 的 “Array” 项 LSApplicationQueriesSchemes 就是我们要找的白名单了。我们可以看到诸如腾讯新闻 (qqnews), 腾讯视频 (tenvideo2) 都是在白名单内的。
使用它颁发给你的应用地址,向这个地址跳转,然后一切就交给微信了,直接无视微信什么的,直接带你飞到app内。具体可看腾讯应用宝Applink接入 文档 。举个例子,网易新闻。从网易新闻分享一条链接到微信,在微信里面点开链接。
优点:
缺点:
只支持ios9及以上系统;当使用Universal Link打开APP之后,状态栏右上角会出现链接地址,点击它会取消Universal Link,需引导用户重新使用Safari再次打开该链接,弹出Safari内置APP广告条,再点击打开重新开启Universal Link。
说明: appID = teamId.yourapp's bundle identifier
paths = APP支持的路径列表,只有这些指定的路径的链接,才能被APP所处理,大小写敏感。举个例子,如果你的网站是 oap.aaa.com ,你的path写的是"/info/*",那么当用户点击 www.aaa.com/info/ <path>?<params>=<value>,就可以唤醒APP了,相反 www.aaa.com/other 就不会。此外Apple为了方便开发者,提供了一个 网址 来验证我们编写的这个apple-app-site-association是否合法有效,这个网址经过测试后有的有效果有的没有效果。下图是输入oia.zhihu.com之后的效果。
至此APP已经开启Universal Links,可以通过链接唤醒APP,并跳转至指定页面了。流程如下:
注:用于跳转打开app的域名需要支持https,如果是一级域名页面有个按钮,点击按钮跳转二级域名来打开app,那么二级域名需要支持https。这里DEMO的二级域名不支持https,所以采用的方案是二级域名跳转到一级域名来打开APP。
解决方案:在Safari中打开该页面,将网页拉倒最顶部,会出现一个悬浮框,点击悬浮框中的打开按钮,又跳回到app中打开指定页面,此时再回到微信浏览器中点击 "打开App"按钮,又能正常跳转到app了。
Universal Links 功能的接入其实相当于给某些 URL 添加了一种新的打开方式,但是旧的通过浏览器打开 URL 的方式仍然可用,当点击右上角跳转箭头时,相当于又设置这些特定 URL 的默认打开方式为浏览器而非 web,因此一键跳转功能此时会失效。反之通过点击顶部 "打开" 按钮,相当于又将这些特定 URL 的默认打开方式修改为 app ,一键跳转功能恢复正常。
在Safari中打开页面刚进入时,横条是隐藏的,一定要将页面拉到最顶部时才能显示。
iOS通用链接universalLink详细解答
参考技术Auniversal是iOS9后新增的特性,通过universalLink可以快速打开APP。相较于URL scheme的方案,有如下优点:
本次替换是因为微信跳转小程序,WXOpenSDK的api必须传universalLink校验,所以研究了下。
添加通用链接的步骤简单分为下面三步:
apple-app-site-association文件格式如下
注意apple-app-site-association文件不要加后缀
appID的格式为:teamID.explicit ,位置如下图
appID 密钥的值是团队ID或应用程序ID前缀,后跟捆绑软件ID。对应上面红框中的两个值
paths 键的值是一个字符串数组,用于指定应用程序支持的网站部分以及您不想与该应用程序关联的网站部分。
要指定不应作为通用链接处理的区域,请在路径字符串的开头添加“ NOT ”(包括之后的空格 T )。
例如,下面所示的文件可以防止 /videos/wwdc/2010/* 通过更新 paths 数组,将网站区域视为通用链接,如下所示:
注意
1.用于在 paths 数组中指定网站路径的字符串区分大小写;
2.使用*指定整个网站;
3.包含特定的URL,例如/wwdc/news/,以指定特定的链接;
4.用添加 到特定的URL,例如NOT /videos/wwdc/2010/ ,可以指定网站的一部分;
5.使用?匹配单个字符,/videos/wwdc/201?/*
创建apple-app-site-association文件后,将其上传到HTTPS Web服务器的根目录或者.well-known子目录。
需要通过HTTPS在https://<domain>/apple-app-site-association或https://<domain>/.well-known/apple-app-site-association进行访问,而无需任何重定向;
其中<domain>路径为我们在APP内applinks中配置的路径,下面会说到。
1.给后台的apple-app-site-association文件不能有后缀;
2.注意检查格式,防止有其他字符或者乱码导致无法跳转;
1.把链接粘贴到备忘录,点击看能否直接跳转到APP,或者长按链接看有没有弹出跳转到APP的选项;
2.通过苹果API工具 App Search API验证工具 校验,结果以1为准;
3.你将要测试的网址在safari中打开,在出现的网页上方(the Smart App Banner),可以看到有在”XX”应用中打开
如下图
Xcode内设置如下图,Domains格式applinks: offlinetest.e***x.net ,offlinetest.e***x.net对应2.2的<domain>
当点击某个链接,直接可以进我们的app了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。
我们需要在工程里的实现 AppDelegate 里对应的方法:
通过2.2.3校验通过,但是在跳转微信时候还是提示universal link校验不通过。分析原因是微信开放平台配置的universalLink和当前链接不匹配,去更新就行
某系第三方,如sharaSDK提供了一个universalLink可直接使用,当然也可以选择自己生成
通过其他平台管理: 通过openinstall平台
参考链接: 苹果通用链接
以上是关于iOS H5打开App(通用链接)的主要内容,如果未能解决你的问题,请参考以下文章
iOS通用链接(Universal Links)突然点击无效的解决方案