[ 
https://issues.apache.org/jira/browse/CB-6884?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14038117#comment-14038117
 ] 

Shazron Abdullah edited comment on CB-6884 at 7/14/14 7:06 PM:
---------------------------------------------------------------

Work in progress: https://git-wip-us.apache.org/repos/asf/cordova-ios.git 
branch "wkwebview"

Known issue currently: callbacks don't fire.

Core plugins seem to work. However, CDVPlugin's webView property even though it 
is declared as a UIWebView, is actually a WKWebView in this branch. It has to 
be explicitly coerced to a WKWebView. 

If the plugin uses any selectors from UIWebView in referencing the webView 
property, it may crash.

Config.xml processing for preferences is turned off for now.


was (Author: shazron):
Work in progress in my fork: 
https://github.com/shazron/cordova-ios/tree/wkwebview-only

Known issue currently: callbacks don't fire.

Core plugins seem to work. However, CDVPlugin's webView property even though it 
is declared as a UIWebView, is actually a WKWebView in this branch. It has to 
be explicitly coerced to a WKWebView. 

If the plugin uses any selectors from UIWebView in referencing the webView 
property, it may crash.

Config.xml processing for preferences is turned off for now.

> Support new Cordova bridge under iOS 8 WKWebView
> ------------------------------------------------
>
>                 Key: CB-6884
>                 URL: https://issues.apache.org/jira/browse/CB-6884
>             Project: Apache Cordova
>          Issue Type: Sub-task
>          Components: CordovaJS, iOS
>         Environment: iOS 8 beta 2
>            Reporter: Shazron Abdullah
>            Assignee: Shazron Abdullah
>
> https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-8.0/index.html
> WKUserContentController - add a script message handler with name "cordova":
> https://developer.apple.com/library/prerelease/ios/documentation/WebKit/Reference/WKUserContentController_Ref/index.html#//apple_ref/swift/cl/WKUserContentController
> The WKUserContentController is associated with a WKWebViewConfiguration which 
> is initialized with a WKWebView.
> {code}
> WKUserContentController* userContentController = [[WKUserContentController 
> alloc] init];
> // scriptMessageHandler is the object that conforms to the 
> WKScriptMessageHandler protocol
> // see 
> https://developer.apple.com/library/prerelease/ios/documentation/WebKit/Reference/WKScriptMessageHandler_Ref/index.html#//apple_ref/swift/intf/WKScriptMessageHandler
> [userContentController addScriptMessageHandler:scriptMessageHandler 
> name:@"cordova"];
> {code}
> In JavaScript, you would call into Objective-C thus:
> {code}
> var command = { callbackId: "blabla23", service:"Camera", action: 
> "takePicture", actionArgs: [ 1, 2, 3 ] };
> window.webkit.messageHandlers.cordova.postMessage(command);
> {code}
> In the object that conforms to the WKScriptMessageHandler protocol:
> {code}
> - (void)userContentController:(WKUserContentController 
> *)userContentController   didReceiveScriptMessage:(WKScriptMessage *)message
> {
>     if (![message.name isEqualToString:@"cordova"]) {
>         return;
>     }
>     NSDictionary* command = message.body;
>     // TODO: get the callbackId, service, action, actionArgs keys and create 
> a CDVInvokedUrlCommand, and dispatch it
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to