@conecli/cone-render 0.9.1-shop2.36 → 0.9.1-shop2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import Taro from '@tarojs/taro'
2
1
  isH5AndJdShopView,
3
2
  isJdApp,
4
3
  isIosDevice,
5
4
  isAndroidDevice,
6
5
  isJdAndIosDevice,
7
6
  isJdAndAndroidDevice,
8
7
  jdAppVersionCompare,
9
8
  isAppStowShop,
10
9
  androidTouchSlop: 5,
11
10
  getAndroidTouchSlopState: false,
12
11
  (state) => {
13
12
  console.log(
14
13
  'document trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:',
15
14
  state,
16
15
  )
17
16
  Taro.eventCenter.trigger(
18
17
  TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE,
19
18
  state ? 0 : 1,
20
19
  )
21
20
  },
22
21
  1500,
23
22
  { leading: false, trailing: true },
24
23
  (state) => {
25
24
  console.log(
26
25
  'IOS Android trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:',
27
26
  state,
28
27
  )
29
28
  Taro.eventCenter.trigger(
30
29
  TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE,
31
30
  state,
32
31
  )
33
32
  },
34
33
  1500,
35
34
  { leading: true, trailing: false },
36
35
  if (!isJdApp) {
37
36
  if (isH5) {
38
37
 
39
38
  const documentHandleVisibilityChange = () => {
40
39
  const state = document.hidden
41
40
  window.startDocumentVisibilityChange && documentThrottledTrigger(state)
42
41
  }
43
42
  document.removeEventListener(
44
43
  'visibilitychange',
45
44
  documentHandleVisibilityChange,
46
45
  )
47
46
  console.log('每次进入页面先清除浏览器visibilitychange监听事件')
48
47
  setTimeout(() => {
49
48
  document.addEventListener(
50
49
  'visibilitychange',
51
50
  documentHandleVisibilityChange,
52
51
  false,
53
52
  )
54
53
  window.startDocumentVisibilityChange = true
55
54
  }, 3000)
56
55
  }
57
56
  } else {
58
57
 
59
58
  !window.webviewVisible &&
60
59
  (window.webviewVisible = (state) => {
61
60
  window.startDocumentVisibilityChange && webviewThrottledTrigger(state)
62
61
  state === 1 && taroEventSendPageScrollInfo()
63
62
  })
64
63
  setTimeout(() => {
65
64
  window.startDocumentVisibilityChange = true
66
65
  }, 3000)
67
66
  !window.floatReceiveData && (window.floatReceiveData = () => {})
68
67
  }
69
68
  MESSAGE_HOME_INIT: 'messageHomeInitPageData',
70
69
  [Message_CallBack_Name.MESSAGE_HOME_INIT]: {},
71
70
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = {
72
71
  displayHeight: 1920,
73
72
  offSetY: 0,
74
73
  }
75
74
  if (options) {
76
75
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = options
77
76
  }
78
77
  const latestRes = latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] || {}
79
78
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL, options || latestRes)
80
79
  console.log('PageScrollEnd fire')
81
80
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL_END, options)
82
81
  const { businessType } = options
83
82
  switch (businessType) {
84
83
  case H5_MSG_TO_H5_BUSINESSTYPE.JOIN_MEMBER_SUCCESS:
85
84
  Taro.eventCenter.trigger(TaroEventType.JOIN_MEMBER_SUCCESS, options)
86
85
  break
87
86
  default:
88
87
  break
89
88
  }
90
89
  const { shopHomeExtendInfo } = options
91
90
  if (shopHomeExtendInfo) {
92
91
  Taro.eventCenter.trigger(
93
92
  TaroEventType.UPDATE_SHOP_HOME_EXTEND_DATA,
94
93
  shopHomeExtendInfo,
95
94
  )
96
95
  }
97
96
  window && window.scrollTo(0, 0)
98
97
  Taro.eventCenter.trigger(TaroEventType.PAGE_INIT_EXPOSURE, options)
99
98
  const { action, params } = options
100
99
  console.log('taroEventShopStowSend', options)
101
100
  if (action) {
102
101
  Taro.eventCenter.trigger(action, params)
103
102
  }
104
103
  NATIVE_PAGE_READ: 'pageReady',
105
104
  NATIVE_PAGE_FINISH: 'pageFinish',
106
105
  NATIVE_INFO_DATA: 'nativeInfoData',
107
106
  NATIVE_PAGE_SCROLL: 'pageScroll',
108
107
  NATIVE_PAGE_SCROLL_END: 'pageScrollEnd',
109
108
  NATIVE_GET_SCROLL_TOP: 'nativeGetScrollTop',
110
109
  NATIVE_TO_SCROLL_TOP: 'nativeToScrollTop',
111
110
  NATIVE_CLOSE_SCROLL_MESSAGE: 'nativeCloseScrollMessage',
112
111
  NATIVE_MOBILE_CONFIG: 'getMobileConfig',
113
112
  NATIVE_SHOW_TOAST: 'showToast',
114
113
  NATIVE_SHOW_DIALOG: 'showDialog',
115
114
  NATIVE_PAGE_LAYOUT_CHANGE: 'pageLayoutChange',
116
115
  NATIVE_HOME_PAGING_ENABLE: 'homePagingEnable',
117
116
  NATIVE_GET_SCALED_TOUCH_SLOP: 'getScaledTouchSlop',
118
117
  NATIVE_ADD_CART: 'addCart',
119
118
  NATIVE_OPEN_FLOAT: 'openFloat',
120
119
  NATIVE_INJECT_JS_FILE: 'needIsvPackage',
121
120
  NAVTIVE_FLOAT_READY: 'floatReady',
122
121
  NATIVE_REFRESH_PAGE: 'refreshPage',
123
122
  PAGE_PV_PARAM: 'pagePvParam',
124
123
  NATIVE_SCORLL_VIEW: 'nativeScrollControl',
125
124
  NATIVE_POP_WEBVIEW: 'popWebview',
126
125
  NATIVE_H5_SEND_MSG_TO_H5: 'h5SendMsgToH5',
127
126
  NATIVE_PUSH_NATIVE_PAGE: 'pushNativePage',
128
127
  UPDATE_NATIVE_DATA: 'updateNativeData',
129
128
  H5_TO_SCROLL_TOP: 'h5ToScrollTop',
130
129
  LUXURY_INFORM_CHANGE_HEIGHT: 'sendImmersionStatus',
131
130
  NATIVE_SHOPSTOW_SEND: 'sendMsgToShopStow',
132
131
  NATIVE_UPDATE_PAGE_INFO: 'pageCountInfo',
133
132
  NATIVE_TO_BUYER_SHOW_DETAIL: 'jumpBuyerShowDetail',
134
133
  NATIVE_TO_HIDE_JD_SHOP_HEADER: 'hideNativeHeader',
135
134
  NATIVE_TO_SHOW_CART_BTN: 'showCartButton',
136
135
  NATIVE_IMMERSIVEHEADER_STATE_CHANGE: 'immersiveHeaderStateChange',
137
136
  SHOP_FOLLOW_STATE_REGISTER: "shopFollowStateRegister",
