iOS通知和页面pop时间差引发的BUG

H5页面跳转原生页面,原生页面使用通知Notifacation通知H5页面某个动作完成,然后pop回H5页面,在H5页面的通知方法中调用js代码,js function调用出错。因为当时前端开发反馈OC调用js,js代码已经执行,所以想这个问题花了一些时间,具体错误如下:

调用WKWebview的evaluateJavaScript的时候老是报错:Error Domain=WKErrorDomain Code=4 "发生JavaScript异常" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=ReferenceError: Can't find variable: onLoginSuccess, WKJavaScriptExceptionColumnNumber=15, WKJavaScriptExceptionSourceURL=*****NSLocalizedDescription=发生JavaScript异常}

},

这里面的问题原因是:evaluateJavaScript去调用h5中的方法之后,这个function要执行完成之后才会回调的app这边,如果这个function中报错了,回调到app这边就会一直报错。所以建议function中的东西可以先延迟执行。

-(void)noticeMethod

{

Dispatch_after(dispatch_time(DISPATCH_NOW,(int64_t)(0.5*NSEC_PER_SEC)),dispatch_get_main_queue(),^{

 oc call js

});

}

通知发送接收执行的速度比页面之间的速度更快,导致页面还停留在原生页面,h5方法调用已经执行,造成报错,无法执行,通过延时处理可以解决这个问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容