WKWebView JavaScript将消息发送到Objective-C并返回值

WKWebView JavaScript将消息发送到Objective-C并返回值,javascript,objective-c,wkwebview,Javascript,Objective C,Wkwebview,如何使用WKWebView,JavaScript将消息发送到Objective-C并返回值 像这样: NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"]; WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:W

如何使用WKWebView,JavaScript将消息发送到Objective-C并返回值

像这样:

NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"];

WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];

[config.userContentController addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"iOS"];

[config.userContentController addUserScript:wkUScript];

WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT) configuration:config];
让result=window.webkit.messageHandlers.name.postMessage()

添加名为的脚本消息处理程序 使JavaScript函数window.webkit.messageHandlers.name.postMessage(messageBody)在使用用户内容控制器的所有web视图的所有帧中定义


我找到了另一种方法,通过将WKUserScriptInjectionTimeAtDocumentStart参数插入js到web的本地存储中。 像这样:

NSString *token = [NSString stringWithFormat:@"localStorage.setItem(\"accessToken\",'%@');",@"74851c23358c"];

WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:sendToken injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];

[config.userContentController addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"iOS"];

[config.userContentController addUserScript:wkUScript];

WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT) configuration:config];

这不是我想要的结果。