138
137
  SHOP_FOLLOW_STATE_SYNC: "shopFollowStateSync",
139
138
  NATIVE_GET_SHOP_FOLLOW_STATE: "getShopFollowState",
140
139
  OPEN: 'open',
141
140
  CLOSE: 'close',
142
141
  JOIN_MEMBER_SUCCESS: 'joinMemberSuccess',
143
142
  type = Message_Type.NATIVE_PAGE_READ,
144
143
  sendData: null | object = null,
145
144
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
146
145
  console.log(
147
146
  '初始化nativePageRegisterMessage-isAppStowShop-type-sendData-isJdApp-isH5AndJdShopView',
148
147
  isAppStowShop,
149
148
  type,
150
149
  sendData,
151
150
  isJdApp,
152
151
  isH5AndJdShopView,
153
152
  callBackName,
154
153
  )
155
154
  if (isJdApp) {
156
155
  const getCallBackName = `window.${callBackName}`
157
156
  let getRouterParam = {
158
157
  type,
159
158
  callBackName: getCallBackName,
160
159
  }
161
160
  if (!isAppStowShop) {
162
161
  getRouterParam['newHomePage'] = true
163
162
  }
164
163
  if (sendData) {
165
164
  getRouterParam = Object.assign({}, getRouterParam, sendData)
166
165
  }
167
166
  if (isIosDevice) {
168
167
  const routerURL = isAppStowShop
169
168
  ? 'router://JDBDecorationPlatformModule/wrtNative'
170
169
  : 'router://JDShopModule/wrtNative'
171
170
  if (versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) >= 0) {
172
171
  callRouterIOS({
173
172
  routerURL,
174
173
  routerParam: getRouterParam,
175
174
  })
176
175
  } else {
177
176
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
178
177
  method: 'callRouterModuleWithParams',
179
178
  params: {
180
179
  routerURL,
181
180
  serialize: "1",
182
181
  routerParam: JSON.stringify(getRouterParam),
183
182
  callBackName: getCallBackName,
184
183
  callBackId: `${callBackName}Ios`,
185
184
  },
186
185
  })
187
186
  }
188
187
  } else if (isAndroidDevice) {
189
188
  if(type === Message_Type.NATIVE_MOBILE_CONFIG && jdAppVersionCompare('13.2.8') >= 0){
190
189
  callRouterAndroid({
191
190
  routerURL: "router://JDJShopModule/wrtNative",
192
191
  routerParam: getRouterParam,
193
192
  })
194
193
  }else {
195
194
  window?.JDJshop?.wrtNative(
196
195
  JSON.stringify({
197
196
  routerParam: JSON.stringify(getRouterParam),
198
197
  serialize: "1",
199
198
  callBackName: getCallBackName,
200
199
  callBackId: `${callBackName}Android`,
201
200
  }),
202
201
  )
203
202
  }
204
203
  }
205
204
  return true
206
205
  }
207
206
  return false
208
207
  if (isJdApp) {
209
208
  if (isIosDevice) {
210
209
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage({
211
210
  method: 'close',
212
211
  })
213
212
  } else if (isAndroidDevice) {
214
213
  window?.XView && window?.XView.close()
215
214
  }
216
215
  }
217
216
  console.log('showToastByRouter:', title, showType)
218
217
  if (isJdApp) {
219
218
  const routerParam = {
220
219
  message: title,
221
220
  iconType: showType,
222
221
  duration,
223
222
  }
224
223
  if (isIosDevice) {
225
224
  callRouterIOS({
226
225
  routerURL: 'router://JDShopModule/showToast',
227
226
  routerParam,
228
227
  })
229
228
  } else if (isAndroidDevice) {
230
229
  callRouterAndroid({
231
230
  routerURL: 'router://JDJShopModule/showToast',
232
231
  routerParam,
233
232
  })
234
233
  }
235
234
  }
236
235
  console.log('nativePageLoadReady called')
237
236
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
238
237
  Message_Type.NATIVE_INFO_DATA
239
238
  ] = async (data: any) => {
240
239
  console.log('nativePageLoadReady callBack:', callBack, ', data:', data)
241
240
  callBack && callBack(data)
242
241
  }
243
242
  nativePageGetMessageInitCallBack()
244
243
  nativePageRegisterMessage(
245
244
  Message_Type.NATIVE_PAGE_READ,
246
245
  sendData,
247
246
  Message_CallBack_Name.MESSAGE_HOME_INIT,
248
247
  )
249
248
  return nativePageRegisterMessage(
250
249
  Message_Type.NATIVE_PAGE_FINISH,
251
250
  null,
252
251
  Message_CallBack_Name.MESSAGE_HOME_INIT,
253
252
  )
254
253
  callBack &&
255
254
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
256
255
  Message_Type.NATIVE_GET_SCROLL_TOP
257
256
  ] = callBack)
258
257
  return nativePageRegisterMessage(
259
258
  Message_Type.NATIVE_GET_SCROLL_TOP,
260
259
  null,
261
260
  Message_CallBack_Name.MESSAGE_HOME_INIT,
262
261
  )
263
262
  callBack &&
264
263
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
265
264
  Message_Type.NATIVE_TO_SCROLL_TOP
266
265
  ] = callBack)
267
266
  nativePageRegisterMessage(
268
267
  Message_Type.NATIVE_TO_SCROLL_TOP,
269
268
  {
270
269
  data: {
271
270
  scrollTop,
272
271
  },
273
272
  },
274
273
  Message_CallBack_Name.MESSAGE_HOME_INIT,
275
274
  )
276
275
  Taro.eventCenter.trigger(TaroEventType.LUXURY_INFORM_CHANGE_HEIGHT, data)
277
276
  Taro.eventCenter.trigger(TaroEventType.SHOP_FOLLOW_STATE_REGISTER, data)
278
277
  Taro.eventCenter.trigger(TaroEventType.IMMERSIVEHEADER_STATE_CHANGE, data)
279
278
  configName: string,
280
279
  isBeforePageReady: boolean,
281
280
  return new Promise((resolve, reject) => {
282
281
  if (!isJdApp) {
283
282
  reject({
284
283
  code: -1,
285
284
  message: 'getMPaasConfigByNative 只在松果APP店铺内部调用有效。',
286
285
  })
287
286
  return
288
287
  }
289
288
  if (
290
289
  isIosDevice &&
291
290
  isBeforePageReady &&
292
291
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) < 0
293
292
  ) {
294
293
  reject({
295
294
  code: -2,
296
295
  message: `在nativePageLoadReady之前调用,低于v${MPAAS_CONFIG_APP_VERSION}不会有返回,兜底处理`,
297
296
  })
298
297
  return
299
298
  }
300
299
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
301
300
  Message_Type.NATIVE_MOBILE_CONFIG
302
301
  ] = (data: any) => {
303
302
  const configData = isAndroidDevice ? data : data?.data
304
303
  const res = JSONParse(configData)
305
304
  resolve(res)
306
305
  }
307
306
  nativePageGetMessageInitCallBack()
