以前用得不多,先开一篇,以后有遇到再补充。
1、JS 调用 OC
1-1)、添加 和 JS 约定的消息名
- [self.userContentController addScriptMessageHandler:self name:@"约定的消息名"];
1-2)、得到 JS 消息
- #pragma mark - WKScriptMessageHandler
- - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
- {
- if ([message.name isEqualToString:@"约定的消息名"]) {
- NSLog(@"当前的消息为:%@", message.body[@"约定的key"]);
- }
- }
1-3)、移除
- - (void)viewWillDisappear:(BOOL)animated{
- [super viewWillDisappear:animated];
-
- [self.userContentController removeScriptMessageHandlerForName:@"约定的消息名"];
- }
补充:这步最为重要,如果不移除,将得不到释放,比如H5的音乐在退出该VC(dealloc) 还会一直响。
附:JS代码
- function isAndroid(argument) {
- var u = navigator.userAgent;
- var flag = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
- return flag;
- }
-
- function isIOS(argument) {
- var u = navigator.userAgent;
- var flag = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
- return flag;
- }
-
- function share(要传的value) {
- if(isAndroid()){
-
- } else if(isIOS()) {
- window.webkit.messageHandlers.约定的消息名.postMessage({
- "要传的key": 要传的value
- });
- }
- }