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