-[PSDScriptMessageHandlerProxy userContentController:didReceiveScriptMessage:]

 

h5调用原生代码 逻辑 粗略查看

 

void -[PSDScriptMessageHandlerProxy userContentController:didReceiveScriptMessage:](void * self, void * _cmd, void * arg2, void * arg3) 

 

先判断 PSDBRIDGEMESSAGEHANDLER

取type  queue

type 判断是 api

取msgKt  

shouldCallJSAPIWithToken是1 调用@selector(flushMessageQueueWithMessage:url:)

否则记录PSD_JsApi_Call_Without_Token  @selector(doLogWithLogId:params:)

 

@"monitor" 调用@selector(_doFlushMonitorMessageQueue:url:)

 

PSDBRIDGEDOMREADY 的时候

    rbx = [[PSDPageEvent loadDomReadyEvent] retain];//没啥有用信息

    [r15 dispatchEvent:rbx];

 

PSDXMLHTTPREQUESTMESSAGE 的时候

取值

    var_-112 = [[r15 objectForKeyedSubscript:@"msgId"] retain];

    r14 = [[r15 objectForKeyedSubscript:@"msgKt"] retain];

    var_-104 = [[r15 objectForKeyedSubscript:@"val"] retain];

    var_-152 = [[r15 objectForKeyedSubscript:@"type"] retain];

 

取msgRequestUrl   执行@"window.NebulaXMLHttpRequestMessageBridge.triggerMessageCallBack('%@','%@')"没有有用信息

 

后面还有记日志的方法。

 

 

