摘要:向发送消息的方式,需按照以下格式标题栏有按钮比如分享提交等需要尽早向发送消息,告诉按钮的类型最好中左边按钮类型右边按钮类型布尔值隐藏可选点击按钮触发的事件同一种按钮,在不同页面有不同功能时,需要传这个值的背景色的色值可选如果没有情况下,右边
h5 向 RN 发送消息的方式,需按照以下格式:
window.ReactNativeWebView.postMessage(JSON.stringify({ action: String, payload: Object, }));1、 标题栏有按钮(比如分享、提交等)
需要尽早向RN发送消息,告诉RN按钮的类型(最好constructor中)
action: "sendHeaderButtonType", payload: { leftType:"左边按钮类型", rightType:"右边按钮类型", hideHeader: "布尔值", // true 隐藏header,可选 onPressType: "点击按钮触发的事件",// 同一种按钮,在不同页面有不同功能时,需要传这个值 headerBgColor: "header的背景色的色值", //可选 },
如果没有herder情况下, hideHeader: true
右边按钮是分享:
rightType: "share"
左边按钮是取消,右边按钮是提交:
leftType:"cancel", rightType: "submit", onPressType: "consultDoctorSubmit" // 咨询医生提交订单2、向 RN 发送信息
发送分享的内容:
action:"sendShareMessage"`, payload:{shareTitle:"分享的标题",shareContent:"分享的剪短的内容(不超过30字)"} // ps: 分享有两种情况,1、点击header上的按钮(所以需要这个action把分享的内容传给RN), //2、点击h5内的分享按钮,3、H5点击页面内的按钮,需要RN处理动作
点击支付按钮,需要app来支付:
咨询订单:
action:"onPressWechatPay" payload: {orderType: "consultationOrder",orderId: "订单id", redirectUrl:"支付完成后需要进入的url"}
检测订单:
action:"onPressWechatPay" payload: {orderType: "detectionOrder",orderId: "订单id", redirectUrl:"支付完成后需要进入的url"}
点击分享按钮,需要app 处理分享:
action: "onPressShare" payload:{shareTitle:"分享的标题",shareContent:"分享的剪短的内容(不超过30字)"} // PS: 如果已经发送过`sendShareMessage`这个消息,payload 可以为空
点击h5内的返回按钮,需要RN来处理返回逻辑:
action: "onPressGoBack",4、h5页面如果触发登录页面,需要用RN的登录页面
action: "navigateToLogin" payload: {currentUrl:"当前的url"}5、RN向 H5 发送消息
RN向h5发送消息,需要用以下的形式:
this.webref.injectJavaScript(` window.g_app._store.dispatch({ type: "action的类型", payload: }); true; `);
RN点击app内的按钮,触发h5的动作,
{ `type`:`user/changeIsPress`, `payload`:`{onPressType:"按钮触发的动作类型"}` }
其中`onPressType`的值: - `咨询医生`提交订单: `onPressType`:`"consultDoctorSubmit"` - `RN`支付成功,需要通知`h5`刷新页面,`onPressType`: `onWeChatPaySuccess`
RN 向h5发送token:
{ type:"chat/saveUserToken", payload:"token的值" }
RN需要h5隐藏所有付费项目的入口,以规避iOS审核IAP要求:
{ type:"user/hidePurchaseInfo", }6、h5页面的title发生变化时,需要向RN发送消息传递新的title:
action: "onPageTitleChange", payload: {pageTitle: "页面的title"}7、h5需要RN展示 loading动画,需要向RN发送消息:
{ action:"manageAppLoading", payload: {type:"具体的动作"}, }
显示loading 时: type:"showLoading"
隐藏loading 时: type:"hideLoading"
8、h5需要手机的权限(相机权限等),需要向RN发送消息:{ action:"requestPermission", payload:{permissionType: "权限类型"} }
其中,permissionType的值:
请求相机权限: permissionType:"camera"
请求位置权限: permissionType: "location"
9、h5需要拨打电话:{ action:"makePhoneCall", payload:{phoneNumber: "手机号码"} }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105775.html
阅读 3009·2021-11-19 11:31
阅读 3088·2021-09-02 15:15
阅读 952·2019-08-29 17:22
阅读 1033·2019-08-29 16:38
阅读 2447·2019-08-26 13:56
阅读 812·2019-08-26 12:16
阅读 1389·2019-08-26 11:29
阅读 911·2019-08-26 10:12