转载地址:https://www.jianshu.com/p/ceafb907db40

苹果对还未从UIWebView更新到WKWebView的应用做出了明确规定:新应用最晚于2020年4月份,更新的应用最晚于2020年12月前,都要更新到WKWebView,未更新的应用将会被拒审。

而微信SDK从1.8.6版本开始才将UIWebView更换为WKWebView,所以最好将微信SDK升级到1.8.6以上。

升级微信SDK后会发现注册方法变了,新增了一个参数universalLink。

/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。** 需要在每次启动第三方应用程序时调用。* @attention 请保证在主线程中调用此函数* @param appid 微信开发者ID* @param universalLink 微信开发者Universal Link* @return 成功返回YES,失败返回NO。*/
+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;

universal link是个什么东西呢?

Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.

universal link是苹果在iOS9上推出的一种能通过https链接跳转APP的功能,可以使用相同的网址打开网址和APP。当你的应用支持universal link,用户点击链接时,会直接跳转到你的APP,而不需要经过Safari。当你的应用不支持时,会打开这个链接显示。比如在Safari和别的应用中点击某个链接,可以直接跳转到你的应用来,可以根据链接携带的信息进行解析,做出相应处理。

怎么支持universal link呢?

1.首先要有一个支持https协议的域名,在该域名的根目录上传文件,文件名为apple-app-site-association,没有后缀名,格式为

{"applinks": {"apps": [],"details": [{"appID": "477QH88KPY.com.company.aaa","paths": ["/aaa/*"]},{"appID": "477QH88KPY.com.company.bbb","paths": ["/bbb/*"]}]}
}

这里为两个应用,多少个应用可自行添加,appID为teamId.bundleId,paths路径的意思是,在存放apple-app-site-association文件的域名后拼上什么是支持跳转到你APP的,星号代表通配符,比如腾讯的,https://help.wechat.com/apple-app-site-association

