设为首页 加入收藏

TOP

Hybrid APP基础篇(五)->JSBridge实现示例(五)
2017-10-11 15:24:32 】 浏览:8347
Tags:Hybrid APP 基础 -> JSBridge 实现 示例
copy]; message[@"callbackId"] = callbackId; } if (handlerName) { message[@"handlerName"] = handlerName; } [self _queueMessage:message]; } - (void)flushMessageQueue:(NSString *)messageQueueString{ if (messageQueueString == nil || messageQueueString.length == 0) { NSLog(@"WebViewjava scriptBridge: WARNING: ObjC got nil while fetching the message queue JSON from webview. This can happen if the WebViewjava scriptBridge JS is not currently present in the webview, e.g if the webview just loaded a new page."); return; } id messages = [self _deserializeMessageJSON:messageQueueString]; for (WVJBMessage* message in messages) { if (![message isKindOfClass:[WVJBMessage class]]) { NSLog(@"WebViewjava scriptBridge: WARNING: Invalid %@ received: %@", [message class], message); continue; } [self _log:@"RCVD" json:message]; NSString* responseId = message[@"responseId"]; if (responseId) { WVJBResponseCallback responseCallback = _responseCallbacks[responseId]; responseCallback(message[@"responseData"]); [self.responseCallbacks removeObjectForKey:responseId]; } else { WVJBResponseCallback responseCallback = NULL; NSString* callbackId = message[@"callbackId"]; if (callbackId) { responseCallback = ^(id responseData) { if (responseData == nil) { responseData = [NSNull null]; } WVJBMessage* msg = @{ @"responseId":callbackId, @"responseData":responseData }; [self _queueMessage:msg]; }; } else { responseCallback = ^(id ignoreResponseData) { // Do nothing }; } WVJBHandler handler = self.messageHandlers[message[@"handlerName"]]; if (!handler) { NSLog(@"WVJBNoHandlerException, No handler for message from JS: %@", message); continue; } handler(message[@"data"], responseCallback); } } } /*这段代码在本文中没有用到 * 因为再原项目中,JSBridge的js库是放在iOS本地沙盒中的,所以才需要手动注入 * 但是本文中的示例,JSBridge是直接在Html中引用的,所以无需注入 - (void)injectjava scriptFile { NSString *js = WebViewjava scriptBridge_js(); [self _eva luatejava script:js]; if (self.startupMessageQueue) { NSArray* queue = self.startupMessageQueue; self.startupMessageQueue = nil; for (id queuedMessage in queue) { [self _dispatchMessage:queuedMessage]; } } } */ -(BOOL)isCorrectProcotocolScheme:(NSURL*)url { if([[url scheme] isEqualToString:kCustomProtocolScheme]){ return YES; } else { return NO; } } -(BOOL)isQueueMessageURL:(NSURL*)url { if([[url host] isEqualToString:kQueueHasMessage]){ return YES; } else { return NO; } } -(BOOL)isBridgeLoadedURL:(NSURL*)url { return ([[url scheme] isEqualToString:kCustomProtocolScheme] && [[url host] isEqualToString:kBridgeLoaded]); } -(void)logUnkownMessage:(NSURL*)url { NSLog(@"WebViewjava scriptBridge: WARNING: Received unknown WebViewjava scriptBridge command %@://%@", kCustomProtocolScheme, [url path]); } -(NSString *)webViewjava scriptCheckCommand { return @"typeof WebViewjava scriptBridge == \'object\';"; } -(NSString *)webViewjava scriptFetchQueyCommand { return @"JSBridge._fetchQueue();"; } - (void)disableJavscriptAlertBoxSafetyTimeout {
首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇全球首个实战类微信小程序开发教程 下一篇微信小程序组件scroll-view

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目