项目添加universal link跳转,升级微信SDK

 2023-09-15 阅读 16 评论 0

摘要:转载地址:https://www.jianshu.com/p/ceafb907db40 苹果对还未从UIWebView更新到WKWebView的应用做出了明确规定:新应用最晚于2020年4月份,更新的应用最晚于2020年12月前,都要更新到WKWebView,未更新的应用将会被拒审。 微信code获取失败怎

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

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

微信code获取失败怎么办、 

 

微信openlink?而微信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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/59192.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息