window.ReactNativeWebView.postMessage( JSON.stringify({ action: String, payload: Object, }));
this.webref.injectJavaScript(` window.g_app._store.dispatch({ type: 'action的类型', payload: '携带的数据' }); true; `);
分享
、提交
等)h5
须要尽早向RN发送消息,告诉RN按钮的类型(最好constructor
中)web
{ action: 'sendHeaderButtonType', payload: { leftType:'左边按钮类型', rightType:'右边按钮类型', hideHeader: '布尔值', // true 隐藏header,可选 onPressType: '点击按钮触发的事件',// 同一种按钮,在不一样页面有不一样功能时,须要传这个值 headerBgColor: 'header的背景色的色值', //可选 } }
herder
状况下, hideHeader
: true
右边按钮是分享
:微信
rightType: 'share'
左边按钮是取消
,右边按钮是提交
:app
leftType:'cancel', rightType: 'submit', onPressType: 'consultDoctorSubmit' // 咨询医生提交订单
h5
向 RN
发送分享到微信
等第三方app的内容{ action:'sendShareMessage'`, payload:{shareTitle:'分享的标题',shareContent:'分享的剪短的内容(不超过30字)'} } // ps: 分享有两种状况: //一、点击app header上的按钮(因此须要这个action把分享的内容传给RN), //二、点击h5内的分享按钮,
点击支付
按钮,须要app
来支付:ide
咨询订单:post
{ action:'onPressWechatPay', payload: { orderType: 'consultationOrder', orderId: '订单id', redirectUrl:'支付完成后须要进入的url' } }
检测订单:动画
{ action:'onPressWechatPay', payload: { orderType: 'detectionOrder', orderId: '订单id', redirectUrl:'支付完成后须要进入的url' } }
点击分享
按钮,须要app
处理分享:this
{ action: 'onPressShare' payload:{shareTitle:'分享的标题',shareContent:'分享的简短的内容(不超过30字)'} } // PS: 若是已经发送过`sendShareMessage`这个消息,payload 能够为空
h5
内的返回
按钮,须要RN
来处理返回
逻辑:{ action: 'onPressGoBack', } // ps: 无需payload
登陆
页面,须要用RN的登陆页面{ action: 'navigateToLogin' payload: {currentUrl:'当前的url'} }
{ type:'user/changeIsPress', payload:{onPressType:'按钮触发的动做类型'} }
其中`onPressType`的值: - `咨询医生`提交订单: `onPressType`:`'consultDoctorSubmit'` - `RN`支付成功,须要通知`h5`刷新页面,`onPressType`: `onWeChatPaySuccess`
token
:{ type:'chat/saveUserToken', payload:'token的值' }
RN
须要h5
隐藏全部付费项目
的入口,以规避iOS审核IAP
要求:{ type:'user/hidePurchaseInfo', }
title
发生变化时,须要向RN发送消息传递新的title
:action: 'onPageTitleChange', payload: {pageTitle: '页面的title'}
h5
须要RN
展现 loading
动画,须要向RN
发送消息:{ action:'manageAppLoading', payload: {type:'具体的动做'}, }
显示
loading 时: type
:'showLoading'
隐藏
loading 时: type
:'hideLoading'
h5
须要手机的权限(相机
权限等),须要向RN
发送消息:{ action:'requestPermission', payload:{permissionType: '权限类型'} }
其中,permissionType
的值:url
permissionType
:'camera'
permissionType
: 'location'
h5
须要拨打电话:{ action:'makePhoneCall', payload:{phoneNumber: '手机号码'} }
h5
须要RN
扫描条形码/二维码{ action:'scanQRCode', payload: '扫描成功后,RN向h5发送消息的时的type值', }
扫描成功后,RN
向h5
发送扫描到的信息:spa
{ type: 'h5传过来的type', payload: '扫描获得的信息' }
{ action: 'directlySocialShare', payload: { type: '分享的平台', webpageUrl: '分享的连接', shareTitle:'分享的标题', shareContent:'分享的简短的内容(不超过30字)' } }
其中,分享的平台type
:code