void -[PSDScriptMessageHandlerProxy userContentController:didReceiveScriptMessage:](void * self, void * _cmd, void * arg2, void * arg3) {
    r14 = [arg3 retain];
    var_-120 = self;
    r15 = [[self psdView] retain];
    var_-128 = r14;
    if (r15 == 0x0) goto loc_10102b936;

loc_10102b693:
    rbx = [[r14 name] retain];
    r12 = [rbx isEqualToString:@"PSDBRIDGEMESSAGEHANDLER"];
    [rbx release];
    [r15 release];
    if (r12 == 0x0) goto loc_10102b93f;

loc_10102b6e5:
    r14 = [[var_-128 body] retain];
    r15 = [[var_-128 frameInfo] retain];
    r12 = [[r15 request] retain];
    rbx = [[r12 URL] retain];
    var_-104 = [[rbx absoluteString] retain];
    [rbx release];
    [r12 release];
    [r15 release];
    rax = [NSDictionary class];
    rsi = @selector(isKindOfClass:);
    rdx = rax;
    if (_objc_msgSend(r14, rsi, rdx) == 0x0) goto loc_10102bf14;

loc_10102b7a4:
    var_-152 = r14;
    rbx = [r14 retain];
    r15 = [[rbx objectForKey:@"type"] retain];
    var_-112 = [[rbx objectForKey:@"queue"] retain];
    rdx = [NSString class];
    rax = [r15 isKindOfClass:rdx];
    var_-176 = rbx;
    if (rax == 0x0) goto loc_10102bd0a;

loc_10102b827:
    rdx = @"api";
    if ([r15 isEqualToString:rdx] == 0x0) goto loc_10102bd0a;

loc_10102b846:
    var_-160 = r15;
    rdx = @"msgKt";
    var_-136 = [[rbx objectForKey:rdx] retain];
    rbx = [[var_-128 webView] retain];
    r12 = [_PSGetTokenWithContentView(rbx) retain];
    [rbx release];
    rbx = [_PSDConfigurationGet() retain];
    r15 = [rbx shouldCallJSAPIWithToken];
    [rbx release];
    if (r15 != 0x0) {
            r14 = var_-136;
            if ((r14 != 0x0) && (r12 != 0x0)) {
                    rdx = r12;
                    if ([r14 isEqualToString:rdx] != 0x0) {
                            rsi = @selector(flushMessageQueueWithMessage:url:);
                            rdx = var_-112;
                            rcx = var_-104;
                            _objc_msgSend(var_-120, rsi);
                    }
                    else {
                            var_-120 = [[PSDLogger shareInstance] retain];
                            var_-64 = @"logStr";
                            r15 = [[NSString stringWithFormat:@"msg=%@", var_-112] retain];
                            var_-56 = r15;
                            rbx = [[NSDictionary dictionaryWithObjects:&var_-56 forKeys:&var_-64 count:0x1] retain];
                            rsi = @selector(doLogWithLogId:params:);
                            rdx = @"PSD_JsApi_Call_Without_Token";
                            rcx = rbx;
                            _objc_msgSend(var_-120, rsi, rdx, rcx);
                            [rbx release];
                            [r15 release];
                            r14 = var_-136;
                            [var_-120 release];
                    }
            }
            else {
                    var_-120 = [[PSDLogger shareInstance] retain];
                    var_-64 = @"logStr";
                    r15 = [[NSString stringWithFormat:@"msg=%@", var_-112] retain];
                    var_-56 = r15;
                    rbx = [[NSDictionary dictionaryWithObjects:&var_-56 forKeys:&var_-64 count:0x1] retain];
                    rsi = @selector(doLogWithLogId:params:);
                    rdx = @"PSD_JsApi_Call_Without_Token";
                    rcx = rbx;
                    _objc_msgSend(var_-120, rsi, rdx, rcx);
                    [rbx release];
                    [r15 release];
                    r14 = var_-136;
                    [var_-120 release];
            }
    }
    else {
            rsi = @selector(flushMessageQueueWithMessage:url:);
            rdx = var_-112;
            rcx = var_-104;
            _objc_msgSend(var_-120, rsi);
            r14 = var_-136;
    }
    [r12 release];
    [r14 release];
    goto loc_10102beeb;

loc_10102beeb:
    r14 = var_-152;
    r15 = var_-160;
    goto loc_10102bef9;

loc_10102bef9:
    [var_-112 release];
    [r15 release];
    [var_-176 release];
    goto loc_10102bf14;

loc_10102bf14:
    [var_-104 release];
    [r14 release];
    goto loc_10102bf1f;

loc_10102bf1f:
    r13 = var_-128;
    goto loc_10102c2fc;

loc_10102c2fc:
    [r13 release];
    if (*___stack_chk_guard != *___stack_chk_guard) {
            __stack_chk_fail();
    }
    return;

loc_10102bd0a:
    rax = [NSString class];
    rsi = @selector(isKindOfClass:);
    rdx = rax;
    r14 = var_-152;
    if (_objc_msgSend(r15, rsi, rdx) == 0x0) goto loc_10102bef9;

loc_10102bd36:
    rdx = @"monitor";
    rsi = @selector(isEqualToString:);
    if (_objc_msgSend(r15, rsi) == 0x0) goto loc_10102bef9;

loc_10102bd55:
    var_-160 = r15;
    r15 = [[var_-120 psdView] retain];
    rbx = [[r15 page] retain];
    r12 = [[rbx bridge] retain];
    [rbx release];
    [r15 release];
    rsi = @selector(respondsToSelector:);
    rdx = @selector(_doFlushMonitorMessageQueue:url:);
    if (_objc_msgSend(r12, rsi, rdx, rcx) != 0x0) {
            rsi = @selector(performSelector:withObject:withObject:);
            rdx = @selector(_doFlushMonitorMessageQueue:url:);
            _objc_msgSend(r12, rsi, rdx, var_-112);
    }
    [r12 release];
    goto loc_10102beeb;

loc_10102b93f:
    r13 = var_-120;
    r12 = [[r13 psdView] retain];
    if (r12 != 0x0) {
            rbx = [[var_-128 name] retain];
            r15 = [rbx isEqualToString:@"PSDBRIDGEDOMREADY"];
            [rbx release];
    }
    else {
            r15 = 0x0;
    }
    [r12 release];
    r12 = [[r13 psdView] retain];
    if (r15 == 0x0) goto loc_10102ba3a;

loc_10102b9d1:
    r15 = [[r12 page] retain];
    rbx = [[PSDPageEvent loadDomReadyEvent] retain];
    [r15 dispatchEvent:rbx];
    [rbx release];
    [r15 release];
    [r12 release];
    goto loc_10102bf1f;

loc_10102ba3a:
    r13 = var_-128;
    if (r12 == 0x0) goto loc_10102bd02;

loc_10102ba47:
    rbx = [[r13 name] retain];
    r15 = [rbx isEqualToString:@"PSDXMLHTTPREQUESTMESSAGE"];
    [rbx release];
    [r12 release];
    if (r15 == 0x0) goto loc_10102c2fc;

loc_10102ba99:
    rbx = [[r13 body] retain];
    if ([rbx isKindOfClass:[NSDictionary class]] == 0x0) goto loc_10102c2f3;

loc_10102bae4:
    r15 = [[r13 webView] retain];
    [r15 release];
    if (r15 == 0x0) goto loc_10102c2f3;

loc_10102bb11:
    var_-176 = rbx;
    r15 = [rbx retain];
    var_-112 = [[r15 objectForKeyedSubscript:@"msgId"] retain];
    r14 = [[r15 objectForKeyedSubscript:@"msgKt"] retain];
    var_-104 = [[r15 objectForKeyedSubscript:@"val"] retain];
    var_-152 = [[r15 objectForKeyedSubscript:@"type"] retain];
    rbx = [[r13 webView] retain];
    r13 = [_PSGetTokenWithContentView(rbx) retain];
    [rbx release];
    var_-160 = r14;
    rdx = r14;
    r14 = _objc_msgSend;
    r12 = var_-104;
    if ([r13 isEqualToString:rdx] == 0x0) goto loc_10102c2b7;

loc_10102bbfd:
    var_-136 = r13;
    r12 = [(r14)(@class(PSDLogger), @selector(shareInstance), rdx) retain];
    var_-80 = @"logStr";
    r13 = r15;
    r15 = [(r14)(@class(NSString), @selector(stringWithFormat:), @"msg=%@", r15) retain];
    var_-72 = r15;
    rbx = [(r14)(@class(NSDictionary), @selector(dictionaryWithObjects:forKeys:count:), &var_-72, &var_-80, 0x1) retain];
    (r14)(r12, @selector(doLogWithLogId:params:), @"PSD_WK_MESSAGE_RECEIVED", rbx);
    [rbx release];
    [r15 release];
    [r12 release];
    r12 = var_-152;
    if ((r14)(r12, @selector(isEqualToString:), @"FormElement") == 0x0) goto loc_10102bf28;

loc_10102bcdb:
    [var_-120 handleFormData:r13];
    r15 = r13;
    goto loc_10102bcf2;

loc_10102bcf2:
    r12 = var_-104;
    r13 = var_-136;
    goto loc_10102c2b7;

loc_10102c2b7:
    [r13 release];
    [var_-152 release];
    [r12 release];
    [var_-160 release];
    [var_-112 release];
    [r15 release];
    r13 = var_-128;
    rbx = var_-176;
    goto loc_10102c2f3;

loc_10102c2f3:
    rdi = rbx;
    goto loc_10102c2f6;

loc_10102c2f6:
    [rdi release];
    goto loc_10102c2fc;

loc_10102bf28:
    var_-168 = r13;
    if ([var_-112 length] == 0x0) goto loc_10102c080;

loc_10102bf4c:
    var_-144 = [[var_-168 objectForKeyedSubscript:@"msgRequestUrl"] retain];
    r15 = [[PSDProxyWKCacheManager sharedInstance] retain];
    [r15 addInfoWithKey:var_-112 charset:0x4 info:var_-104 dataType:r12 requestUrl:stack[2048] sourceType:stack[2049]];
    rsp = (rsp - 0x10) + 0x10;
    [r15 release];
    r15 = [[var_-120 psdView] retain];
    r13 = [[r15 contentView] retain];
    rbx = [[NSString stringWithFormat:@"window.NebulaXMLHttpRequestMessageBridge.triggerMessageCallBack('%@','%@')", var_-112, var_-136] retain];
    [r13 evaluateJavaScript:rbx completionHandler:^ {/* block implemented at ___78-[PSDScriptMessageHandlerProxy userContentController:didReceiveScriptMessage:]_block_invoke */ } }];
    r12 = var_-104;
    [rbx release];
    rdi = r13;
    r13 = var_-136;
    [rdi release];
    rdi = r15;
    r15 = var_-168;
    [rdi release];
    [var_-144 release];
    goto loc_10102c2b7;

