H5页面对接React Native App

这篇博客详细记录了H5页面使用ant design mobile框架对接React Native App过程中遇到的问题与解决方案,包括移动端调试工具vconsole的使用,通过postMessage进行页面通讯,解决安卓端fastclick报错、软键盘遮挡input、文件上传和大小计算等问题,以及安卓端文件选择权限问题的分析。同时,还提及了iOS端尚待解决的软键盘遮挡问题。
摘要由CSDN通过智能技术生成

H5页面开发笔记

本次开发一个H5页面,H5页面用的框架是ant design mobile,对接的是react native 开发的App 程序,其中遇到了一点坑,在此记录一下。

移动端调试神器vconsole

// 安装vconsole 
npm install vconsole --save

// 引入项目当中
import Vconsole from 'vconsole'
const vConsole = new Vconsole()  

// 然后console.log()的日志就可以通过vconsole 输出在移动端了
console.log('移动端可见日志')

// 如果是使用VUE框架,可以在main.js中加入如下代码
Vue.use(vConsole)

通过postMessage与app页面通讯

通讯总共包含如下三个步骤

  1. H5页面在组件挂载之后,注册监听程序,以便接收App发送的数据
  2. 通过window.postMessage方法给App发送请求
  3. App在接受到H5的请求之后,解析命令,返回H5所需要的数据
  4. H5通过receiveMessage 处理接收到的数据

具体样例代码如下:

// 判断是否是IOS操作系统
const isIosDev = () => {
   
  let u = navigator.userAgent
  let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  return isIOS;
}
const isIos = isIosDev()

// 与app约定的构造命令的函数
const createCommand = (command, params) => {
   
  return JSON.stringify({
   
    command: command,
    params: params,
  });
}

const postMessage = (command, params) => {
   
	// 注意!!!此处需要异步,200ms以后发送请求,app那边才可以收到请求
    setTimeout(() => {
   
      window.postMessage(createCommand(command, params), "*");
    }, 200);
}

const receiveMessage = (event) => {
   
    console.log('-------receiveMessage接受到的信息 -----------')
    console.log(event.data)
    const data = event.data
    if (typeof data === 'string') {
   
      try {
   
        const jsonData = JSON.parse(data)
        const {
    command, params = {
   } } = jsonData
        // 与APP测约定command_accept_info命令为所需接收的命令
        if (command === 'command_accept_info') {
   
			console.log('处理后续接收到的params')
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值