文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

9s4pe

http://sjzytwl.xhstdz.com/com9s4pe/

相关列表
文章列表
  • 暂无文章
推荐文章
iOS H5免登陆,同步APP登陆状态,OC和JS交互
发布时间:2025-01-02        浏览次数:2        返回列表

APP某个页面嵌入H5页面,当前H5页面拥有登陆状态。在此之前,用户进入本页面,即使用户在登陆状态,依然显示未登陆,所以需要把APP的登陆状态传给H5,达到免登陆目的。

下面的截图是我们APP的活动页面

目前主要的JS与OC相互调用方式主要有如下6种

  1. 在JS 中做一次URL跳转,然后在OC中拦截跳转。(这里分为UIWebView 和 WKWebView两种,UIWebView兼容iOS 6
  2. 利用WKWebView 的MessageHandler。
  3. 利用系统库JavascriptCore,来做相互调用。(iOS 7推出
  4. 利用第三方库WebViewJavascriptBridge。
  5. 利用第三方cordova库,以前叫PhoneGap。(这是一个库平台的库
  6. 当下盛行的React Native。

初步考虑,App兼容iOS7选择JavascriptCore方式,App只兼容iOS8以上,可以采用WKWebView,并使用MessageHandler方式。

因为我们前端H5采用的是把登陆状态token存放在session Storage里面,采用第二种方式是最简洁方便的。可能有些前端是从URL传登陆状态值的,那这种方式就更简单了,只要把请求URL拼接上APP登陆token(以上两种情况需要后端把APP和H5端登陆信息做统一接口才能最终达到目的。

好了废话不多说,上代码

先创建webview然后进行偏好设置configuration

 
 

在代理里面对H5页面的登陆按钮进行拦截

 
 

下面代码是修改title的kvo,不需要的可以忽略

 
 

然后是通知的回调

 
 

最后记得在dealloc里面进行销毁通知和KVO