当前位置: 首页 > news >正文

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

相关文章:

  • react简书
  • UI优化策略-UI性能优化技巧
  • pygame中多个class类之间的关系
  • Luogu 1341 无序字母对 - 欧拉路径
  • Hadoop HDFS 文件系统的存储哲学
  • 牛客国庆集训派对Day1-New Game!(几何+最短路)
  • 寻找最长回文字符串
  • JavaScript 中 this的指向
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • Java 里如何实现线程间通信
  • Django框架-AJAX
  • P1044 栈 洛谷(数论)(卡特兰数)
  • 矩阵运算
  • MySQL之架构与历史(一)
  • 函数指针
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Angularjs之国际化
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • linux学习笔记
  • python_bomb----数据类型总结
  • unity如何实现一个固定宽度的orthagraphic相机
  • Yeoman_Bower_Grunt
  • 百度小程序遇到的问题
  • 观察者模式实现非直接耦合
  • 那些年我们用过的显示性能指标
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信小程序开发问题汇总
  • 携程小程序初体验
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​一些不规范的GTID使用场景
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (9)目标检测_SSD的原理
  • (BFS)hdoj2377-Bus Pass
  • (C++17) optional的使用
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十)c52学习之旅-定时器实验
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)RocketMQ初步认识
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net程序集学习心得
  • .net反混淆脱壳工具de4dot的使用
  • .NET设计模式(11):组合模式(Composite Pattern)
  • /etc/skel 目录作用
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh