@conecli/cone-render 0.9.1-shop2.19 → 0.9.1-shop2.20

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