iOS universal Link跳转微信回调

关于universal LInk的基础介绍参考下面的文章
参考的文章链接1-Universal link 入门指南
参考的文章链接2-微信官方接入文档
说几个我在接入universal Link扥时候遇到的问题

1、上传到服务器的apple-app-association不生效

按照网上的介绍该配置的都配好了,但是就是不生效,使用将链接复制到备忘录点击看能不能打开app的方式验证就是打不开。后来发现这个apple-app-association文件必须放在服务器的根目录或者.well-known目录下,这个在把文件交给后台开发人员的时候一定要告知他,并确认是否放对了位置。

配置好之后要在Xcode的signing&capabilities里点击+添加Associated Domains值为:applinks:你的域名不带https

xcode配置

重新传apple-app-association这个文件之后,想要验证最好把app卸载重新安装再验证,因为有的文章说每次只有首次安装的时候才会重新下apple-app-association文件,所以*重新传之后,要卸载重新安装再验证

!验证

1、下载apple-app-association看配置的路径和代码中注册微信以及微信开发者平台上填写的Universal Links是否相同(根路径地址/apple-app-association 下载文件)

2、配置的文件是否生效,可以在苹果手机的备忘录中输入universal_link链接,如果上面出现打开app的样式,可以通过点击跳转到app中就是生效成功的,如下图。
IMG_3560.PNG

2、多个app使用同一个apple-app-association路径怎么配置

之前公司只使用一个app用apple-app-association文件,所以文件中的path配置的是[*]

文件内容.jpg

如果两个app的path都这么配置就会导致,其中你那个一个app使用微信支付,支付完跳回app的时候跳错了,跳到了另一个app的情况。
因此如果一个文件配置多个app的话,就要在paths处做出区分。
区分文件内容

配置的名字可以根据自己app随意取名,只要不同就可以。如果使用微信的功能,需要在微信开发者平台处配置universal link的地方,填写服务器地址+path,这个配置的内容与代码中写的微信注册时填写的地址相同。
微信配置

代码里注册微信

3、使用universal link之后微信回调不走协议方法

使用universal link进行跳转的,回到app之后要在appdelegate中添加一个协议方法

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler {
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

添加之后才会回到app之后走判断支付成功或者失败的方法-(void) onResp:(BaseResp*)resp

*需要注意一点,-(void) onResp:(BaseResp*)resp微信的协议方法要跟上面的[WXApi handleOpenUniversalLink:userActivity delegate:self]写在一个页面,我之前就是把微信的方法都写在了一个文件中,而上面添加的代码单独粘贴到了appdelegate中,导致每次回到app走都不进入-(void) onResp:(BaseResp*)resp方法。

如果想要实现微信方法都统一到一个文件中,可以在appdelegate这个方法中增加一个通知,使每次回到app走- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler时,发送通知,在微信的页面中接收到通知后执行[WXApi handleOpenUniversalLink:userActivity delegate:self];,这样就可以实现了。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler API_AVAILABLE(ios(8.0)){

    [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"continueUserActivity" object:userActivity]];
    return YES;
}

你可能感兴趣的:(iOS universal Link跳转微信回调)