308
307
  nativePageRegisterMessage(
309
308
  Message_Type.NATIVE_MOBILE_CONFIG,
310
309
  {
311
310
  data: {
312
311
  space: isIosDevice ? 'JDCDSHOP' : 'JDShop',
313
312
  configName,
314
313
  },
315
314
  },
316
315
  Message_CallBack_Name.MESSAGE_HOME_INIT,
317
316
  )
318
317
  })
319
318
  bussinessKey: string,
320
319
  isBeforePageReady: boolean,
321
320
  if (!bussinessKey) {
322
321
  return null
323
322
  }
324
323
  if (!isJdApp) {
325
324
  return null
326
325
  }
327
326
  const CACHED_MPAAS_KEY = `mpaas_${CONFIG_NAME}`
328
327
  const CACHED_MPAAS_KEY_HELPER = `${CACHED_MPAAS_KEY}_helper`
329
328
  let configData = window[CACHED_MPAAS_KEY]
330
329
  if (configData == null) {
331
330
  configData = await getMPaasConfigByNative(
332
331
  CONFIG_NAME,
333
332
  isBeforePageReady,
334
333
  ).catch((e) => {
335
334
  console.log('getMPaasConfigByNative error:', e)
336
335
  return null
337
336
  })
338
337
  window[CACHED_MPAAS_KEY_HELPER] = {}
339
338
  window[CACHED_MPAAS_KEY] = configData
340
339
  }
341
340
  if (configData) {
342
341
  const originData = configData[bussinessKey]
343
342
  const hasParse = window[CACHED_MPAAS_KEY_HELPER][bussinessKey]
344
343
  try {
345
344
  if (
346
345
  hasParse ||
347
346
  ['object', 'boolean', 'number'].includes(typeof originData)
348
347
  ) {
349
348
  return originData
350
349
  } else {
351
350
  window[CACHED_MPAAS_KEY_HELPER][bussinessKey] = true
352
351
  const parseData = JSON.parse(configData[bussinessKey])
353
352
  configData[bussinessKey] = parseData
354
353
  return parseData
355
354
  }
356
355
  } catch (e) {
357
356
  return originData
358
357
  }
359
358
  }
360
359
  return null
361
360
  nativePageRegisterMessage(Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE)
362
361
  if (isJdAndAndroidDevice) {
363
362
  callBack &&
364
363
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
365
364
  Message_Type.NATIVE_HOME_PAGING_ENABLE
366
365
  ] = callBack)
367
366
  nativePageRegisterMessage(Message_Type.NATIVE_HOME_PAGING_ENABLE, {
368
367
  data: {
369
368
  enable: enable,
370
369
  },
371
370
  })
372
371
  }
373
372
  if (isJdAndAndroidDevice) {
374
373
  callBack &&
375
374
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
376
375
  Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP
377
376
  ] = callBack)
378
377
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP)
379
378
  }
380
379
  SUCCESS: 'success',
381
380
  FAIL: 'fail',
382
381
  NORMAL: 'normal',
383
382
  SUCCESS: 2,
384
383
  FAIL: 3,
385
384
  NORMAL: 1,
386
385
  SUCCESS: 2,
387
386
  FAIL: 3,
388
387
  NORMAL: 1,
389
388
  [ToastIosType.NORMAL]: ToastType.NORMAL,
390
389
  [ToastIosType.SUCCESS]: ToastType.SUCCESS,
391
390
  [ToastIosType.FAIL]: ToastType.FAIL,
392
391
  if (isShowNewRouterToast) {
393
392
  const changeShowType = isJdAndIosDevice
394
393
  ? toastIosTypeToNewToastType[showType] || showType
395
394
  : showType
396
395
  showToastByRouter(title, changeShowType, duration * 1000)
397
396
  } else {
398
397
  nativePageRegisterMessage(Message_Type.NATIVE_SHOW_TOAST, {
399
398
  data: {
400
399
  message: title,
401
400
  iconType: showType,
402
401
  duration,
403
402
  },
404
403
  })
405
404
  }
406
405
  routerURL,
407
406
  routerParam,
408
407
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
409
408
  const getCallBackName = `window.${callBackName}`
410
409
  const params = {
411
410
  routerURL,
412
411
  serialize: "1",
413
412
  routerParam,
414
413
  callBackName: getCallBackName,
415
414
  callBackId: `${callBackName}Ios`,
416
415
  }
417
416
  console.log(
418
417
  'callRouterIOS routerURL:',
419
418
  routerURL,
420
419
  ',routerParam:',
421
420
  routerParam,
422
421
  "params",
423
422
  params
424
423
  )
425
424
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
426
425
  method: 'callRouterModuleWithParams',
427
426
  params: JSON.stringify(params),
428
427
  })
429
428
  routerURL,
430
429
  routerParam,
431
430
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
432
431
  }) => {
433
432
  console.log(
434
433
  'callRouterAndroid routerURL:',
435
434
  routerURL,
436
435
  ',routerParam:',
437
436
  routerParam,
438
437
  )
439
438
  const getCallBackName = `window.${callBackName}`
440
439
  routerParam?.data && typeof routerParam?.data === 'object' && (routerParam.data = JSON.stringify(routerParam?.data))
441
440
  var params = {
442
441
  jdRouter: '1',
443
442
  serialize: "1",
444
443
  routerURL,
445
444
  routerParam,
446
445
  callBackName: getCallBackName,
447
446
  callBackId: `${callBackName}Android`,
448
447
  }
449
448
  console.log("=======获取安卓router协议参数=======", params)
450
449
  window?.JDAppUnite?.callRouterModuleWithParams(JSON.stringify(params))
451
450
  callBack &&
452
451
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
453
452
  Message_Type.NATIVE_SHOW_DIALOG
454
453
  ] = callBack)
455
454
  return nativePageRegisterMessage(Message_Type.NATIVE_SHOW_DIALOG, {
456
455
  data: params,
457
456
  })
458
457
  if (!isJdApp) {
459
458
  return
460
459
  }
