美文网首页
关于WechatOpenSDK 配置(xcode11.2.1)

关于WechatOpenSDK 配置(xcode11.2.1)

作者: 鱿鱼干煎辣椒 | 来源:发表于2020-03-27 12:54 被阅读0次

    我们的项目中唤起第三方app一般是通过配置对应的URL Scheme的方式使用的,微信SDK的最新版本openSDK1.8.6 由于苹果iOS 13系统版本安全升级,为此openSDK在1.8.6版本进行了适配。 1.8.6版本支持Universal Links方式跳转,对openSDK分享进行合法性校验,提升使用过程中的安全性。

    要求在注册微信appid时,必须要传入universalLink,以前的方法在旧版本仍然可使用

    一、iOS接入指南

    https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

    二、通用链接配置

    1、生成无后缀名json格式的文件,文件命名为“apple-app-site-association”

    运用在线网页生成json文件:http://www.bejson.com/jsoneditoronline/,重命名,删除.json;

    appID:TeamID+BundleId的组成(例:9JA89QQLNQ.com.apple.test)(TeamID可以在开发者账号里面查看,BundleId是项目的Bundle Identifier)

    Paths:是设置允许的路径列表,可以是一个也可以是多个,最简单的方式是使用“*”,通配符,表示允许该域名下的任意路径。(注意:paths中的大小写是敏感的,一定要一一对应);

    2、上传apple-app-site-association文件(这里就能拿到app中配置需要的域名)

    (1)将apple-app-site-association文件发给服务器端的同事,让他上传到域名的根目录下或者.well-known的子目录下(这里的域名必须要是可访问的域名,由服务器端的同事给到)。

    (2)Web server需要支持https,客户端通过https来访问,并且不支持重定向。

    3、在app中处理通用链接

    (1)添加对应的域名(上面知道的域名)到Capabilities

    在项目里面定位到Capabilities,找到Associated Domains,点击允许按钮,在Domains中添加对应的域名。(Domains中的域名必须是使用applinks开头,然后输入自己的域名即可。注意:当app第一次启动之后,会自动从你自己的域名目录下下载这个apple-app-site-association文件。)

    这边的域名的地址为裸域名地址,可以不带上https://;

    特别注意:

    1、上述配置完后,可能出现UniversalLink不通的情况,去开发者中心(https://developer.apple.com/account/resources/certificates/list)查看Identifiers是否具有“Associated Domains”功能,重新生成描述文件下载,证书下载。重新打开下载的证书和描述文件;

    2、(未上架的情况下)如果未安装相应的demon,可能在safari输入域名后,可能没有有以下提示,可以选择安装demon,后测试UniversalLink通不通;

    3、微信开放平台上注册的UniversalLink(https://xxxx/aaa/),以“https://”开头,“/”结尾,https://xxxx/最好和xcode配置上的域名地址一致,aaa可加可不加,不影响使用;

    (2)实现AppDelegate里支持通用链接的实现方法

    - (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary<NSString*, id> *)options{

        [WXApihandleOpenURL:url delegate:self];

     returnYES;

    }

    -(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler

    {

     return[WXApihandleOpenUniversalLink:userActivity delegate:self];

    }

    这里如果是从旧版更新WechatOpenSDK1.8.6版本的话,需要在这个里面调用微信里的这个方法,并且在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin和weixinULAPI,可通过微信开放平台的接入文档步骤一步步进行修改或添加。

    二、代理方法实现步骤

    Appdeagate.m

    #1

    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

       [WXApiregisterApp:@"wxd930ea5d5a258f4f"universalLink:@"https://help.wechat.com/sdksample/"];

     returnYES;

    }

    #3

    - (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary<NSString*, id> *)options{

     return  [WXApihandleOpenURL:url delegate:self];

    }

    -(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler

    {

     return[WXApihandleOpenUniversalLink:userActivity delegate:self];

    }

    #4

    -(void)onResp:(BaseResp*)resp

    {

     NSLog(@"回调了");

    }

    -(void)onReq:(BaseReq*)req

    {

    }

    LoginVC.m

    #2 点击微信登录

    -(void)wechatOrCodeBtnClicked:(UIButton*)btn

    {

     DLog(@"点击了其他方式登录");

        [selfsendWXAuthReq];

    }

    - (void)sendWXAuthReq{

     if([WXApiisWXAppInstalled]){

     SendAuthReq*req = [[SendAuthReqalloc] init];

           req.scope= @"snsapi_userinfo";

           req.state= @"App";

           [WXApisendAuthReq:req viewController:selfdelegate:selfcompletion:^(BOOLsuccess) {

     NSLog(@"success = %d",success);

     DLog(@"数据发送成功")

           }];

       }else{

     NSLog(@"未安装微信");

       }

    }

    参考文档:

    https://www.jianshu.com/p/f43c6e655a0a

    相关文章

      网友评论

          本文标题:关于WechatOpenSDK 配置(xcode11.2.1)

          本文链接:https://www.haomeiwen.com/subject/xldluhtx.html