IOS中 webView 获取 后台JS返回的方法
1.首先导入类库
#import <JavaScriptCore/JavaScriptCore.h>
2.声明属性
@property (nonatomic, strong) JSContext *jsContext;
3.在webviewDidFinshLoad中实现截获JS返回的方法做进一步的本地处理
if(!self.jsContext)
{
self.jsContext = [webView valueForKeyPath :@"documentView.webView.mainFrame.javaScriptContext"];
}
[self addShareWithContext:self.Context];
4.实现自定义addShareWithContext方法(在这个方法中会获取JS返回前端的方法,可以做下一步本地操作)
/**
context[@"notifyAppCartCount"] 其中notifyAppCartCount是后台JS返回的方法名 我们根据context就可以截获该方法
^(NSNumber *count)这里block回调中做下一步本地操作即可
这里的block参数(NSNumber)是JS返回的数据类型 count 是JS返回的值 (如果只需要截获方法 JS没有返回值则可以随便自定义类型)
*/
- (void)addShareWithContext:(JSContext *)context
{
__weak typeof(self) weakSelf = self;
// 创建函数
context[@"notifyAppCartCount"] = ^(NSNumber *count){
//下面是根据自己的需求做相应的本地操作处理
weakSelf.cartCount = count;
NSDictionary *dict = @{@"cartCount":count};
[[NSNotificationCenter defaultCenter] postNotificationName:kShopCartCountNotificationName object:weakSelf.cartCount userInfo:dict];
NSLog(@"购物车变化%@", count);
};
}