ios 判断wkwebview有没有调用memberlogout post接口 object-c
要判断WKWebView是否调用了/member/logout post接口,可以通过WKScriptMessageHandler协议来实现。首先,需要设置WKWebView的configuration属性的userContentController的scriptMessageHandler属性,并实现WKScriptMessageHandler协议的方法。
示例代码如下:
- 创建一个类并实现WKScriptMessageHandler协议方法:
// MyScriptMessageHandler.h
#import <Foundation/Foundation.h>
#import <WebKit/WebKit.h>
@interface MyScriptMessageHandler : NSObject <WKScriptMessageHandler>
@property (nonatomic, strong) void (^logoutHandler)(void);
@end
// MyScriptMessageHandler.m
#import "MyScriptMessageHandler.h"
@implementation MyScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
if ([message.name isEqualToString:@"logout"]) {
// 调用了/logout接口
if (self.logoutHandler) {
self.logoutHandler();
}
}
}
@end
- 在需要使用WKWebView的地方,创建WKWebView并设置configuration的userContentController的scriptMessageHandler属性:
// ViewController.m
#import "ViewController.h"
#import <WebKit/WebKit.h>
#import "MyScriptMessageHandler.h"
@interface ViewController () <WKNavigationDelegate>
@property (nonatomic, strong) WKWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建WKWebView
self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
self.webView.navigationDelegate = self;
[self.view addSubview:self.webView];
// 设置WKWebView的configuration的userContentController的scriptMessageHandler属性
MyScriptMessageHandler *scriptMessageHandler = [[MyScriptMessageHandler alloc] init];
__weak typeof(self) weakSelf = self;
scriptMessageHandler.logoutHandler = ^{
// 处理/logout接口的逻辑
[weakSelf handleLogout];
};
[self.webView.configuration.userContentController addScriptMessageHandler:scriptMessageHandler name:@"logout"];
// 加载网页
NSURL *url = [NSURL URLWithString:@"https://example.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
- (void)dealloc {
// 移除scriptMessageHandler
[self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"logout"];
}
- (void)handleLogout {
// 处理/logout接口的逻辑
NSLog(@"调用了/logout接口");
}
@end
在上述代码中,我们创建了一个名为MyScriptMessageHandler的类,实现了WKScriptMessageHandler协议的方法。在didReceiveScriptMessage:方法中,我们判断了message.name是否为"logout",如果是,则说明调用了/logout接口。在ViewController中,我们设置了WKWebView的configuration的userContentController的scriptMessageHandler属性,并在handleLogout方法中处理/logout接口的逻辑。
通过以上代码,我们可以判断WKWebView是否调用了/member/logout post接口,并可以在handleLogout方法中进行相关处理
原文地址: http://www.cveoy.top/t/topic/iTkg 著作权归作者所有。请勿转载和采集!