美文网首页
判断支付宝是网页支付还是app支付

判断支付宝是网页支付还是app支付

作者: AI衣衣 | 来源:发表于2018-05-18 10:49 被阅读0次

    最近调用支付宝时因业务需求,需要判断支付宝是走网页支付还是走手机app支付,网上一搜一堆说的同样的方法,用判断scheme是否跳转的方式,代码如下:

    NSURL * myURL_APP_A = [NSURL URLWithString:@"alipay:"];
        if (![[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) {
            //如果没有安装支付宝客户端那么需要安装
            UIAlertView *message = [[UIAlertView alloc]initWithTitle:@"提示信息" message:@"点击确定安装支付宝钱包!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
            [message show];
            return;
        } 
    

    可是本人亲测,此法没用。无论手机是否安装支付宝app,他都会跳转到canOpenURL = Yes的状态。
    于是分析如果没安装支付宝时,支付宝弹出来网页,它是在支付的vc中加了一个WebView,找到源头,就可以判断如果有这个WebView,就说明是跳转的网页支付,如果没有,就是手机app支付。
    代码如下:

        AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        UIViewController *topVC = [delegate topViewController];
        if([topVC isKindOfClass:[self class]])
        {
            UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
            for(UIView *sbView in keyWindow.subviews)
            {
                for(UIView *sv in sbView.subviews)
                {
                    if([sv isKindOfClass:[UIWebView class]])
                    {
                        for(UIView *subV in sv.subviews)
                        {
                            // APH5ProgressView
                            if([subV isKindOfClass:NSClassFromString(@"APH5ProgressView")])
                            {
                                //支付宝网页付款进度条
                                return;
                            }
                            
                        }
                    }
                    
                }
            }
            
        }
    

    相关文章

      网友评论

          本文标题:判断支付宝是网页支付还是app支付

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