{"applinks": {"apps": [],"details": [{"appID": "532LCLCWL8.com.tencent.xin","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "88L2Q4487U.com.tencent.xin","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "8P7343TG54.com.tencent.wc.xin","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "SG5PVJM4JW.com.tencent.wx","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "2CJ5YJ6LY5.com.tencent.wechat.xin","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "8H3NQF6GGQ.com.tencent.xin","paths": ["/cgi-bin/newreadtemplate", "/app/*"]}, {"appID": "8P7343TG54.com.tencent.wc.xin.SDKSample","paths": ["/sdksample/*"]}]}
}

2.到xcode中配置文件存放的域名,以applinks:开头,拼上域名。当手机下载完应用或者apple-app-site-association文件发生更改时,会去请求这个根目录文件,从而响应支持的跳转格式。

LSApplicationQueriesSchemes中新增weixinULAPI

具体细节可以参考微信SDK文档https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

3.这时候跑一下应用,我们可以到Safari测试一下,以微信为例,输入链接https://help.wechat.com/app/,下拉页面,会看到在“微信”中打开(系统iOS9.0以上,微信版本7.0.7及以上)。如果这时候出现了你的应用,说明文件配置成功了。

4.更新微信SDK至1.8.6及以上版本,到微信开放平台添加好universal link,registerApp的时候赋值上你在微信开放平台填写的universal link。

这里的发送和接收请求的方法新增了回调,表示跳转到微信或者跳转回来是否成功,成功会返回success为YES。

/*! @brief 发送请求到微信,等待微信返回onResp** 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型* SendAuthReq、SendMessageToWXReq、PayReq等。* @param req 具体的发送请求。* @param completion 调用结果回调block*/
+ (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion;/*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面** 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有* GetMessageFromWXResp、ShowMessageFromWXResp等。* @param resp 具体的应答内容* @param completion 调用结果回调block*/
+ (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion;

5.通过universal link从微信跳转回应用时,不再走通过scheme跳转的openUrl:方法了,要实现continueUserActivity方法,判断一下类型。这里的url格式是你在微信后台填写的universal link拼上你的AppID。我这里因为分享和支付用的两个AppID,所以分开处理了一下,交给两个不同的单例,各自实现onResp:的回调。如果你的微信支付和分享用的同一个AppID,支付回来的链接微信会带上/pay/,可以通过这个来区分。

以上。

欢迎共同交流学习。

作者:xstones
链接:https://www.jianshu.com/p/ceafb907db40
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

项目添加universal link跳转,升级微信SDK相关推荐

  1. 苹果备忘录分享不了微信提示无法连接服务器,微信分享提示universal link 校验不通过...

    我的是一个老项目 需要升级友盟分享的sdk(实际上也是微信和qq的sdk); 这边后台给我的配置apple-app-site-association文件的链接, 格式是(www.baidu.com:8 ...

  2. 1分钟解决universal link微信校验不通过

    在开发iOS小程序或者微信分享时候,经常提示:由于应用universal link校验不通过,无法 按网上的方法,检查各种配置,都未能解决,选择排出以下几个情况 1.bundle Id中的teamId ...

  3. 微信分享显示“未验证应用”问题(辅助标签:Universal Link)

    文章目录 一.前言 二.Universal Link原理 三.Universal Link的应用 四.Universal Link的缺陷 五.关于微信使用Universal Link 六.如何添加Un ...

  4. iOS旧版微信SDK升级1.8.6版本小白踩坑记

    虽然写了多年前端,但是一直都是写的lua,这次突然接到通知要升级微信SDK,以前也不是我捣鼓的,这下可愁坏了.本着万事不明,先备份改错的心态去下了微信SDK然后对比了下,发现跟以前没太大区别.主要区别 ...

  5. ios Universal Link 配置教程 + 踩坑记录

    Univeral Link的配置有3方面:Apple Developer网站配置.XCode配置.服务器资源配置(apple-app-site-association文件创建和存放) 首先说下我们的需 ...

  6. Universal Link|iOS开发者不得不知的技术

    1.Universal Link的使用场景 Universal Link是苹果在WWDC 2015上提出的iOS9的新特性之一.此特性类似于深层链接,并能够方便地通过打开一个Https链接来直接启动您 ...

  7. 【vue/uni-app】微信sdk分享功能在vue中开发中的一些个人纪录

    在vue开发微信sdk分享功能中的一些个人纪录 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 我这里用的是 ...

  8. iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题

    这里写自定义目录标题 简介 Unuversal Links介绍 配置Unuversal Links 1.苹果开发者账号打开配置 2.XCode工程配置 3.配置JSON文件 4.后台服务器配置 5.微 ...

  9. 微信universal link

    微信1.8.6.1更新支持universal link方案后不使用universal link使用白名单url sheme的方式: https://blog.csdn.net/yimiyuanggua ...

最新文章

  1. EOS安全漏洞再发,BCH将如何兼顾智能合约效率与安全?
  2. 使用socket创建服务器进程和客户端进程
  3. MyBatis 插件原理与自定义插件
  4. WebSocket实战
  5. java tlv格式_java解析TLV格式数据
  6. 作品2:资源管理器EX(原味浏览图片)
  7. 手机上的星号键和井号键有什么用?
  8. Kafka——性能逆天的存在
  9. 林阳斌集美大学计算机学院,集美大学计算机工程学院导师教师师资介绍简介-林阳斌副教授(2021.04.06)...
  10. 学习笔记之七_第2层交换和生成树协议(STP)(CCNA知识考点)
  11. AI 框架部署方案之模型转换
  12. C语言图书管理系统(链表、文件功能齐全)
  13. AutoCAD .Net 创建椭圆Ellipse
  14. 做引流的方法:真实案例短视频如何涨粉的秘密
  15. python中双引号的作用_Python中单引号和双引号的作用
  16. 【脚本语言系列】关于Python测试工具lettuce
  17. 牛顿法求临界水深c语言程序,基于牛顿迭代法的圆形断面临界水深直接计算法邹武停.pdf...
  18. SAI创始人谈美股IPO:做清洁算力领域“特斯拉” 减少碳排放
  19. Excel中反转一列数据的几种方法
  20. linux系统中mywho命令,linux查看在线用户 who命令参数及用法

热门文章

  1. @getmapping注解的作用_@Transactional注解失效了?你遇到的是这6种场景吧!
  2. React hooks + antd前台实现input搜索框实时搜索table表格
  3. jsonobject修改key的值_Go 语言 map 解析之 key 的定位核心流程
  4. 根据字符串形式的路径导入模块(重要)
  5. 看看80万程序员怎么评论:前端程序员会不会失业?
  6. 二度云抢先成为首批中国工信部(.vip/.xyz/.club)域名注册管理机构
  7. .Net Framework SDK下的命令汇总
  8. EMC业务连续性和容灾服务
  9. mod_rewrite
  10. Object.create()和new object()和{}的区别