传统的方式是通过URL Scheme的方式,但是iOS9以后又出了新的更完美的方式Universal Links。

传统的URL Scheme方式微信内置的浏览器都是封锁了所有它投资的公司之外的,只有白名单的才可以(比如京东,B站,等)。Universal Links也不能算是完美的实现,但是已经是目前为止最好的了。

就说一下这个东西的介绍,就像在windows里面为某一类型的文件添加了默认的打开方式。只不过这个文件类型变成了某一个“域名”(并非完全是某个域名,或者可以称之为某段有特殊意义的URL)的URL。这个东西只能在iOS9以后才有。

具体的表现在在iOS系统中,当你邮件或者短信或者其他方式收到含有某段“特定标示”的URL的时候如果安装有你的app,就可以直接默认调用app去打开,否则只能调用你的Safari去打开。具体到微信里面就是打开了分享的H5,右上角更多-在Safari中打开,可以直接调用你的app去打开这个URL。具体在app的中怎么展示相关的逻辑就看你的了。

具体介绍的相关文章:

苹果文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

苹果检测链接有效性:https://search.developer.apple.com/appsearch-validation-tool/

很棒的一个英文的步骤文章:https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

相关的文章:http://www.jackivers.me/blog/2015/9/17/list-of-universal-link-ios-9-apps

      http://tech.glowing.com/cn/deferred-deep-linking-and-branch-sdk-in-ios/(URL Scheme和Universal Links优缺点介绍的很棒,这个团队的技术博客也很不错哦)

      http://www.cocoachina.com/ios/20150911/13321.html(里面的那个运行流程的总结图很不错)

具体的步骤就不再赘述了,因为无论是官方文档,还是其他人写的文章都很棒了,我就说一下实际开发中可能遇到的的坑。

1.注意拼写那个json文件的时候,应该是你的开发者中心,Identifiers---App IDs--- 应用的证书名字(bundle id所有对应的那个)---Prefix
.英文的点号,再跟上你的bundle id。并且文件的名字必须为“apple-app-site-association”,不能自己私自定义。用浏览器打开https://<domain>/apple-app-site-association文件,看一下成功否就可以了。

2.生成后的json文件一定是要放到你的那些网页所在的站点的目录下面的HTTPS web server根目录下面。比如你的网站是https://www.google.com(所有的网页都是以这个开头的),然后你应用的地址baseurl是https://api.google.com,其实你应该放在www的那个HTTPS web server根目录下面。然后过两三分钟吧,就用苹果有效性检测工具的那个去试一下,找一个你要分享出去的h5链接试一下,只要不出错,出来很多的相关信息就可以了(就跟用这个URL测试出来的结果一样就可以了https://www.yelp.com/biz/michael-winnetka)。

3.在工程的设置Associated Domains的时候,一定先要去苹果的开发者中心打开你的应用证书Associated Domains Enabled。然后记得更新你的证书关联的东西,然后更新本地的证书。才可以打开工程的Associated Domains。记住填写链接的时候是applinks:<domain>。这个<domain>就是第1点中调试通的那个(如果你的应用的api的和页面的不区分服务器就一样了)。

4.然后编译你的应用。如果你在短信中含有类似的https://<domain>?a=1&b=2 已经通过了后,直接长按会出来“在“XXX”中打开”就说明成功了。可以去微信微博等其他的地方去看看了。

转自:https://www.cnblogs.com/ysk-china/p/5777299.html

iOS微信打开App的更多相关文章

  1. iOS 微信打开第三方应用(Universal Links 和 URL Schemes)

    一.前言 项目中时常有这种需求, 是通过链接跳转到应用内部,现在iOS主流的方案有两个 Schema: 常用在于一个应用跳转到另一个应用内部,属于应用间的跳转.当然ios9以下,网页可以通过schem ...

  2. HBuilder连接IOS手机打开APP测试

    HBuilder是专为前端打造的开发工具,具有最全的语法库和浏览器兼容数据,以方便制作手机APP,最保护眼睛的绿柔设计等优点在近几年盛行: 开发移动端APP项目想要在手机真机上测试: 首先打开HBui ...

  3. ios微信打开网页键盘弹起后页面上滑,导致弹框里的按钮响应区域错位

    input失去焦点,页面被顶起没有还原,所以就有以下的方法来处理 $("input").blur(function(){   setTimeout(() => {    co ...

  4. 微信扫描打开APP下载链接提示代码优化

    上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...

  5. 微信扫描打开APP下载链接提示代码优化(转)

    上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...

  6. iOS H5页面打开APP技术总结

    iOS端H5页面打开APP的方式目前主要有两种:URL Scheme和Universal Links.其中Universal Links是iOS9.0以后推出的一种新的方案,由于它需要在iOS9.0以 ...

  7. 实现微信浏览器内打开App Store链接(已被和谐,失效了)

    微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...

  8. 解决ios下的微信打开的页面背景音乐无法自动播放

    后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监 ...

  9. 实现微信浏览器内打开App Store链接

    http://www.ildsea.com/1781.html 微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itune ...

随机推荐

  1. Lintcode---线段树查询(区间最大值)

    对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值. 为SegmentTree设计 ...

  2. Lintcode---二叉树的层次遍历(原型)

    给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 ...

  3. AssionShop开源B2C电子商务系统-概述(转载)

    今天是个特殊的日子,我在北京房租价格又上了一个新的台阶.在这个日子我准备开始建立一个开源项目,一个B2C行业的EC系统. 一.关于定位 我要做的不只是一个商城,应该说是一个能满足中小型企业建立电子商务 ...

  4. Atitit.jpg png格式差别以及解决jpg图片不显示的问题

    Atitit.模板引擎原理以及常见模板技术 1. Asp Php jsp smarty模板1 1.1. 模板引擎基本原理1 1.2. 调试模式原理2 2. Attilax总结的模板引擎原理2 3. 支 ...

  5. Atiti。流量提升软件设计大纲规划 v1 q45

    Atiti.流量提升软件设计大纲规划 v1 q45 1. 通用数据管理1 2. 网页Url管理模块1 3. 网站domain管理1 4. ad广告管理2 5. Task任务管理2 6. 任务执行功能: ...

  6. DDR 复位

    将FPGA代码和实际的数字电路对应起来. always @ (negedge clk_ref_200)     begin     if(ddr3_init_done)    'b10)   'b10 ...

  7. C++语言基础(20)-模板的非类型参数

    一.在函数模板中使用非类型参数 #include <iostream> using namespace std; template<class T> void Swap(T & ...

  8. CCNA2.0笔记_路由相关

    路由器的工作内容 -路由器知道目标地址 -发现到达目标地址的可能的路由 -选择最佳路径(路由表) -维护路由信息 路由的来源 直连路由:直接连到路由器上的网络 -初始化情况下,路由器所知的网络,只有其 ...

  9. linux学习笔记16--命令find

    find是linux系统中用的比较多的一个命令,而且功能强大,特别是对各种查找方式的不确定位置的文件的查找. Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提 ...

  10. 开发高性能的MongoDB应用—浅谈MongoDB性能优化

    关联文章索引: 大数据时代的数据存储,非关系型数据库MongoDB 性能与用户量 “如何能让软件拥有更高的性能?”,我想这是一个大部分开发者都思考过的问题.性能往往决定了一个软件的质量,如果你开发的是 ...