loc_10102c080:
    rax = [r12 isEqualToString:@"cookie"];
    r15 = var_-168;
    r12 = var_-104;
    r13 = var_-136;
    if (rax == 0x0) goto loc_10102c2b7;

loc_10102c0b4:
    r13 = [[r15 objectForKeyedSubscript:@"cookie"] retain];
    r15 = [[r15 objectForKeyedSubscript:@"url"] retain];
    rax = [var_-128 webView];
    rax = [rax retain];
    var_-200 = rax;
    rbx = [[rax URL] retain];
    rdx = [NSString class];
    rax = [r13 isKindOfClass:rdx];
    var_-144 = r15;
    var_-192 = r13;
    if (((rax == 0x0) || ([r13 length] == 0x0)) || ([r15 length] == 0x0)) goto loc_10102c33b;

loc_10102c18e:
    r12 = [[rbx absoluteString] retain];
    if ([r12 length] == 0x0) goto loc_10102c32b;

loc_10102c1bb:
    rax = [rbx absoluteString];
    rax = [rax retain];
    var_-184 = rbx;
    rdx = @"about:blank";
    r15 = [rax isEqualToString:rdx];
    [rax release];
    [r12 release];
    COND = r15 != 0x0;
    r15 = var_-144;
    rbx = var_-184;
    if (!COND) {
            rdx = @"about:blank";
            r12 = _objc_msgSend;
            rbx = [[var_-128 frameInfo] retain];
            rax = [rbx request];
            rax = [rax retain];
            r13 = rax;
            r15 = [[rax URL] retain];
            var_-208 = rbx;
            if (r15 != 0x0) {
                    rbx = [(r12)(rbx, @selector(request), rdx) retain];
                    r12 = [(r12)(rbx, @selector(URL), rdx) retain];
                    [rbx release];
            }
            else {
                    r12 = [_PSDURLWithFixedString(var_-144) retain];
            }
            [r15 release];
            [r13 release];
            r13 = var_-184;
            rcx = r13;
            if (r12 != 0x0) {
                    rcx = r12;
            }
            rsi = @selector(handleCookieData:url:domainUrl:webview:);
            r14 = var_-192;
            rdx = r14;
            r8 = r13;
            r15 = var_-200;
            _objc_msgSend(var_-120, rsi);
            [r12 release];
            [var_-208 release];
            r12 = var_-144;
    }
    else {
            r12 = [[PSDLogger shareInstance] retain];
            var_-96 = @"logStr";
            rax = [NSString stringWithFormat:@"currentPageUrl=%@^mainDomainUrl=%@", r15, rbx];
            r15 = rbx;
            r13 = [rax retain];
            var_-88 = r13;
            r8 = 0x1;
            rbx = [[NSDictionary dictionaryWithObjects:&var_-88 forKeys:&var_-96 count:r8] retain];
            rdx = @"PSD_WK_COOKIE_ERROR";
            rsi = @selector(doLogWithLogId:params:);
            rcx = rbx;
            _objc_msgSend(r12, rsi, rdx, rcx);
            [rbx release];
            rdi = r13;
            r13 = r15;
            r14 = var_-192;
            [rdi release];
            rdi = r12;
            r12 = var_-144;
            [rdi release];
            r15 = var_-200;
    }
    goto loc_10102c405;

