iOS客户端与网页交互文档

很少和客户端打交道,这次由于做会活动,要和客户端配合做个分享的功能

这里总结下基本的流程,就是前端在H5 里调用客户端的方法即可

第一部分 客户端提供需求文档

网页请求设置

  1. 客户端发起请求时在HTTP Header中设置UA标识为tianqiwang_ios
  2. 客户端在header中添加名为mp字段。字段内容为:{ "versionCode":"", "versionName":"4.6", "channel":"appStore", "imei":"123456789" } 字段经过base64加密。(iOS无versionCode概念,故该字段为空字符串)

客户端与网页通信

  1. 客户端初始化webView时注册名为webView2345KWApp的messageHandler用于支持2345自运营网页调用原生方法。前端可通过window.webkit.messageHandlers.webView2345KWApp.postMessage()向客户端发送消息。
  2. 前端发送数据格式。每条数据都应包括method字段,指定调用那个原生方法。可参考以下格式:
  3. { "method": "onShareClick", /* 必选 */"title": "后裔射日活动", "detail": "中秋活动", "url": "http://ww1.sinaimg.cn/large/0065oQSqly1ft3fna1ef9j30s210skgd.jpg", "imgUrl":"http://ww1.sinaimg.cn/large/0065oQSqly1ft3fna1ef9j30s210skgd.jpg", "supportPlatformType": ["Wechat","WechatMoments","QQ","QZone","SinaWeibo","ShortMessage"] }
  4. 客户端调用网页方法时,需网页定义好相应的js方法。将方法名称,调用参数、调用时机告知客户端即可。

已有交互方法

  • 调用原生分享功能

场景:点击h5页面分享按钮,调起原生分

参数名详情
method调用的方法名(onShareClick)
title分享的标题
detail分享的详细内容
url分享的url(已url encode过)
imgUrl分享时显示的图片地址
supportPlatformType该分享支持的平台
  • 客户端通知分享是否成功

场景: 用户分享后通知网页,客户端调用onShareCallback(int resultCode,String platformType)方法

参数名详情
resultCode分享状态(1:成功 2:失败 3:取消)
platformType分享的平台 可选值:"Wechat","WechatMoments","QQ","QZone","SinaWeibo","ShortMessage"
  • 客户端检查网页支持分享的平台

场景: 网页加载完成后,客户端调用js方法onCheckShare()检查网页需要分享的内容,以便用户点击原生页面分享时使用。网页需返回包含以下参数的JSON对象。

参数名详情
title分享的标题
detail分享的详细内容
url分享的url(已url encode过)
imgUrl分享时显示的图片地址
supportPlatformType该分享支持的平台

 

 

 

第二部分 js里去调用客户端方法

html

<button id="btn1">test</button>
<div id="callback1"></div>

js

点击之后的回调函数:

window.callback = function(data) {
  document.getElementById('callback1').innerText = JSON.stringify(data);
};

点击调用客户端的方法:
$("#btn1").click(function(){
  try {
    window.webkit.messageHandlers.webView2345KWApp.postMessage({
    method: 'onShareClick',
    params: {
      title: '分享测试',
      detail: '揭秘前世今生六道轮回',
      url: 'http://www.77tianqi.com/frame/sm/pcqianshi',
      imgUrl: 'http://www.77tianqi.com/images/prediction/qianshi/ming.png',
      supportPlatformType: ["Wechat", "WechatMoments", "QQ", "QZone", "SinaWeibo", "ShortMessage"]
    },
      callback: 'callback'
    });
  } catch (e) {
    window.callback(e.message);
    }
  })
一进入页面 客户端会向H5注入一个对象,里面存储了用户的设备信息,是base64 加密过的,需要会解密下,这里推荐Base64.js

引入后直接调用即可

Base64.decode(mobileKWInjectConfig);//mobileKWInjectConfig客户端注入对象

后来得知H5和客户端交互用的最多的方法如下:

1.H5通知Native拦截返回事件,调用这个方法后Native的返回事件会调起H5的某个回调方法

2.版本号,包括内部版本号
3..获取app基本信息
4.用户登录信息
5.登录、登出
6.跳转至“首页”,跳转至“我的”
7.复制字符串
8.调起电话

9.获取appUA、获取用户cookie
10.跳转app登录
11.分享成功回调
12.告知app数据变化以刷新所有页面

希望有机会去一一尝试然后做个总结。

转载于:https://www.cnblogs.com/xuniannian/p/9719848.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS中,可以通过WKWebView与JavaScript进行交互传值。以下是一些常见的方法: 1. 使用JavaScriptCore框架:在iOS 7及以上版本中,可以使用JavaScriptCore框架来实现WKWebView与JS的交互传值。具体实现步骤如下: (1)在iOS中创建一个JSContext实例,通过该实例可以操作JS环境。 (2)将JSContext实例设置到WKWebView的配置对象中。 (3)在JS中调用iOS方法时,可以通过window.webkit.messageHandlers对象进行调用,例如window.webkit.messageHandlers.methodName.postMessage(params)。 (4)在iOS中,可以通过WKScriptMessageHandler代理方法来接收JS传递的消息,并进行处理。 2. 使用WKScriptMessageHandler协议:在iOS 8及以上版本中,可以通过WKScriptMessageHandler协议来实现WKWebView与JS的交互传值。具体实现步骤如下: (1)在WKWebView的配置对象中设置WKUserContentController的代理对象,并添加需要监听的JS方法名。 (2)在JS中调用iOS方法时,可以通过window.webkit.messageHandlers对象进行调用,例如window.webkit.messageHandlers.methodName.postMessage(params)。 (3)在iOS中,可以通过WKScriptMessageHandler代理方法来接收JS传递的消息,并进行处理。 无论使用哪种方法,都需要注意JS和iOS之间传递的数据类型和格式。通常,JS传递的是字符串类型的数据,在iOS中需要进行解析和转换。同时,为了避免安全问题,需要对JS传递的数据进行校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值