资讯专栏INFORMATION COLUMN

h5 与 RN 交互文档

fantix / 775人阅读

摘要:向发送消息的方式,需按照以下格式标题栏有按钮比如分享提交等需要尽早向发送消息,告诉按钮的类型最好中左边按钮类型右边按钮类型布尔值隐藏可选点击按钮触发的事件同一种按钮,在不同页面有不同功能时,需要传这个值的背景色的色值可选如果没有情况下,右边

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

相关文章

  • 跨平台技术演进

    摘要:接下来,我将从原理优缺点等方面为大家分享跨平台技术演进。小程序年是微信小程序飞速发展的一年,年,各大厂商快速跟进,已经有了很大的影响力。下面,我们以微信小程序为例,分析小程序的技术架构。 前言 大家好,我是simbawu ,@BooheeFE Team Leader,关于这篇文章,有问题欢迎来这里讨论。 随着移动互联网的普及和快速发展,手机成了互联网行业最大的流量分发入口。以及随着5G...

    魏宪会 评论0 收藏0
  • 跨平台技术演进

    摘要:接下来,我将从原理优缺点等方面为大家分享跨平台技术演进。小程序年是微信小程序飞速发展的一年,年,各大厂商快速跟进,已经有了很大的影响力。下面,我们以微信小程序为例,分析小程序的技术架构。 前言 大家好,我是simbawu ,@BooheeFE Team Leader,关于这篇文章,有问题欢迎来这里讨论。 随着移动互联网的普及和快速发展,手机成了互联网行业最大的流量分发入口。以及随着5G...

    MasonEast 评论0 收藏0

发表评论

0条评论

fantix

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<