loc_10102c405:
    [r13 release];
    [r15 release];
    [r12 release];
    [r14 release];
    r15 = var_-168;
    goto loc_10102bcf2;

loc_10102c32b:
    [r12 release];
    r15 = var_-144;
    goto loc_10102c33b;

loc_10102c33b:
    r12 = [[PSDLogger shareInstance] retain];
    var_-96 = @"logStr";
    rax = [NSString stringWithFormat:@"currentPageUrl=%@^mainDomainUrl=%@", r15, rbx];
    r15 = rbx;
    r13 = [rax retain];
    var_-88 = r13;
    r8 = 0x1;
    rbx = [[NSDictionary dictionaryWithObjects:&var_-88 forKeys:&var_-96 count:r8] retain];
    rdx = @"PSD_WK_COOKIE_ERROR";
    rsi = @selector(doLogWithLogId:params:);
    rcx = rbx;
    _objc_msgSend(r12, rsi, rdx, rcx);
    [rbx release];
    rdi = r13;
    r13 = r15;
    r14 = var_-192;
    [rdi release];
    rdi = r12;
    r12 = var_-144;
    [rdi release];
    r15 = var_-200;
    goto loc_10102c405;

loc_10102bd02:
    rdi = r12;
    goto loc_10102c2f6;

loc_10102b936:
    [r15 release];
    goto loc_10102b93f;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值