461
460
  if (!window[Message_CallBack_Name.MESSAGE_HOME_INIT]) {
462
461
  window[Message_CallBack_Name.MESSAGE_HOME_INIT] = messageData => {
463
462
  try {
464
463
  console.log('接收到原生通知返回的原始数据nativePageGetMessageInitCallBack', messageData)
465
464
  const getMessageJsonData = JSONParse(messageData)
466
465
  const { status } = getMessageJsonData
467
466
  if (status == '0') {
468
467
  const { type, data } = getMessageJsonData?.data
469
468
  const getSendJsonData = JSONParse(data)
470
469
  switch (type) {
471
470
  case Message_Type.NATIVE_INFO_DATA:
472
471
  case Message_Type.NATIVE_PAGE_FINISH:
473
472
  case Message_Type.NATIVE_GET_SCROLL_TOP:
474
473
  case Message_Type.NATIVE_TO_SCROLL_TOP:
475
474
  case Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE:
476
475
  case Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP:
477
476
  case Message_Type.NATIVE_MOBILE_CONFIG:
478
477
  case Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE:
479
478
  const getTypeCallBack =
480
479
  Message_Trigger_CallBackFuncObj[
481
480
  Message_CallBack_Name.MESSAGE_HOME_INIT
482
481
  ][type]
483
482
  if (getTypeCallBack) {
484
483
  const isCallBackFunc = typeof getTypeCallBack === 'function'
485
484
  console.log(
486
485
  '接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData',
487
486
  getSendJsonData,
488
487
  )
489
488
  isCallBackFunc && getTypeCallBack(getSendJsonData)
490
489
  }
491
490
  break
492
491
  case Message_Type.NATIVE_SHOW_DIALOG:
493
492
  const showDialogCallBack =
494
493
  Message_Trigger_CallBackFuncObj[
495
494
  Message_CallBack_Name.MESSAGE_HOME_INIT
496
495
  ][type]
497
496
  if (showDialogCallBack) {
498
497
  const isCallBackFunc = typeof showDialogCallBack === 'function'
499
498
  console.log(
500
499
  `获取${type}类型数据数据type isCallBackFunc getMessageJsonData `,
501
500
  type,
502
501
  isCallBackFunc,
503
502
  getMessageJsonData,
504
503
  )
505
504
  isCallBackFunc && showDialogCallBack(getMessageJsonData?.data)
506
505
  }
507
506
  break
508
507
  case Message_Type.NATIVE_PAGE_SCROLL:
509
508
  taroEventSendPageScrollInfo(data)
510
509
  break
511
510
  case Message_Type.NATIVE_PAGE_SCROLL_END:
512
511
  taroEventSendPageScrollEndInfo(data)
513
512
  break
514
513
  case Message_Type.NATIVE_H5_SEND_MSG_TO_H5:
515
514
  console.log('接收到原生通知 NATIVE_H5_SEND_MSG_TO_H5', data)
516
515
  taroEventH5SendMsgToH5(getSendJsonData)
517
516
  break
518
517
  case Message_Type.UPDATE_NATIVE_DATA:
519
518
  taroEventUpdateNativeData(getSendJsonData)
520
519
  break
521
520
  case Message_Type.H5_TO_SCROLL_TOP:
522
521
  taroEventH5ToScrollTop()
523
522
  break
524
523
  case Message_Type.NATIVE_SHOPSTOW_SEND:
525
524
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND', messageData)
526
525
  console.log(
527
526
  '接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData',
528
527
  getSendJsonData,
529
528
  )
530
529
  taroEventShopStowSend(getSendJsonData)
531
530
  break
532
531
  case Message_Type.LUXURY_INFORM_CHANGE_HEIGHT:
533
532
  taroEventSendImmersionStatus(data)
534
533
  break
535
534
  case Message_Type.NATIVE_IMMERSIVEHEADER_STATE_CHANGE:
536
535
  taroEventSendImmersiveHeaderChange(data)
537
536
  break
538
537
  case Message_Type.SHOP_FOLLOW_STATE_REGISTER:
539
538
  taroEventSendShopFollowStateChange(data)
540
539
  break
541
540
  default:
542
541
  }
543
542
  } else {
544
543
  console.log('传递数据获取异常', getMessageJsonData)
545
544
  }
546
545
  } catch (e) {
547
546
  console.log('获取转换异常结果', e)
548
547
  }
549
548
  }
550
549
  }
551
550
  nativePageRegisterMessage(Message_Type.NATIVE_OPEN_FLOAT, {
552
551
  data: params,
553
552
  })
554
553
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
555
554
  data: {
556
555
  type: NATIVE_POP_WEBVIEW_TYPE.OPEN,
557
556
  height: DEFAULT_POP_WEBVIEW_HEIGHT,
558
557
  ...params,
559
558
  },
560
559
  })
561
560
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
562
561
  data: {
563
562
  type: NATIVE_POP_WEBVIEW_TYPE.CLOSE,
564
563
  ...params,
565
564
  },
566
565
  })
567
566
  Taro.eventCenter.off(TaroEventType.JOIN_MEMBER_SUCCESS)
568
567
  console.log('popWebview关闭')
569
568
  nativePageRegisterMessage(Message_Type.NATIVE_H5_SEND_MSG_TO_H5, {
570
569
  data: params,
571
570
  })
572
571
  nativePageRegisterMessage(Message_Type.NATIVE_PUSH_NATIVE_PAGE, {
573
572
  data: params,
574
573
  })
575
574
  window &&
576
575
  (window.location.href = `xview://search?request={"action":"${Message_Type.NAVTIVE_FLOAT_READY}"}`)
577
576
  res: UtilsInterFace.nativePageScrollRes,
578
577
  const { displayHeight, offSetY } = res
579
578
  if (typeof displayHeight === 'undefined' || typeof offSetY === 'undefined')
580
579
  return
581
580
  if (isIosDevice) return res
582
581
  if (isAndroidDevice) {
583
582
  const deviceRatio = window.devicePixelRatio
584
583
  const cssDisplayHeight = Math.ceil(displayHeight / deviceRatio)
585
584
  const cssOffsetY = Math.ceil(offSetY / deviceRatio)
586
585
  return {
587
586
  displayHeight: cssDisplayHeight,
588
587
  offSetY: cssOffsetY,
589
588
  }
590
589
  }
591
590
  nativePageRegisterMessage(Message_Type.NATIVE_UPDATE_PAGE_INFO, {
592
591
  data: params,
593
592
  })
594
593
  nativePageRegisterMessage(Message_Type.NATIVE_TO_BUYER_SHOW_DETAIL, {
595
594
  data: params,
596
595
  })
597
596
  nativePageRegisterMessage(Message_Type.NATIVE_TO_HIDE_JD_SHOP_HEADER, {
598
597
  data: params,
599
598
  })
600
599
  nativePageRegisterMessage(Message_Type.NATIVE_TO_SHOW_CART_BTN, {
601
600
  data: params,
602
601
  })
603
602
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_REGISTER, {
604
603
  data: params,
605
604
  })
606
605
  callBack &&
607
606
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
608
607
  Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE
609
608
  ] = callBack)
610
609
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE, {
611
610
  data: {},
612
611
  })
613
612
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_SYNC, {
614
613
  data: {
615
614
  followed: followState,
616
615
  },
617
616
  })
617
+ import Taro from '@tarojs/taro';
618
618
  isH5AndJdShopView,
619
619
  isJdApp,
620
620
  isIosDevice,
621
621
  isAndroidDevice,
622
622
  isJdAndIosDevice,
623
623
  isJdAndAndroidDevice,
624
624
  jdAppVersionCompare,
625
625
  isAppStowShop,
626
626
  (window.JDJshopViewInfo = {
627
627
  androidTouchSlop: 5,
628
628
  getAndroidTouchSlopState: false,
629
629
  });
630
630
  (state) => {
631
631
  console.log('document trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
632
632
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state ? 0 : 1);
633
633
  },
634
634
  1500,
635
635
  { leading: false, trailing: true },
636
636
  (state) => {
637
637
  console.log('IOS Android trigger PAGE_DOCUMENT_VISIBILITY_CHANGE state:', state);
638
638
  Taro.eventCenter.trigger(TaroEventType.PAGE_DOCUMENT_VISIBILITY_CHANGE, state);
639
639
  },
640
640
  1500,
