美文网首页iOS学习笔记iOS Developer
app跳转到QQ,微信,支付宝等之后是怎么返回来的

app跳转到QQ,微信,支付宝等之后是怎么返回来的

作者: 踩坑小分队 | 来源:发表于2017-04-26 17:24 被阅读1584次

    相关app之间的跳转可以参考<a href="http://www.cocoachina.com/ios/20161026/17855.html">iOS开发--一步步教你彻底学会『iOS应用间相互跳转』</a>,写的挺详细的,这里就不用做赘述了。
    场景:我们一般会有分享,支付的功能,当我们分享或者支付完毕之后,是怎么跳转回到我们的app的?
    因为我们知道,在iOS9之后,相关的跳转需要添加白名单,不添加白名单是跳转不了的,我们跳转微信,支付宝的时候,都是提前添加了相关需要跳转app的url schemes到我们的白名单了。我们跳过去的时候虽然把我们自己的url scheme带过去了,但是微信支付宝也不可能动态的将我们自己的url scheme添加到他们的白名单中。

    先来看一下跳转qq做的工作
    1、添加白名单


    将qq的scheme添加到白名单中.png

    2、操作代码

       // 将自己的url Schemes通过参数的形式传递过去,
        NSString *urlStr = @"mqq://App-A";
        NSURL *url = [NSURL URLWithString:urlStr];
        if ([[UIApplication sharedApplication] canOpenURL:url]) {
            // 3. 打开应用程序
            [[UIApplication sharedApplication] openURL:url];
        } else {
            NSLog(@"没有安装");
        }
    

    如果没有添加qq的白名单,是跳转不过去的,会报错

    -canOpenURL: failed for URL: "mqq://" - error: "This app is not allowed to query for scheme mqq"
    

    通过实验,其实白名单是对canOpenURL:方法起了限制。
    直接写,也是能够跳过去的。

       NSString *urlStr =@"mqq://App-A";
        NSURL *url = [NSURL URLWithString:urlStr];
        [[UIApplication sharedApplication] openURL:url];
    

    所以,我们跳转到qq,微信或者支付宝的时候,带上自己的url schemes,qq微信或者支付宝将我们带过去的参数url scheme保存了起来。等做完了相关的操作,触发返回操作的时候,qq,微信或者支付宝应该是直接调用了

     NSString *urlStr = @"我们的url schemes://";
       NSURL *url = [NSURL URLWithString:urlStr];
    [[UIApplication sharedApplication] openURL:url];
    

    说到这里就明白了。

    还有一个问题,为啥你跳转到qq,微信,支付宝,他们就能直接调用** [[UIApplication sharedApplication] openURL:url];跳转app,而不是先通过canOpenURL:**方法判断一下?因为你跳都跳过去了,说明短时间你的应用是不会卸载的,直接跳转肯定能跳转回来。即使你在跳转的前一步操作卸载了,你也得通过将qq压入后台,回到桌面,找到自己的应用的时候卸载吧,当你再回到qq的时候你会发现,qq的界面已经不是准备跳回的界面了,不给你返回的机会,这就是设计上避免了这种非正常的操作了。

    最后献上相关的<a href="https://github.com/RunOfTheSnail/App-A-Jump-App-B">Demo</a>
    App-A跳转到App-B,跳转的时候,App-A将自己的url Schemes当做参数传递给App-B,App-B获取到App-A的url Schemes之后保存起来,可以直接返回App-A
    注意:只有先通过App-A跳转到App-B之后<App-B获取到了App-A的url schemes>才能通过App-B跳转回App-A。

    相关文章

      网友评论

      本文标题:app跳转到QQ,微信,支付宝等之后是怎么返回来的

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