设为首页 加入收藏

TOP

Hybrid APP基础篇(五)->JSBridge实现示例(六)
2017-10-11 15:24:32 】 浏览:8350
Tags:Hybrid APP 基础 -> JSBridge 实现 示例
[self sendData:nil responseCallback:nil handlerName:@"_disablejava scriptAlertBoxSafetyTimeout"]; } // Private // ------------------------------------------- - (void) _eva luatejava script:(NSString *)java scriptCommand { [self.delegate _eva luatejava script:java scriptCommand]; } - (void)_queueMessage:(WVJBMessage*)message { // if (self.startupMessageQueue) { // [self.startupMessageQueue addObject:message]; // } else { // [self _dispatchMessage:message]; // } [self _dispatchMessage:message]; } - (void)_dispatchMessage:(WVJBMessage*)message { NSString *messageJSON = [self _serializeMessage:message pretty:NO]; [self _log:@"SEND" json:messageJSON]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\r" withString:@"\\r"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\f" withString:@"\\f"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\u2028" withString:@"\\u2028"]; messageJSON = [messageJSON stringByReplacingOccurrencesOfString:@"\u2029" withString:@"\\u2029"]; NSString* java scriptCommand = [NSString stringWithFormat:@"JSBridge._handleMessageFromNative('%@');", messageJSON]; if ([[NSThread currentThread] isMainThread]) { [self _eva luatejava script:java scriptCommand]; } else { dispatch_sync(dispatch_get_main_queue(), ^{ [self _eva luatejava script:java scriptCommand]; }); } } - (NSString *)_serializeMessage:(id)message pretty:(BOOL)pretty{ return [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:message options:(NSJSONWritingOptions)(pretty ? NSJSONWritingPrettyPrinted : 0) error:nil] encoding:NSUTF8StringEncoding]; } - (NSArray*)_deserializeMessageJSON:(NSString *)messageJSON { return [NSJSONSerialization JSONObjectWithData:[messageJSON dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil]; } - (void)_log:(NSString *)action json:(id)json { if (!logging) { return; } if (![json isKindOfClass:[NSString class]]) { json = [self _serializeMessage:json pretty:YES]; } if ([json length] > logMaxLength) { NSLog(@"WVJB %@: %@ [...]", action, [json substringToIndex:logMaxLength]); } else { NSLog(@"WVJB %@: %@", action, json); } } @end

WebViewjava scriptBridgeBase是JSBridge逻辑代码的基础支持,也就是说这里面封装一些基础的代码,供JSBridge内部调用

WebViewjava scriptBridge 实现

实现代码如下

#if __has_feature(objc_arc_weak)
    #define WVJB_WEAK __weak
#else
    #define WVJB_WEAK __unsafe_unretained
#endif

@implementation WebViewjava scriptBridge {
    WVJB_WEAK WVJB_WEBVIEW_TYPE* _webView;
    WVJB_WEA
首页 上一页 3 4 5 6 7 8 下一页 尾页 6/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇全球首个实战类微信小程序开发教程 下一篇微信小程序组件scroll-view

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目