641
641
  { leading: true, trailing: false },
642
642
  if (!isJdApp) {
643
643
  if (isH5) {
644
644
 
645
645
  const documentHandleVisibilityChange = () => {
646
646
  const state = document.hidden;
647
647
  window.startDocumentVisibilityChange && documentThrottledTrigger(state);
648
648
  };
649
649
  document.removeEventListener('visibilitychange', documentHandleVisibilityChange);
650
650
  console.log('每次进入页面先清除浏览器visibilitychange监听事件');
651
651
  setTimeout(() => {
652
652
  document.addEventListener('visibilitychange', documentHandleVisibilityChange, false);
653
653
  window.startDocumentVisibilityChange = true;
654
654
  }, 3000);
655
655
  }
656
656
  } else {
657
657
 
658
658
  !window.webviewVisible &&
659
659
  (window.webviewVisible = (state) => {
660
660
  window.startDocumentVisibilityChange && webviewThrottledTrigger(state);
661
661
  state === 1 && taroEventSendPageScrollInfo();
662
662
  });
663
663
  setTimeout(() => {
664
664
  window.startDocumentVisibilityChange = true;
665
665
  }, 3000);
666
666
  !window.floatReceiveData && (window.floatReceiveData = () => {});
667
667
  }
668
668
  MESSAGE_HOME_INIT: 'messageHomeInitPageData',
669
669
  [Message_CallBack_Name.MESSAGE_HOME_INIT]: {},
670
670
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = {
671
671
  displayHeight: 1920,
672
672
  offSetY: 0,
673
673
  };
674
674
  if (options) {
675
675
  latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] = options;
676
676
  }
677
677
  const latestRes = latestFromNativeMsgStorage[TaroEventType.PAGE_SCROLL] || {};
678
678
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL, options || latestRes);
679
679
  console.log('PageScrollEnd fire');
680
680
  Taro.eventCenter.trigger(TaroEventType.PAGE_SCROLL_END, options);
681
681
  const { businessType } = options;
682
682
  switch (businessType) {
683
683
  case H5_MSG_TO_H5_BUSINESSTYPE.JOIN_MEMBER_SUCCESS:
684
684
  Taro.eventCenter.trigger(TaroEventType.JOIN_MEMBER_SUCCESS, options);
685
685
  break;
686
686
  case H5_MSG_TO_H5_BUSINESSTYPE.h5BaseDataChange:
687
687
  Taro.eventCenter.trigger(TaroEventType.H5_BASE_DATA_CHANGE_REGISTER, options);
688
688
  break;
689
689
  default:
690
690
  break;
691
691
  }
692
692
  const { shopHomeExtendInfo } = options;
693
693
  if (shopHomeExtendInfo) {
694
694
  Taro.eventCenter.trigger(TaroEventType.UPDATE_SHOP_HOME_EXTEND_DATA, shopHomeExtendInfo);
695
695
  }
696
696
  window && window.scrollTo(0, 0);
697
697
  Taro.eventCenter.trigger(TaroEventType.PAGE_INIT_EXPOSURE, options);
698
698
  const { action, params } = options;
699
699
  console.log('taroEventShopStowSend', options);
700
700
  if (action) {
701
701
  Taro.eventCenter.trigger(action, params);
702
702
  }
703
703
  NATIVE_PAGE_READ: 'pageReady',
704
704
  NATIVE_PAGE_FINISH: 'pageFinish',
705
705
  NATIVE_INFO_DATA: 'nativeInfoData',
706
706
  NATIVE_PAGE_SCROLL: 'pageScroll',
707
707
  NATIVE_PAGE_SCROLL_END: 'pageScrollEnd',
708
708
  NATIVE_GET_SCROLL_TOP: 'nativeGetScrollTop',
709
709
  NATIVE_TO_SCROLL_TOP: 'nativeToScrollTop',
710
710
  NATIVE_CLOSE_SCROLL_MESSAGE: 'nativeCloseScrollMessage',
711
711
  NATIVE_MOBILE_CONFIG: 'getMobileConfig',
712
712
  NATIVE_SHOW_TOAST: 'showToast',
713
713
  NATIVE_SHOW_DIALOG: 'showDialog',
714
714
  NATIVE_PAGE_LAYOUT_CHANGE: 'pageLayoutChange',
715
715
  NATIVE_HOME_PAGING_ENABLE: 'homePagingEnable',
716
716
  NATIVE_GET_SCALED_TOUCH_SLOP: 'getScaledTouchSlop',
717
717
  NATIVE_ADD_CART: 'addCart',
718
718
  NATIVE_OPEN_FLOAT: 'openFloat',
719
719
  NATIVE_INJECT_JS_FILE: 'needIsvPackage',
720
720
  NAVTIVE_FLOAT_READY: 'floatReady',
721
721
  NATIVE_REFRESH_PAGE: 'refreshPage',
722
722
  PAGE_PV_PARAM: 'pagePvParam',
723
723
  NATIVE_SCORLL_VIEW: 'nativeScrollControl',
724
724
  NATIVE_POP_WEBVIEW: 'popWebview',
725
725
  NATIVE_H5_SEND_MSG_TO_H5: 'h5SendMsgToH5',
726
726
  NATIVE_PUSH_NATIVE_PAGE: 'pushNativePage',
727
727
  UPDATE_NATIVE_DATA: 'updateNativeData',
728
728
  H5_TO_SCROLL_TOP: 'h5ToScrollTop',
729
729
  LUXURY_INFORM_CHANGE_HEIGHT: 'sendImmersionStatus',
730
730
  NATIVE_SHOPSTOW_SEND: 'sendMsgToShopStow',
731
731
  NATIVE_UPDATE_PAGE_INFO: 'pageCountInfo',
732
732
  NATIVE_TO_BUYER_SHOW_DETAIL: 'jumpBuyerShowDetail',
733
733
  NATIVE_TO_HIDE_JD_SHOP_HEADER: 'hideNativeHeader',
734
734
  NATIVE_TO_SHOW_CART_BTN: 'showCartButton',
735
735
  NATIVE_IMMERSIVEHEADER_STATE_CHANGE: 'immersiveHeaderStateChange',
736
736
  SHOP_FOLLOW_STATE_REGISTER: 'shopFollowStateRegister',
737
737
  SHOP_FOLLOW_STATE_SYNC: 'shopFollowStateSync',
738
738
  NATIVE_GET_SHOP_FOLLOW_STATE: 'getShopFollowState',
739
739
  H5_TO_NATIVE_LIVE_RESERVE_STATE: 'shopLiveReserveStateSync',
740
740
  H5_TO_NATIVE_SCROLL_TO_TOP: 'expertShopScrollToTop',
741
741
  OPEN: 'open',
742
742
  CLOSE: 'close',
743
743
  JOIN_MEMBER_SUCCESS: 'joinMemberSuccess',
744
744
  h5BaseDataChange: 'h5BaseDataChange',
745
745
  type = Message_Type.NATIVE_PAGE_READ,
746
746
  sendData: null | object = null,
