美文网首页iOS技术
iOS universal Link跳转微信回调

iOS universal Link跳转微信回调

作者: 小镜子呀 | 来源:发表于2022-03-18 16:49 被阅读0次

    关于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文件,所以*重新传之后,要卸载重新安装再验证

    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<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;
    }
    

    相关文章

      网友评论

        本文标题:iOS universal Link跳转微信回调

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