要实现Angular/HTML5与iOS WKWebView之间的通信,可以使用JavaScript与Objective-C之间的交互方式。以下是一个解决方案的示例代码:
在HTML页面中:
// 发送消息给iOS
function sendMessageToiOS(message) {
    window.webkit.messageHandlers.iOSNative.postMessage(message);
}
// 接收来自iOS的消息
function receiveMessageFromiOS(message) {
    console.log('Received message from iOS:', message);
}
在Angular组件中:
import { Component } from '@angular/core';
// 发送消息给iOS
function sendMessageToiOS(message) {
    window.webkit.messageHandlers.iOSNative.postMessage(message);
}
// 接收来自iOS的消息
function receiveMessageFromiOS(message) {
    console.log('Received message from iOS:', message);
}
@Component({
  selector: 'app-root',
  template: `
    
  `
})
export class AppComponent {
  sendMessageToiOS(message) {
    sendMessageToiOS(message);
  }
  receiveMessageFromiOS(message) {
    receiveMessageFromiOS(message);
  }
}
在iOS中:
#import 
@interface ViewController : UIViewController
@property (nonatomic, strong) WKWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    [config.userContentController addScriptMessageHandler:self name:@"iOSNative"];
    self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:config];
    self.webView.UIDelegate = self;
    self.webView.navigationDelegate = self;
    [self.view addSubview:self.webView];
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSURL *htmlURL = [NSURL fileURLWithPath:htmlPath];
    [self.webView loadRequest:[NSURLRequest requestWithURL:htmlURL]];
}
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"iOSNative"]) {
        NSLog(@"Received message from HTML: %@", message.body);
        // 执行iOS相关操作
    }
}
@end
  这样,你就可以在Angular/HTML页面中调用sendMessageToiOS函数发送消息给iOS,并在iOS的didReceiveScriptMessage方法中接收并处理消息。