747
747
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
748
748
  console.log(
749
749
  '初始化nativePageRegisterMessage-isAppStowShop-type-sendData-isJdApp-isH5AndJdShopView',
750
750
  isAppStowShop,
751
751
  type,
752
752
  sendData,
753
753
  isJdApp,
754
754
  isH5AndJdShopView,
755
755
  callBackName,
756
756
  );
757
757
  if (isJdApp) {
758
758
  const getCallBackName = `window.${callBackName}`;
759
759
  let getRouterParam = {
760
760
  type,
761
761
  callBackName: getCallBackName,
762
762
  };
763
763
  if (!isAppStowShop) {
764
764
  getRouterParam['newHomePage'] = true;
765
765
  }
766
766
  if (sendData) {
767
767
  getRouterParam = Object.assign({}, getRouterParam, sendData);
768
768
  }
769
769
  if (isIosDevice) {
770
770
  const routerURL = isAppStowShop
771
771
  ? 'router://JDBDecorationPlatformModule/wrtNative'
772
772
  : 'router://JDShopModule/wrtNative';
773
773
  if (versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) >= 0) {
774
774
  callRouterIOS({
775
775
  routerURL,
776
776
  routerParam: getRouterParam,
777
777
  });
778
778
  } else {
779
779
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
780
780
  method: 'callRouterModuleWithParams',
781
781
  params: {
782
782
  routerURL,
783
783
  serialize: '1',
784
784
  routerParam: JSON.stringify(getRouterParam),
785
785
  callBackName: getCallBackName,
786
786
  callBackId: `${callBackName}Ios`,
787
787
  },
788
788
  });
789
789
  }
790
790
  } else if (isAndroidDevice) {
791
791
  if (type === Message_Type.NATIVE_MOBILE_CONFIG && jdAppVersionCompare('13.2.8') >= 0) {
792
792
  callRouterAndroid({
793
793
  routerURL: 'router://JDJShopModule/wrtNative',
794
794
  routerParam: getRouterParam,
795
795
  });
796
796
  } else {
797
797
  window?.JDJshop?.wrtNative(
798
798
  JSON.stringify({
799
799
  routerParam: JSON.stringify(getRouterParam),
800
800
  serialize: '1',
801
801
  callBackName: getCallBackName,
802
802
  callBackId: `${callBackName}Android`,
803
803
  }),
804
804
  );
805
805
  }
806
806
  }
807
807
  return true;
808
808
  }
809
809
  return false;
810
810
  if (isJdApp) {
811
811
  if (isIosDevice) {
812
812
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage({
813
813
  method: 'close',
814
814
  });
815
815
  } else if (isAndroidDevice) {
816
816
  window?.XView && window?.XView.close();
817
817
  }
818
818
  }
819
819
  console.log('showToastByRouter:', title, showType);
820
820
  if (isJdApp) {
821
821
  const routerParam = {
822
822
  message: title,
823
823
  iconType: showType,
824
824
  duration,
825
825
  };
826
826
  if (isIosDevice) {
827
827
  callRouterIOS({
828
828
  routerURL: 'router://JDShopModule/showToast',
829
829
  routerParam,
830
830
  });
831
831
  } else if (isAndroidDevice) {
832
832
  callRouterAndroid({
833
833
  routerURL: 'router://JDJShopModule/showToast',
834
834
  routerParam,
835
835
  });
836
836
  }
837
837
  }
838
838
  console.log('nativePageLoadReady called');
839
839
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
840
840
  Message_Type.NATIVE_INFO_DATA
841
841
  ] = async (data: any) => {
842
842
  console.log('nativePageLoadReady callBack:', callBack, ', data:', data);
843
843
  callBack && callBack(data);
844
844
  };
845
845
  nativePageGetMessageInitCallBack();
846
846
  nativePageRegisterMessage(
847
847
  Message_Type.NATIVE_PAGE_READ,
848
848
  sendData,
849
849
  Message_CallBack_Name.MESSAGE_HOME_INIT,
850
850
  );
851
851
  return nativePageRegisterMessage(
852
852
  Message_Type.NATIVE_PAGE_FINISH,
853
853
  null,
854
854
  Message_CallBack_Name.MESSAGE_HOME_INIT,
855
855
  );
856
856
  callBack &&
857
857
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
858
858
  Message_Type.NATIVE_GET_SCROLL_TOP
859
859
  ] = callBack);
860
860
  return nativePageRegisterMessage(
861
861
  Message_Type.NATIVE_GET_SCROLL_TOP,
862
862
  null,
863
863
  Message_CallBack_Name.MESSAGE_HOME_INIT,
864
864
  );
865
865
  callBack &&
866
866
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
867
867
  Message_Type.NATIVE_TO_SCROLL_TOP
868
868
  ] = callBack);
869
869
  nativePageRegisterMessage(
870
870
  Message_Type.NATIVE_TO_SCROLL_TOP,
871
871
  {
872
872
  data: {
873
873
  scrollTop,
874
874
  },
875
875
  },
876
876
  Message_CallBack_Name.MESSAGE_HOME_INIT,
877
877
  );
878
878
  Taro.eventCenter.trigger(TaroEventType.LUXURY_INFORM_CHANGE_HEIGHT, data);
879
879
  Taro.eventCenter.trigger(TaroEventType.SHOP_FOLLOW_STATE_REGISTER, data);
880
880
  Taro.eventCenter.trigger(TaroEventType.IMMERSIVEHEADER_STATE_CHANGE, data);
881
881
  configName: string,
882
882
  isBeforePageReady: boolean,
883
883
  return new Promise((resolve, reject) => {
884
884
  if (!isJdApp) {
885
885
  reject({
886
886
  code: -1,
887
887
  message: 'getMPaasConfigByNative 只在松果APP店铺内部调用有效。',
888
888
  });
889
889
  return;
890
890
  }
891
891
  if (
892
892
  isIosDevice &&
893
893
  isBeforePageReady &&
894
894
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) < 0
895
895
  ) {
896
896
  reject({
897
897
  code: -2,
898
898
  message: `在nativePageLoadReady之前调用,低于v${MPAAS_CONFIG_APP_VERSION}不会有返回,兜底处理`,
899
899
  });
900
900
  return;
901
901
  }
902
902
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
903
903
  Message_Type.NATIVE_MOBILE_CONFIG
904
904
  ] = (data: any) => {
905
905
  const configData = isAndroidDevice ? data : data?.data;
906
906
  const res = JSONParse(configData);
907
907
  resolve(res);
908
908
  };
909
909
  nativePageGetMessageInitCallBack();
910
910
  nativePageRegisterMessage(
911
911
  Message_Type.NATIVE_MOBILE_CONFIG,
912
912
  {
913
913
  data: {
914
914
  space: isIosDevice ? 'JDCDSHOP' : 'JDShop',
915
915
  configName,
916
916
  },
917
917
  },
918
918
  Message_CallBack_Name.MESSAGE_HOME_INIT,
919
919
  );
920
920
  });
921
921
  bussinessKey: string,
922
922
  isBeforePageReady: boolean,
923
923
  if (!bussinessKey) {
924
924
  return null;
925
925
  }
926
926
  if (!isJdApp) {
927
927
  return null;
928
928
  }
