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);

    };

}

posted @ 2017-11-06 11:10  代号姜姜程序员  阅读(1047)  评论(0编辑  收藏  举报