关于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
重新传apple-app-association这个文件之后,想要验证最好把app卸载重新安装再验证,因为有的文章说每次只有首次安装的时候才会重新下apple-app-association文件,所以*重新传之后,要卸载重新安装再验证
2、多个app使用同一个apple-app-association路径怎么配置
之前公司只使用一个app用apple-app-association文件,所以文件中的path
配置的是[*]
如果两个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<id<UIUserActivityRest
oring>> * __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<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler API_AVAILABLE(ios(8.0)){
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"continueUserActivity" object:userActivity]];
return YES;
}
网友评论