929
929
  const CACHED_MPAAS_KEY = `mpaas_${CONFIG_NAME}`;
930
930
  const CACHED_MPAAS_KEY_HELPER = `${CACHED_MPAAS_KEY}_helper`;
931
931
  let configData = window[CACHED_MPAAS_KEY];
932
932
  if (configData == null) {
933
933
  configData = await getMPaasConfigByNative(CONFIG_NAME, isBeforePageReady).catch((e) => {
934
934
  console.log('getMPaasConfigByNative error:', e);
935
935
  return null;
936
936
  });
937
937
  window[CACHED_MPAAS_KEY_HELPER] = {};
938
938
  window[CACHED_MPAAS_KEY] = configData;
939
939
  }
940
940
  if (configData) {
941
941
  const originData = configData[bussinessKey];
942
942
  const hasParse = window[CACHED_MPAAS_KEY_HELPER][bussinessKey];
943
943
  try {
944
944
  if (hasParse || ['object', 'boolean', 'number'].includes(typeof originData)) {
945
945
  return originData;
946
946
  } else {
947
947
  window[CACHED_MPAAS_KEY_HELPER][bussinessKey] = true;
948
948
  const parseData = JSON.parse(configData[bussinessKey]);
949
949
  configData[bussinessKey] = parseData;
950
950
  return parseData;
951
951
  }
952
952
  } catch (e) {
953
953
  return originData;
954
954
  }
955
955
  }
956
956
  return null;
957
957
  nativePageRegisterMessage(Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE);
958
958
  if (isJdAndAndroidDevice) {
959
959
  callBack &&
960
960
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
961
961
  Message_Type.NATIVE_HOME_PAGING_ENABLE
962
962
  ] = callBack);
963
963
  nativePageRegisterMessage(Message_Type.NATIVE_HOME_PAGING_ENABLE, {
964
964
  data: {
965
965
  enable: enable,
966
966
  },
967
967
  });
968
968
  }
969
969
  if (isJdAndAndroidDevice) {
970
970
  callBack &&
971
971
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
972
972
  Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP
973
973
  ] = callBack);
974
974
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP);
975
975
  }
976
976
  SUCCESS: 'success',
977
977
  FAIL: 'fail',
978
978
  NORMAL: 'normal',
979
979
  SUCCESS: 2,
980
980
  FAIL: 3,
981
981
  NORMAL: 1,
982
982
  SUCCESS: 2,
983
983
  FAIL: 3,
984
984
  NORMAL: 1,
985
985
  [ToastIosType.NORMAL]: ToastType.NORMAL,
986
986
  [ToastIosType.SUCCESS]: ToastType.SUCCESS,
987
987
  [ToastIosType.FAIL]: ToastType.FAIL,
988
988
  if (isShowNewRouterToast) {
989
989
  const changeShowType = isJdAndIosDevice
990
990
  ? toastIosTypeToNewToastType[showType] || showType
991
991
  : showType;
992
992
  showToastByRouter(title, changeShowType, duration * 1000);
993
993
  } else {
994
994
  nativePageRegisterMessage(Message_Type.NATIVE_SHOW_TOAST, {
995
995
  data: {
996
996
  message: title,
997
997
  iconType: showType,
998
998
  duration,
999
999
  },
1000
1000
  });
1001
1001
  }
1002
1002
  routerURL,
1003
1003
  routerParam,
1004
1004
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1005
1005
  const getCallBackName = `window.${callBackName}`;
1006
1006
  const params = {
1007
1007
  routerURL,
1008
1008
  serialize: '1',
1009
1009
  routerParam,
1010
1010
  callBackName: getCallBackName,
1011
1011
  callBackId: `${callBackName}Ios`,
1012
1012
  };
1013
1013
  console.log(
1014
1014
  'callRouterIOS routerURL:',
1015
1015
  routerURL,
1016
1016
  ',routerParam:',
1017
1017
  routerParam,
1018
1018
  'params',
1019
1019
  params,
1020
1020
  );
1021
1021
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
1022
1022
  method: 'callRouterModuleWithParams',
1023
1023
  params: JSON.stringify(params),
1024
1024
  });
1025
1025
  routerURL,
1026
1026
  routerParam,
1027
1027
  callBackName = Message_CallBack_Name.MESSAGE_HOME_INIT,
1028
1028
  console.log('callRouterAndroid routerURL:', routerURL, ',routerParam:', routerParam);
1029
1029
  const getCallBackName = `window.${callBackName}`;
1030
1030
  routerParam?.data &&
1031
1031
  typeof routerParam?.data === 'object' &&
1032
1032
  (routerParam.data = JSON.stringify(routerParam?.data));
1033
1033
  var params = {
1034
1034
  jdRouter: '1',
1035
1035
  serialize: '1',
1036
1036
  routerURL,
1037
1037
  routerParam,
1038
1038
  callBackName: getCallBackName,
1039
1039
  callBackId: `${callBackName}Android`,
1040
1040
  };
1041
1041
  console.log('=======获取安卓router协议参数=======', params);
1042
1042
  window?.JDAppUnite?.callRouterModuleWithParams(JSON.stringify(params));
1043
1043
  callBack &&
1044
1044
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1045
1045
  Message_Type.NATIVE_SHOW_DIALOG
1046
1046
  ] = callBack);
1047
1047
  return nativePageRegisterMessage(Message_Type.NATIVE_SHOW_DIALOG, {
1048
1048
  data: params,
1049
1049
  });
1050
1050
  if (!isJdApp) {
1051
1051
  return;
1052
1052
  }
