iOS常用iOS学习专题

2020年ios 微信SDK1.8.6或以上版本配置Univer

2020-06-09  本文已影响0人  90后的晨仔
一、简介

通用链接的出现其实目的就是为了通过该链接可以链接到你的应用内容并安全地共享数据。针对于使用该项功能的好处苹果爸爸也特别说明了,解释如下图。其实微信SDK1.8.6以后的版本之所以搞这么一处,说白了也是为了相应苹果爸爸的号召。格式什么的官方文档都有说明,感兴趣的大家可以去。苹果官方的解释

特别之处.jpg

二、微信官方集成文档

微信官方文档说明

三、自己采坑总结

其实理论来讲看完微信官方文档集成完事没问题的,可是我按照文档一路集成下来发现确实还是有不少坑点的。小哥我也是看了开放平台之后才有了解决问题的思路没想测试了成功了。温馨提示:步骤就按照微信官方文档去集成,我只是把坑点列出来,我想聪明的大家一定能解决了。

坑点1:apple-app-site-association文件怎么正确的处理呢?
(1)、虽然说这个文件是json文件,但是创建完后你一定要处理成如下图,不带.json后缀的文件。
1591690850972.jpg
(2)、apple-app-site-association的内容怎么定义的呢?

苹果官方给的示例
<1>.我在这里使用的是微信官方给案例说明问题,不过大同小异根据自己的情况而定。
<2>.这里的appID为:团队ID+项目的Bundle Identifier

Snip20200609_2.png
(3)、获取团队ID?
teamID.png
(4)、apple-app-site-association应该存放在哪里呢?

<1>.苹果爸爸说了需要存放于你公司的服务器。具体位置在服务器的根目录或.well-known子目录中。.苹果官方存放说明
<2>.温馨提示:至于是放在服务器根目录还是.well-known子目录中需要根据公司使用的服务器决定,像我们公司的服务器是没有用到【.well-known】这个目录的,所以最后放到了服务器的根目录。`

1591692612731.jpg
坑点2:微信后台的Universal Links 应该怎么配置才正确呢?

<1>.以“https”开头,以“/”结束。
<2>.举个例子:例如app中使用的域名为:https://www.baidu.com/ 然后我们在apple-app-site-association 文件的paths那一项配置的是/sdksample/*,所以微信后台Universal Links 那一项就应该配置为https://www.baidu.com/sdksample/。如下图:

Snip20200609_5.png
坑点3:项目中应该怎么配置Universal Links 呢?
<1>.证书中需要添加一项新Associated Domains的功能。如下图:
2761218-5edc72ffcf7f6ccc.jpg
<2>.xcode 中配置如下:
来源于微信官网.png
坑点4:xcode中其他的配置
1.png 2.png 3.png
坑点5:Universal Links配置好之后记得用苹果官方的检验工具机型加测一下。

通配链接检测工具

坑点6: 针对微信分享的处理,应该在AppDelegate中应该有哪些方法中做处理?
<1>.步骤一
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //向微信注册
    [WXApi registerApp:APP_ID
universalLink:UNIVERSAL_LINK];
    return YES;
}
<2>.步骤二

微信官方文档中的第二步骤说需要在如下两个方法中也需要做处理,但是这两个方法已经被苹果给废弃了,统一在一个方法中做的处理。

废弃的方法:

下边的连个方法已经废弃,这里只是为了说明白才把它写在这里的,项目中是不需要这两个方法的。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [WXApi handleOpenURL:url delegate:self];
}
两个废弃的方法统一为在这个方法中处理:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
      return [WXApi handleOpenURL:url delegate:self];
}
<1>.步骤三

这个是重点说明一下,因为我在这里采坑了。如果所有都配置好了之后掉起微信之后,在微信返回app的时候肯定会走这个方法的。如果不走这个方法那么就会在微信SDK的log日志中看到一个错误Error: fail to load keychain status:-25300,keyData null 1并且在app中点击分享的时候会重复调用正在连接那个界面。这时候你就应该去好好检查一下你在apple-app-site-association文件中配置的Universal Links路径是否与微信后台配置的路径一致,不一致就会出现这种情况。

该方法必须要在分享操作的时候走这个方法,不走的话就会出现每次都会看见正在连接这个界面。
//通过universal link来唤起app
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
   
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
app在第一次掉起微信分享的时候会出现这个界面,后边在此分享就不会出现这个界面了。根据微信官方文档来说,如果出现两次或者两次已上就证明Universal Links是有问题的。
tupian.jpeg
坑点7:如果Universal Links配置好的话在在手机的Safari浏览器中敲入你配置的那个Universal Links(我们这里举例子的路径为https://www.baidu.com/sdksample/)路径就会出现如下图的界面。
配置成功.png
上一篇下一篇

猜你喜欢

热点阅读