1053
1053
  if (!window[Message_CallBack_Name.MESSAGE_HOME_INIT]) {
1054
1054
  window[Message_CallBack_Name.MESSAGE_HOME_INIT] = (messageData) => {
1055
1055
  try {
1056
1056
  console.log('接收到原生通知返回的原始数据nativePageGetMessageInitCallBack', messageData);
1057
1057
  const getMessageJsonData = JSONParse(messageData);
1058
1058
  const { status } = getMessageJsonData;
1059
1059
  if (status == '0') {
1060
1060
  const { type, data } = getMessageJsonData?.data;
1061
1061
  const getSendJsonData = JSONParse(data);
1062
1062
  switch (type) {
1063
1063
  case Message_Type.NATIVE_INFO_DATA:
1064
1064
  case Message_Type.NATIVE_PAGE_FINISH:
1065
1065
  case Message_Type.NATIVE_GET_SCROLL_TOP:
1066
1066
  case Message_Type.NATIVE_TO_SCROLL_TOP:
1067
1067
  case Message_Type.NATIVE_CLOSE_SCROLL_MESSAGE:
1068
1068
  case Message_Type.NATIVE_GET_SCALED_TOUCH_SLOP:
1069
1069
  case Message_Type.NATIVE_MOBILE_CONFIG:
1070
1070
  case Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE:
1071
1071
  const getTypeCallBack =
1072
1072
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
1073
1073
  if (getTypeCallBack) {
1074
1074
  const isCallBackFunc = typeof getTypeCallBack === 'function';
1075
1075
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
1076
1076
  isCallBackFunc && getTypeCallBack(getSendJsonData);
1077
1077
  }
1078
1078
  break;
1079
1079
  case Message_Type.NATIVE_SHOW_DIALOG:
1080
1080
  const showDialogCallBack =
1081
1081
  Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][type];
1082
1082
  if (showDialogCallBack) {
1083
1083
  const isCallBackFunc = typeof showDialogCallBack === 'function';
1084
1084
  console.log(
1085
1085
  `获取${type}类型数据数据type isCallBackFunc getMessageJsonData `,
1086
1086
  type,
1087
1087
  isCallBackFunc,
1088
1088
  getMessageJsonData,
1089
1089
  );
1090
1090
  isCallBackFunc && showDialogCallBack(getMessageJsonData?.data);
1091
1091
  }
1092
1092
  break;
1093
1093
  case Message_Type.NATIVE_PAGE_SCROLL:
1094
1094
  taroEventSendPageScrollInfo(data);
1095
1095
  break;
1096
1096
  case Message_Type.NATIVE_PAGE_SCROLL_END:
1097
1097
  taroEventSendPageScrollEndInfo(data);
1098
1098
  break;
1099
1099
  case Message_Type.NATIVE_H5_SEND_MSG_TO_H5:
1100
1100
  console.log('接收到原生通知 NATIVE_H5_SEND_MSG_TO_H5', data);
1101
1101
  taroEventH5SendMsgToH5(getSendJsonData);
1102
1102
  break;
1103
1103
  case Message_Type.UPDATE_NATIVE_DATA:
1104
1104
  taroEventUpdateNativeData(getSendJsonData);
1105
1105
  break;
1106
1106
  case Message_Type.H5_TO_SCROLL_TOP:
1107
1107
  taroEventH5ToScrollTop();
1108
1108
  break;
1109
1109
  case Message_Type.NATIVE_SHOPSTOW_SEND:
1110
1110
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND', messageData);
1111
1111
  console.log('接收到原生通知 NATIVE_SHOPSTOW_SEND getSendJsonData', getSendJsonData);
1112
1112
  taroEventShopStowSend(getSendJsonData);
1113
1113
  break;
1114
1114
  case Message_Type.LUXURY_INFORM_CHANGE_HEIGHT:
1115
1115
  taroEventSendImmersionStatus(data);
1116
1116
  break;
1117
1117
  case Message_Type.NATIVE_IMMERSIVEHEADER_STATE_CHANGE:
1118
1118
  taroEventSendImmersiveHeaderChange(data);
1119
1119
  break;
1120
1120
  case Message_Type.SHOP_FOLLOW_STATE_REGISTER:
1121
1121
  taroEventSendShopFollowStateChange(data);
1122
1122
  break;
1123
1123
  default:
1124
1124
  }
1125
1125
  } else {
1126
1126
  console.log('传递数据获取异常', getMessageJsonData);
1127
1127
  }
1128
1128
  } catch (e) {
1129
1129
  console.log('获取转换异常结果', e);
1130
1130
  }
1131
1131
  };
1132
1132
  }
1133
1133
  nativePageRegisterMessage(Message_Type.NATIVE_OPEN_FLOAT, {
1134
1134
  data: params,
1135
1135
  });
1136
1136
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
1137
1137
  data: {
1138
1138
  type: NATIVE_POP_WEBVIEW_TYPE.OPEN,
1139
1139
  height: DEFAULT_POP_WEBVIEW_HEIGHT,
1140
1140
  ...params,
1141
1141
  },
1142
1142
  });
1143
1143
  nativePageRegisterMessage(Message_Type.NATIVE_POP_WEBVIEW, {
1144
1144
  data: {
1145
1145
  type: NATIVE_POP_WEBVIEW_TYPE.CLOSE,
1146
1146
  ...params,
1147
1147
  },
1148
1148
  });
1149
1149
  Taro.eventCenter.off(TaroEventType.JOIN_MEMBER_SUCCESS);
1150
1150
  console.log('popWebview关闭');
1151
1151
  nativePageRegisterMessage(Message_Type.NATIVE_H5_SEND_MSG_TO_H5, {
1152
1152
  data: params,
1153
1153
  });
1154
1154
  nativePageRegisterMessage(Message_Type.NATIVE_PUSH_NATIVE_PAGE, {
1155
1155
  data: params,
1156
1156
  });
1157
1157
  window &&
1158
1158
  (window.location.href = `xview://search?request={"action":"${Message_Type.NAVTIVE_FLOAT_READY}"}`);
1159
1159
  const { displayHeight, offSetY } = res;
1160
1160
  if (typeof displayHeight === 'undefined' || typeof offSetY === 'undefined') return;
1161
1161
  if (isIosDevice) return res;
1162
1162
  if (isAndroidDevice) {
1163
1163
  const deviceRatio = window.devicePixelRatio;
1164
1164
  const cssDisplayHeight = Math.ceil(displayHeight / deviceRatio);
1165
1165
  const cssOffsetY = Math.ceil(offSetY / deviceRatio);
1166
1166
  return {
1167
1167
  displayHeight: cssDisplayHeight,
1168
1168
  offSetY: cssOffsetY,
1169
1169
  };
1170
1170
  }
1171
1171
  nativePageRegisterMessage(Message_Type.NATIVE_UPDATE_PAGE_INFO, {
1172
1172
  data: params,
1173
1173
  });
1174
1174
  nativePageRegisterMessage(Message_Type.NATIVE_TO_BUYER_SHOW_DETAIL, {
1175
1175
  data: params,
1176
1176
  });
1177
1177
  nativePageRegisterMessage(Message_Type.NATIVE_TO_HIDE_JD_SHOP_HEADER, {
1178
1178
  data: params,
1179
1179
  });
1180
1180
  nativePageRegisterMessage(Message_Type.NATIVE_TO_SHOW_CART_BTN, {
1181
1181
  data: params,
1182
1182
  });
1183
1183
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_REGISTER, {
1184
1184
  data: params,
1185
1185
  });
1186
1186
  callBack &&
1187
1187
  (Message_Trigger_CallBackFuncObj[Message_CallBack_Name.MESSAGE_HOME_INIT][
1188
1188
  Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE
1189
1189
  ] = callBack);
1190
1190
  nativePageRegisterMessage(Message_Type.NATIVE_GET_SHOP_FOLLOW_STATE, {
1191
1191
  data: {},
1192
1192
  });
1193
1193
  nativePageRegisterMessage(Message_Type.SHOP_FOLLOW_STATE_SYNC, {
1194
1194
  data: {
1195
1195
  followed: followState,
1196
1196
  },
1197
1197
  });
1198
1198
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_LIVE_RESERVE_STATE, {
1199
1199
  data: params,
1200
1200
  });
1201
1201
  Taro.eventCenter.on('SEND_MSG_TO_NATIVE', (key, params) => {
1202
1202
  nativePageRegisterMessage(key, {
1203
1203
  data: params,
1204
1204
  });
1205
1205
  });
1206
1206
  nativePageRegisterMessage(Message_Type.H5_TO_NATIVE_SCROLL_TO_TOP, {
1207
1207
  data: params,
1208
1208
  });