mix-public 1.0.0

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.
@@ -0,0 +1,2569 @@
1
+ // import {
2
+ // closeToast,
3
+ // showConfirmDialog,
4
+ // showDialog,
5
+ // showLoadingToast,
6
+ // showNotify,
7
+ // } from "vant"
8
+ import { mixLocalShakeDownDecrypt, mixLocalShakeDownEncrypt } from "./cryptoJS.js"
9
+ import { getAppBottomNavs } from "../pageRender/getInfo.js"
10
+ import { Cookies } from "./cookie.js"
11
+
12
+ function mixJsonStringify(val) {
13
+ try {
14
+ return JSON.stringify(val)
15
+ } catch (e) {
16
+ return str
17
+ }
18
+ }
19
+ function mixJsonParse(str) {
20
+ try {
21
+ return JSON.parse(str)
22
+ } catch (e) {
23
+ return str
24
+ }
25
+ }
26
+
27
+ function mixShowAlert(message) {
28
+ alert(message)
29
+ // showNotify({ message })
30
+ }
31
+
32
+ const loginUrl = "user-login";
33
+ var u = navigator.userAgent
34
+ var isHarmony =
35
+ u.indexOf("harmonyos") > -1 ||
36
+ u.indexOf("openharmony") > -1 ||
37
+ u.indexOf("HarmonyOS") > -1 ||
38
+ u.indexOf("OpenHarmony") > -1
39
+
40
+ var isAndroid =
41
+ u.indexOf("Android") > -1 ||
42
+ u.indexOf("Linux") > -1 ||
43
+ u.indexOf("harmonyos") > -1 ||
44
+ u.indexOf("openharmony") > -1 ||
45
+ u.indexOf("HarmonyOS") > -1 ||
46
+ u.indexOf("OpenHarmony") > -1
47
+
48
+ var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) || /iPad|Macintosh/i.test(u)
49
+ if (
50
+ u.toLowerCase().match(/MicroMessenger/i) == "micromessenger" &&
51
+ u.toLowerCase().indexOf("miniprogram") < 0
52
+ ) {
53
+ var isWeChat = true
54
+ }
55
+ if (u.toLowerCase().indexOf("miniprogram") > -1) {
56
+ var isMiniProgram = true
57
+ }
58
+ if (/AlipayClient/.test(u)) {
59
+ var isAlipay = true
60
+ }
61
+ export const mixPublicLib = (isWeb) =>{
62
+ return {
63
+ isWeb,
64
+ setAccountType: function (type = "") {
65
+ mixPublicLib(isWeb).putCookieInfo("app_login_for_auditAccount", type, false)
66
+ },
67
+ getAccountType: function () {
68
+ return mixPublicLib(isWeb).getCookieInfo("app_login_for_auditAccount", false) || ""
69
+ },
70
+ /**
71
+ * 跳转页面
72
+ * Url:跳转目标页面(以http开头为跳转外部网页)
73
+ * */
74
+ Goto: function (op = {}) {
75
+ const Url = op.Url || op
76
+ const Jump = op.Jump || 1
77
+ var row = "{"
78
+ row += '"Url":"' + Url + '",'
79
+ row += '"Jump":"' + Jump + '"'
80
+ row += "}"
81
+ if (isWeChat || isAlipay || isWeb) {
82
+ if (Url.indexOf("http") == 0) {
83
+ window.location.href = Url
84
+ return
85
+ }
86
+ window.location.href = Url + ".html"
87
+ } else if (isMiniProgram) {
88
+ // 后期添加
89
+ } else if (isAndroid) {
90
+ Func.GotoUrl(row)
91
+ } else if (isIOS) {
92
+ window.webkit.messageHandlers.GotoUrl.postMessage(row)
93
+ }
94
+ },
95
+
96
+ /**
97
+ * 跳转首页(仅用于登录页面)跳转页面为配置下标为0的页面
98
+ * */
99
+ GotoMain: function () {
100
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
101
+ mixPublicLib(isWeb).Goto({ Url: window.mixIndexUrlList[0] })
102
+ } else if (isMiniProgram) {
103
+ // 后期添加
104
+ } else if (isAndroid) {
105
+ Func.GotoMain()
106
+ } else if (isIOS) {
107
+ window.webkit.messageHandlers.GotoMain.postMessage({})
108
+ }
109
+ },
110
+
111
+ /**
112
+ * 抽屉效果
113
+ * 1:左,2:上,3:右,4:下
114
+ * */
115
+ Drawer: function (op = {}) {
116
+ const Url = op.Url || ""
117
+ const ClickClose = op.ClickClose || 0
118
+ const Width = op.Width || "0.8"
119
+ const Height = op.Height || "0.8"
120
+ const AnimationDirection = op.AnimationDirection || "0.8"
121
+ const Duration = op.Duration || "500"
122
+ const MaskColor = op.MaskColor || "#33FFFFFF"
123
+ var row = "{"
124
+ row += '"Url":"' + Url + '",'
125
+ row += '"ClickClose":"' + ClickClose + '",'
126
+ row += '"Height":"' + Height + '",'
127
+ row += '"Width":"' + Width + '",'
128
+ row += '"AnimationDirection":"' + AnimationDirection + '",'
129
+ row += '"Duration":"' + Duration + '",'
130
+ row += '"MaskColor":"' + MaskColor + '"'
131
+ row += "}"
132
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
133
+ } else if (isAndroid) {
134
+ Func.Drawer(row)
135
+ } else if (isIOS) {
136
+ window.webkit.messageHandlers.Drawer.postMessage(row)
137
+ }
138
+ },
139
+
140
+ /**
141
+ * 关闭抽屉
142
+ * */
143
+ DrawerBack: function () {
144
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
145
+ } else if (isAndroid) {
146
+ Func.DrawerBack()
147
+ } else if (isIOS) {
148
+ window.webkit.messageHandlers.DrawerBack.postMessage({})
149
+ }
150
+ },
151
+
152
+ /**
153
+ * APP遮罩层
154
+ * */
155
+ PopupShow: function (op = {}) {
156
+ const Url = op.Url || ""
157
+ const ClickClose = op.ClickClose || 0
158
+ const Height = op.Height || "0.5"
159
+ const Width = op.Width || "0.7"
160
+ const MaskColor = op.MaskColor || "#33FFFFFF"
161
+ var row = "{"
162
+ row += `"Url":"${Url}",`
163
+ row += `"ClickClose":"${ClickClose}",`
164
+ row += `"Height":"${Height}",`
165
+ row += `"Width":"${Width}",`
166
+ row += `"MaskColor":"${MaskColor}"`
167
+ row += "}"
168
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
169
+ } else if (isAndroid) {
170
+ Func.PopupShow(row)
171
+ } else if (isIOS) {
172
+ window.webkit.messageHandlers.PopupShow.postMessage(row)
173
+ }
174
+ },
175
+
176
+ /**
177
+ * 关闭遮罩层
178
+ * */
179
+ PopupClose: function () {
180
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
181
+ } else if (isAndroid) {
182
+ Func.PopupClose()
183
+ } else if (isIOS) {
184
+ window.webkit.messageHandlers.PopupClose.postMessage({})
185
+ }
186
+ },
187
+
188
+ /**
189
+ * 返回
190
+ * */
191
+ GoBack: function (op = {}) {
192
+ const Level = op.Level || "1"
193
+ var row = "{"
194
+ row += '"Level":"' + Level + '"'
195
+ row += "}"
196
+ if (isWeChat || isAlipay || isWeb) {
197
+ window.history.go(-Number(Level))
198
+ window.onload = function () {
199
+ var isPageHide = false
200
+ // 页面加载(是没有刷新页面的,跟页面刷新有着本质的不同)
201
+ window.addEventListener("pageshow", function () {
202
+ if (isPageHide) {
203
+ window.location.reload()
204
+ }
205
+ })
206
+ window.addEventListener("pagehide", function () {
207
+ isPageHide = true
208
+ })
209
+ }
210
+ } else if (isMiniProgram) {
211
+ wx.miniProgram.navigateBack({
212
+ delta: Level,
213
+ })
214
+ } else if (isAndroid) {
215
+ Func.GoBack(row)
216
+ } else if (isIOS) {
217
+ window.webkit.messageHandlers.GoBack.postMessage(row)
218
+ }
219
+ },
220
+
221
+ /**
222
+ * 二级页面返回一级页面
223
+ * parameter: String(num)
224
+ * */
225
+ ReturnHomePage: function (op = {}) {
226
+ const Index = op.Index || 0
227
+ var row = "{"
228
+ row += '"Index":"' + Index + '"'
229
+ row += "}"
230
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
231
+ mixPublicLib(isWeb).Goto({ Url: window.mixIndexUrlList[Index] })
232
+ } else if (isAndroid) {
233
+ Func.ReturnHomePage(row)
234
+ } else if (isIOS) {
235
+ window.webkit.messageHandlers.ReturnHomePage.postMessage(row)
236
+ }
237
+ },
238
+
239
+ /**
240
+ * 退出APP至登录页面方法
241
+ * */
242
+ LoginOut: function () {
243
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
244
+ mixPublicLib(isWeb).Goto({ Url: loginUrl })
245
+ } else if (isAndroid) {
246
+ Func.LoginOut()
247
+ } else if (isIOS) {
248
+ window.webkit.messageHandlers.LoginOut.postMessage({})
249
+ }
250
+ },
251
+
252
+ /*
253
+ * 跳转至浏览器页面
254
+ * params: (线上地址)
255
+ */
256
+ GotoUrlByBrowse: function (op = {}) {
257
+ const Url = op.Url || ""
258
+ var row = "{"
259
+ row += '"Url":"' + Url + '"'
260
+ row += "}"
261
+ if (isWeChat || isAlipay || isWeb) {
262
+ window.location.href = Url
263
+ } else if (isMiniProgram) {
264
+ } else if (isAndroid) {
265
+ Func.GotoUrlByBrowse(row)
266
+ } else if (isIOS) {
267
+ window.webkit.messageHandlers.GotoUrlByBrowse.postMessage(row)
268
+ }
269
+ },
270
+
271
+ /**
272
+ * 跳转video页面
273
+ * */
274
+ GoToVideo: function (op = {}) {
275
+ const Url = op.Url || ""
276
+ const VideoUrls = op.VideoUrls || ""
277
+ var row = "{"
278
+ row += '"Url":"' + Url + '",'
279
+ row += '"VideoUrls":"' + VideoUrls + '",'
280
+ row += "}"
281
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
282
+ mixPublicLib(isWeb).Goto({ Url })
283
+ } else if (isAndroid) {
284
+ Func.GoToVideo(row)
285
+ } else if (isIOS) {
286
+ window.webkit.messageHandlers.GoToVideo.postMessage(row)
287
+ }
288
+ },
289
+
290
+ /**
291
+ * 跳转地图
292
+ * */
293
+ GoToMap: function (op = {}) {
294
+ const Url = op.Url || ""
295
+ var row = "{"
296
+ row += '"Url":"' + Url + '"'
297
+ row += "}"
298
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
299
+ mixPublicLib(isWeb).Goto({ Url })
300
+ } else if (isAndroid) {
301
+ Func.GoToMap(row)
302
+ } else if (isIOS) {
303
+ window.webkit.messageHandlers.GoToMap.postMessage(row)
304
+ }
305
+ },
306
+
307
+ /**
308
+ * 地图搜索
309
+ * */
310
+ MapSearch: function (op = {}) {
311
+ const KeyWord = op.KeyWord || ""
312
+ var row = "{"
313
+ row += '"KeyWord":"' + KeyWord + '"'
314
+ row += "}"
315
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
316
+ console.log(
317
+ `%c 跳转地图页=> %c 搜索参数为:${KeyWord}`,
318
+ "color: blue",
319
+ "color: #4CAF50;",
320
+ )
321
+ } else if (isAndroid) {
322
+ Func.MapSearch(row)
323
+ } else if (isIOS) {
324
+ window.webkit.messageHandlers.MapSearch.postMessage(row)
325
+ }
326
+ },
327
+
328
+ /**
329
+ * 打开其他APP
330
+ * */
331
+ OpenOtherApp: function (op = {}) {
332
+ const MethodName = op.MethodName || "OpenOtherAppFail"
333
+ const Url = op.Url || ""
334
+ var row = "{"
335
+ row += '"Url":"' + Url + '",'
336
+ row += '"MethodName":"' + MethodName + '"'
337
+ row += "}"
338
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
339
+ console.log(
340
+ `%c 跳转其他APP=> %c APP参数为:${row}`,
341
+ "color: blue",
342
+ "color: #4CAF50;",
343
+ )
344
+ } else if (isAndroid) {
345
+ Func.OpenOtherApp(row)
346
+ } else if (isIOS) {
347
+ window.webkit.messageHandlers.OpenOtherApp.postMessage(row)
348
+ }
349
+ },
350
+
351
+ /**
352
+ * 打开微信小程序
353
+ * */
354
+ OpenWechatMiniProgram: function (op = {}) {
355
+ const MethodName = op.MethodName || "OpenWechatMiniProgramFail"
356
+ const UserName = op.MiniProgramId || ""
357
+ const Path = op.Path || ""
358
+ var row = "{"
359
+ row += '"UserName":"' + UserName + '",'
360
+ row += '"Path":"' + Path + '",'
361
+ row += '"MethodName":"' + MethodName + '"'
362
+ row += "}"
363
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
364
+ console.log(
365
+ `%c 跳转微信小程序=> %c 参数为:${row}`,
366
+ "color: blue",
367
+ "color: #4CAF50;",
368
+ )
369
+ } else if (isAndroid) {
370
+ Func.OpenWechatMiniProgram(row)
371
+ } else if (isIOS) {
372
+ window.webkit.messageHandlers.OpenWechatMiniProgram.postMessage(row)
373
+ }
374
+ },
375
+
376
+ /**
377
+ * 存储cookies
378
+ * */
379
+ putCookieInfo: function (option, val, isDecrypt = true) {
380
+ let Key,
381
+ Value,
382
+ Type = 1,
383
+ Conf
384
+ if (!option.Key) {
385
+ Key = option
386
+ Value = val
387
+ } else {
388
+ Key = option.Key
389
+ Value = option.Value
390
+ Type = option.Type
391
+ Conf = option.Conf
392
+ }
393
+
394
+ const encryptionValue =
395
+ Value !== "" && Value !== null && Value !== undefined
396
+ ? isDecrypt
397
+ ? mixLocalShakeDownEncrypt(mixJsonStringify({ data: Value }))
398
+ : mixJsonStringify({ data: Value })
399
+ : ""
400
+
401
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
402
+ Cookies.set(Key, encryptionValue, Type, Conf)
403
+ } else if (isAndroid) {
404
+ const row = JSON.stringify({
405
+ Key,
406
+ Value: encryptionValue,
407
+ })
408
+ Func.putCookieInfo(row)
409
+ } else if (isIOS) {
410
+ const row = JSON.stringify({
411
+ Key,
412
+ Value: encodeURIComponent(encryptionValue),
413
+ })
414
+ window.webkit.messageHandlers.putCookieInfo.postMessage(row)
415
+ }
416
+ },
417
+
418
+ /**
419
+ * 获取cookies
420
+ * */
421
+ getCookieInfo: function (option, isDecrypt = true) {
422
+ const mixJsonParseForData = (val) => {
423
+ return mixJsonParse(val)?.data
424
+ }
425
+
426
+ let Key, Type, Conf
427
+ if (!option.Key) {
428
+ Key = option
429
+ } else {
430
+ Key = option.Key
431
+ Type = option.Type
432
+ Conf = option.Conf
433
+ }
434
+ var row = "{"
435
+ row += '"Key":"' + Key + '"'
436
+ row += "}"
437
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
438
+ if (Type == 3) {
439
+ return new Promise(async (resolve, reject) => {
440
+ resolve(
441
+ isDecrypt
442
+ ? mixJsonParseForData(
443
+ mixLocalShakeDownDecrypt(await Cookies.get(Key, Type, Conf)),
444
+ )
445
+ : mixJsonParseForData(await Cookies.get(Key, Type, Conf)),
446
+ )
447
+ })
448
+ } else {
449
+ return isDecrypt
450
+ ? Boolean(mixLocalShakeDownDecrypt(Cookies.get(Key, Type, Conf))) &&
451
+ mixLocalShakeDownDecrypt(Cookies.get(Key, Type, Conf)) != "undefined" &&
452
+ mixLocalShakeDownDecrypt(Cookies.get(Key, Type, Conf)) != "null"
453
+ ? mixJsonParseForData(mixLocalShakeDownDecrypt(Cookies.get(Key, Type, Conf)))
454
+ : null
455
+ : mixJsonParseForData(Cookies.get(Key, Type, Conf))
456
+ }
457
+ } else if (isAndroid) {
458
+ return isDecrypt
459
+ ? mixJsonParseForData(mixLocalShakeDownDecrypt(Func.getCookieInfo(row)))
460
+ : mixJsonParseForData(Func.getCookieInfo(row))
461
+ } else if (isIOS) {
462
+ return isDecrypt
463
+ ? mixJsonParseForData(
464
+ mixLocalShakeDownDecrypt(
465
+ decodeURIComponent(window.prompt("getCookieInfo", Key)),
466
+ ),
467
+ )
468
+ : mixJsonParseForData(
469
+ decodeURIComponent(window.prompt("getCookieInfo", Key)),
470
+ )
471
+ }
472
+ },
473
+
474
+ /**
475
+ * 分享链接到微信好友
476
+ * */
477
+ ShareSessionUrl: function (op = {}) {
478
+ const Title = op.Title || ""
479
+ const Detail = op.Detail || ""
480
+ const Icon = op.Icon || ""
481
+ const Url = op.Url || ""
482
+ var row = "{"
483
+ row += '"Title":"' + Title + '",'
484
+ row += '"Detail":"' + Detail + '",'
485
+ row += '"Icon":"' + Icon + '",'
486
+ row += '"Url":"' + Url + '"'
487
+ row += "}"
488
+ if (isWeChat || isAlipay || isWeb) {
489
+ console.log(
490
+ `%c 分享链接到微信好友=> %c 参数为:${row}`,
491
+ "color: blue",
492
+ "color: #4CAF50;",
493
+ )
494
+ } else if (isAndroid) {
495
+ Func.ShareSessionUrl(row)
496
+ } else if (isIOS) {
497
+ window.webkit.messageHandlers.ShareSessionUrl.postMessage(row)
498
+ }
499
+ },
500
+
501
+ /**
502
+ * 分享在线图片到微信好友
503
+ * */
504
+ ShareSessionImage: function (op = {}) {
505
+ const PicturePath = op.PicturePath || ""
506
+ var row = "{"
507
+ row += '"PicturePath":"' + PicturePath + '"'
508
+ row += "}"
509
+ if (isWeChat || isAlipay || isWeb) {
510
+ console.log(
511
+ `%c 分享在线图片到微信好友=> %c 参数为:${row}`,
512
+ "color: blue",
513
+ "color: #4CAF50;",
514
+ )
515
+ } else if (isAndroid) {
516
+ Func.ShareSessionImage(row)
517
+ } else if (isIOS) {
518
+ window.webkit.messageHandlers.ShareSessionImage.postMessage(row)
519
+ }
520
+ },
521
+
522
+ /**
523
+ * 分享链接到微信微信朋友圈
524
+ * */
525
+ ShareTimelineUrl: function (op = {}) {
526
+ const Title = op.Title || ""
527
+ const Detail = op.Detail || ""
528
+ const Icon = op.Icon || ""
529
+ const Url = op.Url || ""
530
+ var row = "{"
531
+ row += '"Title":"' + Title + '",'
532
+ row += '"Detail":"' + Detail + '",'
533
+ row += '"Icon":"' + Icon + '",'
534
+ row += '"Url":"' + Url + '"'
535
+ row += "}"
536
+ if (isWeChat || isAlipay || isWeb) {
537
+ console.log(
538
+ `%c 分享链接到微信微信朋友圈=> %c 参数为:${row}`,
539
+ "color: blue",
540
+ "color: #4CAF50;",
541
+ )
542
+ } else if (isAndroid) {
543
+ Func.ShareTimelineUrl(row)
544
+ } else if (isIOS) {
545
+ window.webkit.messageHandlers.ShareTimelineUrl.postMessage(row)
546
+ }
547
+ },
548
+
549
+ /**
550
+ * 分享图片到微信朋友圈
551
+ * */
552
+ ShareTimelineImage: function (op = {}) {
553
+ const PicturePath = op.PicturePath || ""
554
+ var row = "{"
555
+ row += '"PicturePath":"' + PicturePath + '"'
556
+ row += "}"
557
+ if (isWeChat || isAlipay || isWeb) {
558
+ console.log(
559
+ `%c 分享图片到微信朋友圈=> %c 参数为:${row}`,
560
+ "color: blue",
561
+ "color: #4CAF50;",
562
+ )
563
+ } else if (isAndroid) {
564
+ Func.ShareTimelineImage(row)
565
+ } else if (isIOS) {
566
+ window.webkit.messageHandlers.ShareTimelineImage.postMessage(row)
567
+ }
568
+ },
569
+
570
+ /**
571
+ * 分享base64图片文件到朋友圈
572
+ * */
573
+ Base64ImageShareWechatTimeline: function (op = {}) {
574
+ const Base64 = op.Base64 || ""
575
+ var row = "{"
576
+ row += '"Base64":"' + Base64 + '"'
577
+ row += "}"
578
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
579
+ console.log(
580
+ `%c 分享base64图片文件到朋友圈=> %c 参数为:${row}`,
581
+ "color: blue",
582
+ "color: #4CAF50;",
583
+ )
584
+ } else if (isAndroid) {
585
+ Func.Base64ImageShareWechatTimeline(row)
586
+ } else if (isIOS) {
587
+ window.webkit.messageHandlers.Base64ImageShareWechatTimeline.postMessage(
588
+ row,
589
+ )
590
+ }
591
+ },
592
+
593
+ /**
594
+ * 分享base64图片文件到微信好友
595
+ * */
596
+ Base64ImageShareWechatSession: function (op = {}) {
597
+ const Base64 = op.Base64 || ""
598
+ var row = "{"
599
+ row += '"Base64":"' + Base64 + '"'
600
+ row += "}"
601
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
602
+ console.log(
603
+ `%c 分享base64图片文件到微信好友=> %c 参数为:${row}`,
604
+ "color: blue",
605
+ "color: #4CAF50;",
606
+ )
607
+ } else if (isAndroid) {
608
+ Func.Base64ImageShareWechatSession(row)
609
+ } else if (isIOS) {
610
+ window.webkit.messageHandlers.Base64ImageShareWechatSession.postMessage(
611
+ row,
612
+ )
613
+ }
614
+ },
615
+
616
+ /**
617
+ * 选择图片(唤起相机或相册)
618
+ * 多张图片调用MethodName回传图片数组
619
+ * IOS base64
620
+ * android 图片路径
621
+ * */
622
+ UploadPhoto: function (op = {}) {
623
+ const MethodName = op.MethodName || "AppUpload"
624
+ const PhotoCount = op.PhotoCount || 1
625
+ const Quality = op.Quality || 1
626
+ var row = "{"
627
+ row += '"MethodName":"' + MethodName + '",'
628
+ row += '"PhotoCount":"' + PhotoCount + '",'
629
+ row += '"Quality":"' + Quality + '"'
630
+ row += "}"
631
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
632
+ let $upload
633
+ $upload = document.createElement("input")
634
+ $upload.id = new Date().getTime()
635
+ $upload.type = "file"
636
+ $upload.style.display = "none"
637
+ var body = document.querySelector("body")
638
+ body.appendChild($upload)
639
+ $upload.addEventListener("change", function (evt) {
640
+ var files = evt.target.files
641
+ if (files.length > 0) {
642
+ window[MethodName](files[0])
643
+ }
644
+ $upload.value = "" //清空 input value
645
+ })
646
+ $upload.click()
647
+ } else if (isAndroid) {
648
+ Func.UploadPhoto(row)
649
+ } else if (isIOS) {
650
+ window.webkit.messageHandlers.UploadPhoto.postMessage(row)
651
+ }
652
+ },
653
+
654
+ /**
655
+ * 相册选择图片
656
+ * 多张图片调用MethodName回传图片数组
657
+ * IOS base64
658
+ * android 图片路径
659
+ * */
660
+ LibraryPhoto: function (op = {}) {
661
+ const MethodName = op.MethodName || "AppUpload"
662
+ const PhotoCount = op.PhotoCount || 1
663
+ const Quality = op.Quality || 1
664
+ var row = "{"
665
+ row += '"MethodName":"' + MethodName + '",'
666
+ row += '"PhotoCount":"' + PhotoCount + '",'
667
+ row += '"Quality":"' + Quality + '"'
668
+ row += "}"
669
+ if (isWeChat || isAlipay || isWeb) {
670
+ let $upload
671
+ $upload = document.createElement("input")
672
+ $upload.id = new Date().getTime()
673
+ $upload.type = "file"
674
+ $upload.style.display = "none"
675
+ var body = document.querySelector("body")
676
+ body.appendChild($upload)
677
+ $upload.addEventListener("change", function (evt) {
678
+ var files = evt.target.files
679
+ if (files.length > 0) {
680
+ window[MethodName](files[0])
681
+ }
682
+ $upload.value = "" //清空 input value
683
+ })
684
+ $upload.click()
685
+ } else if (isAndroid) {
686
+ Func.LibraryPhoto(row)
687
+ } else if (isIOS) {
688
+ window.webkit.messageHandlers.LibraryPhoto.postMessage(row)
689
+ }
690
+ },
691
+
692
+ /**
693
+ * 相机选择图片
694
+ * 多张图片调用MethodName回传图片数组
695
+ * IOS base64
696
+ * android 图片路径
697
+ * */
698
+ CameraPhoto: function (op = {}) {
699
+ const MethodName = op.MethodName || "AppUpload"
700
+ const PhotoCount = op.PhotoCount || 1
701
+ const Quality = op.Quality || 1
702
+ var row = "{"
703
+ row += '"MethodName":"' + MethodName + '",'
704
+ row += '"PhotoCount":"' + PhotoCount + '",'
705
+ row += '"Quality":"' + Quality + '"'
706
+ row += "}"
707
+ if (isWeChat || isAlipay || isWeb) {
708
+ let $upload
709
+ $upload = document.createElement("input")
710
+ $upload.id = new Date().getTime()
711
+ $upload.type = "file"
712
+ $upload.style.display = "none"
713
+ var body = document.querySelector("body")
714
+ body.appendChild($upload)
715
+ $upload.addEventListener("change", function (evt) {
716
+ var files = evt.target.files
717
+ if (files.length > 0) {
718
+ window[MethodName](files[0])
719
+ }
720
+ $upload.value = "" //清空 input value
721
+ })
722
+ $upload.click()
723
+ } else if (isAndroid) {
724
+ Func.CameraPhoto(row)
725
+ } else if (isIOS) {
726
+ window.webkit.messageHandlers.CameraPhoto.postMessage(row)
727
+ }
728
+ },
729
+
730
+ /**
731
+ * 保存在线图片至SD
732
+ * */
733
+ SaveToSd: function (op = {}) {
734
+ const PicPath = op.PicPath || ""
735
+ var row = "{"
736
+ row += '"PicPath":"' + PicPath + '"'
737
+ row += "}"
738
+ if (isWeChat || isAlipay || isWeb) {
739
+ console.log(
740
+ `%c 保存在线图片至SD=> %c 参数为:${row}`,
741
+ "color: blue",
742
+ "color: #4CAF50;",
743
+ )
744
+ } else if (isAndroid) {
745
+ Func.SaveToSd(row)
746
+ } else if (isIOS) {
747
+ window.webkit.messageHandlers.SaveToSd.postMessage(row)
748
+ }
749
+ },
750
+
751
+ /**
752
+ * 保存base64图片至SD
753
+ * */
754
+ SaveBase64ImageToSd: function (op = {}) {
755
+ const Base64 = op.Base64 || ""
756
+ var row = "{"
757
+ row += '"Base64":"' + Base64 + '"'
758
+ row += "}"
759
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
760
+ console.log(
761
+ `%c 保存base64图片至SD=> %c 参数为:${row}`,
762
+ "color: blue",
763
+ "color: #4CAF50;",
764
+ )
765
+ } else if (isAndroid) {
766
+ Func.SaveBase64ImageToSd(row)
767
+ } else if (isIOS) {
768
+ window.webkit.messageHandlers.SaveBase64ImageToSd.postMessage(row)
769
+ }
770
+ },
771
+
772
+ /**
773
+ * 图片缓存
774
+ * */
775
+ CachePicture: function (op = {}) {
776
+ const Picurl = op.PicUrl || ""
777
+ const Domid = op.Domid || ""
778
+ var row = "{"
779
+ row += '"Picurl":"' + Picurl + '"'
780
+ row += "}"
781
+ var result = ""
782
+ if (isWeChat || isAlipay || isWeb) {
783
+ var indexedDB =
784
+ window.indexedDB ||
785
+ window.mozIndexedDB ||
786
+ window.webkitIndexedDB ||
787
+ window.msIndexedDB
788
+ var dataBase = null
789
+ dataBase = indexedDB.open("yunmuit", 1)
790
+ dataBase.onupgradeneeded = function (e) {
791
+ var active = dataBase.result
792
+ var objectDb = active.createObjectStore("seasidecity", {
793
+ keyPath: "id",
794
+ })
795
+ objectDb.createIndex("index_base64", "base64", {
796
+ unique: false,
797
+ })
798
+ }
799
+ dataBase.onsuccess = function (e) {
800
+ var transaction = dataBase.result.transaction(["seasidecity"])
801
+ var objectStore = transaction.objectStore("seasidecity")
802
+ var request = objectStore.get(md5(Picurl))
803
+ request.onerror = function (event) {}
804
+ request.onsuccess = function (event) {
805
+ if (request.result) {
806
+ setTimeout(function () {
807
+ if (document.getElementById(Domid))
808
+ document.getElementById(Domid).src = request.result.base64
809
+ }, 300)
810
+ } else {
811
+ setTimeout(function () {
812
+ if (document.getElementById(Domid))
813
+ document.getElementById(Domid).src = Picurl
814
+ }, 300)
815
+ var img = document.createElement("img")
816
+ img.setAttribute("crossOrigin", "anonymous")
817
+ img.src = Picurl
818
+ img.onload = function () {
819
+ var canvas = document.createElement("canvas")
820
+ canvas.width = img.width
821
+ canvas.height = img.height
822
+ var ctx = canvas.getContext("2d")
823
+ ctx.drawImage(img, 0, 0, img.width, img.height)
824
+ var dataURL = canvas.toDataURL("image/png")
825
+
826
+ var active = dataBase.result
827
+ var data = active.transaction(["seasidecity"], "readwrite")
828
+ var objectDb = data.objectStore("seasidecity")
829
+ var request = objectDb.put({
830
+ id: md5(Picurl),
831
+ base64: dataURL,
832
+ })
833
+ request.onerror = function (e) {}
834
+
835
+ data.oncomplete = function (e) {}
836
+ }
837
+ }
838
+ }
839
+ }
840
+ dataBase.onerror = function (e) {}
841
+ } else if (isAndroid) {
842
+ result = Func.CachePicture(row)
843
+ } else if (isIOS) {
844
+ result = window.prompt("CachePicture", Picurl)
845
+ }
846
+ return result
847
+ },
848
+
849
+ /**
850
+ * 图片预览放大、缩小(多张)
851
+ * */
852
+ PhotoBrowser: function (op = {}) {
853
+ const Index = op.Index || 0
854
+ const ImageList = op.ImageList || []
855
+ const row = JSON.stringify({ Index, ImageList })
856
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
857
+ console.log(
858
+ `%c 图片预览=> %c 参数为:${row}`,
859
+ "color: blue",
860
+ "color: #4CAF50;",
861
+ )
862
+ } else if (isAndroid) {
863
+ Func.PhotoBrowser(row)
864
+ } else if (isIOS) {
865
+ window.webkit.messageHandlers.PhotoBrowser.postMessage(row)
866
+ }
867
+ },
868
+
869
+ /**
870
+ * 跳转APP内小程序
871
+ * */
872
+ JumpMiniApp: function (op = {}) {
873
+ const OnlineUrl = op.OnlineUrl || ""
874
+ const MiniAppId = op.MiniAppId || ""
875
+ const Url = op.JumpUrl || ""
876
+ const Path = Url
877
+ var row = ""
878
+ if (Url !== "") {
879
+ row += "{"
880
+ row += '"MiniAppId":"' + MiniAppId + '",'
881
+ row += '"Path":"' + Path + '"'
882
+ row += "}"
883
+ } else {
884
+ row += "{"
885
+ row += '"MiniAppId":"' + MiniAppId + '"'
886
+ row += "}"
887
+ }
888
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
889
+ if (OnlineUrl) {
890
+ mixPublicLib(isWeb).Goto({ Url: OnlineUrl })
891
+ } else {
892
+ console.log("%c暂无在线小程序链接", "color: red")
893
+ }
894
+ } else if (isAndroid) {
895
+ Func.JumpMiniApp(row)
896
+ } else if (isIOS) {
897
+ window.webkit.messageHandlers.JumpMiniApp.postMessage(row)
898
+ }
899
+ },
900
+
901
+ /**
902
+ * 跳转本地小程序
903
+ * parameter:
904
+ * ParentId(全屏小程序ID、选填)
905
+ * HalfScreenId(半屏小程序ID、必填)
906
+ * */
907
+ JumpHalfScreenApp: function (op = {}) {
908
+ const OnlineUrl = op.OnlineUrl || ""
909
+ const ParentId = op.ParentId || ""
910
+ const HalfScreenId = op.HalfScreenId || ""
911
+ const Height = op.Height || 0.8
912
+ var row = ""
913
+ row += "{"
914
+ row += '"ParentId":"' + ParentId + '",'
915
+ row += '"Height":"' + Height + '",'
916
+ row += '"HalfScreenId":"' + HalfScreenId + '"'
917
+ row += "}"
918
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
919
+ if (OnlineUrl) {
920
+ mixPublicLib(isWeb).Goto({ Url: OnlineUrl })
921
+ } else {
922
+ console.log("%c暂无在线小程序链接", "color: red")
923
+ }
924
+ } else if (isAndroid) {
925
+ Func.JumpHalfScreenApp(row)
926
+ } else if (isIOS) {
927
+ window.webkit.messageHandlers.JumpHalfScreenApp.postMessage(row)
928
+ }
929
+ },
930
+
931
+ /**
932
+ * 获取小程序打开历史
933
+ * parameter: 无
934
+ * */
935
+ getMiniProgramUsageRecord: function () {
936
+ var result = ""
937
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
938
+ result = JSON.stringify([
939
+ {
940
+ id: "miniappid",
941
+ time: "lastOpenTime",
942
+ name: "小程序名称",
943
+ imagePath: "xxxxx",
944
+ },
945
+ ])
946
+ } else if (isAndroid) {
947
+ result = Func.getMiniProgramUsageRecord()
948
+ } else if (isIOS) {
949
+ result = decodeURIComponent(
950
+ window.prompt("getMiniProgramUsageRecord", ""),
951
+ )
952
+ }
953
+ return JSON.parse(result)
954
+ },
955
+
956
+ /**
957
+ * 清除所有小程序缓存
958
+ * */
959
+ MiniAppDelete: function () {
960
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
961
+ console.log(`清除所有小程序缓存`, "color: blue", "color: #4CAF50;")
962
+ } else if (isAndroid) {
963
+ Func.MiniAppDelete()
964
+ } else if (isIOS) {
965
+ window.webkit.messageHandlers.MiniAppDelete.postMessage({})
966
+ }
967
+ },
968
+
969
+ /**
970
+ * 激励广告
971
+ * (调用时弹出广告)
972
+ * */
973
+ ShowRewardedVideo: function () {
974
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
975
+ console.log(`激励广告`, "color: blue", "color: #4CAF50;")
976
+ } else if (isAndroid) {
977
+ Func.ShowRewardedVideo()
978
+ } else if (isIOS) {
979
+ window.webkit.messageHandlers.ShowRewardedVideo.postMessage({})
980
+ }
981
+ },
982
+
983
+ /**
984
+ * 插屏广告
985
+ * (调用时弹出广告)
986
+ * */
987
+ ShowInterstitial: function () {
988
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
989
+ console.log(`插屏广告`, "color: blue", "color: #4CAF50;")
990
+ } else if (isAndroid) {
991
+ Func.ShowInterstitial()
992
+ } else if (isIOS) {
993
+ window.webkit.messageHandlers.ShowInterstitial.postMessage({})
994
+ }
995
+ },
996
+
997
+ /**
998
+ * 文件下载
999
+ * op:
1000
+ * [
1001
+ * {
1002
+ * "downloadUrl":"https://lf9-cdn-tos.mp4",
1003
+ * "path":"mp4/xgplayer-demo-720p.mp4"
1004
+ * }
1005
+ * ]
1006
+ * */
1007
+ DownloadFiles: function (op = []) {
1008
+ const List = op || []
1009
+ var row = JSON.stringify(List)
1010
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1011
+ console.log(
1012
+ `%c 文件下载=> %c 参数为:${row}`,
1013
+ "color: blue",
1014
+ "color: #4CAF50;",
1015
+ )
1016
+ } else if (isAndroid) {
1017
+ Func.DownloadFiles(row)
1018
+ } else if (isIOS) {
1019
+ window.webkit.messageHandlers.DownloadFiles.postMessage(row)
1020
+ }
1021
+ },
1022
+
1023
+ /**
1024
+ * 取消文件下载
1025
+ * op:
1026
+ * [
1027
+ * "https://lf9-cdn-tos.mp4",
1028
+ * "https://lf9-cdn-tos.mp4"
1029
+ * ]
1030
+ * */
1031
+ DownloadFileCancel: function (op = []) {
1032
+ const List = op || []
1033
+ var row = JSON.stringify(List)
1034
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1035
+ console.log(
1036
+ `%c 取消文件下载=> %c 参数为:${row}`,
1037
+ "color: blue",
1038
+ "color: #4CAF50;",
1039
+ )
1040
+ } else if (isAndroid) {
1041
+ Func.DownloadFileCancel(row)
1042
+ } else if (isIOS) {
1043
+ window.webkit.messageHandlers.DownloadFileCancel.postMessage(row)
1044
+ }
1045
+ },
1046
+
1047
+ /**
1048
+ * 获取下载进度
1049
+ * op:
1050
+ * [
1051
+ * {
1052
+ * "downloadUrl":"https://lf9-cdn-tos.mp4",
1053
+ * "path":"mp4getFinishDownloadPaths/xgplayer-demo-720p.mp4"
1054
+ * }
1055
+ * ]
1056
+ *
1057
+ * return:
1058
+ * [
1059
+ * {
1060
+ * "url":"https://lf9-cdn-tos.mp4",
1061
+ * "progress":"10"
1062
+ * }
1063
+ * ]
1064
+ *
1065
+ * */
1066
+ getDownloadFileProgress: function (op = [], progress) {
1067
+ const List = op || []
1068
+ var row = JSON.stringify(List)
1069
+ var result = ""
1070
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1071
+ const arr = []
1072
+ op.forEach((item) => {
1073
+ arr.push({ url: item.downloadUrl, progress: progress + 1 })
1074
+ })
1075
+ result = arr
1076
+ } else if (isAndroid) {
1077
+ result = Func.getDownloadFileProgress()
1078
+ } else if (isIOS) {
1079
+ result = decodeURIComponent(window.prompt("getDownloadFileProgress", row))
1080
+ }
1081
+ return result
1082
+ },
1083
+
1084
+ /**
1085
+ * 删除已完成下载
1086
+ * op:
1087
+ * [
1088
+ * "mp4/lf9-cdn-tos.mp4",
1089
+ * "mp4/lf9-cdn-tos.mp4"
1090
+ * ]
1091
+ * */
1092
+ DownloadFileDelete: function (op = []) {
1093
+ const List = op || []
1094
+ var row = JSON.stringify(List)
1095
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1096
+ console.log(
1097
+ `%c 删除已完成下载=> %c 参数为:${row}`,
1098
+ "color: blue",
1099
+ "color: #4CAF50;",
1100
+ )
1101
+ } else if (isAndroid) {
1102
+ Func.DownloadFileDelete(row)
1103
+ } else if (isIOS) {
1104
+ window.webkit.messageHandlers.DownloadFileDelete.postMessage(row)
1105
+ }
1106
+ },
1107
+
1108
+ /**
1109
+ * 文件预览
1110
+ * op:
1111
+ * [
1112
+ * "mp4/lf9-cdn-tos.mp4",
1113
+ * "mp4/lf9-cdn-tos.mp4"
1114
+ * ]
1115
+ * */
1116
+ FilesPreview: function (op = []) {
1117
+ const List = op || []
1118
+ var row = JSON.stringify(List)
1119
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1120
+ console.log(
1121
+ `%c 文件预览=> %c 参数为:${row}`,
1122
+ "color: blue",
1123
+ "color: #4CAF50;",
1124
+ )
1125
+ } else if (isAndroid) {
1126
+ Func.FilesPreview(row)
1127
+ } else if (isIOS) {
1128
+ window.webkit.messageHandlers.FilesPreview.postMessage(row)
1129
+ }
1130
+ },
1131
+
1132
+ /**
1133
+ * 获取本地下载列表
1134
+ *
1135
+ * result = [
1136
+ * { path: "mp4/xgplayer-demo-720p.mp4", time: "2022-02-03 10:21:56" },
1137
+ * ];
1138
+ * */
1139
+ getFinishDownloadPaths: function () {
1140
+ var result = ""
1141
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1142
+ result = [
1143
+ { path: "mp4/xgplayer-demo-720p.mp4", time: "2022-02-03 10:21:56" },
1144
+ ]
1145
+ } else if (isAndroid) {
1146
+ result = Func.getFinishDownloadPaths()
1147
+ } else if (isIOS) {
1148
+ result = decodeURIComponent(window.prompt("getFinishDownloadPaths", ""))
1149
+ }
1150
+ return result
1151
+ },
1152
+
1153
+ /**
1154
+ * 重新刷新webview页面(webview刷新)
1155
+ * */
1156
+ RefreshDialog: function (op = {}) {
1157
+ const Hide = op.Hide || 0
1158
+ var row = "{"
1159
+ row += `"Hide":"${Hide}"`
1160
+ row += "}"
1161
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1162
+ window.location.reload()
1163
+ } else if (isAndroid) {
1164
+ Func.RefreshDialog(row)
1165
+ } else if (isIOS) {
1166
+ window.webkit.messageHandlers.RefreshDialog.postMessage(row)
1167
+ }
1168
+ },
1169
+
1170
+ /**
1171
+ * 获取当前APP页面路径
1172
+ * */
1173
+ ReturnPageUrl: function () {
1174
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1175
+ return window.location.href
1176
+ } else if (isAndroid) {
1177
+ return Func.ReturnPageUrl()
1178
+ } else if (isIOS) {
1179
+ return window.location.pathname
1180
+ }
1181
+ },
1182
+
1183
+ /**
1184
+ * 银行卡OCR
1185
+ * {
1186
+ * Type: 3,
1187
+ * BankCardNumber: "6230245124578541",
1188
+ * BankCardExpire: "2024-10-23",
1189
+ * BankCardIssuer: "",
1190
+ * BankCardOrganization: "",
1191
+ * BankCardType: "",
1192
+ * BankCardImgBase64: "data:",
1193
+ * }
1194
+ * */
1195
+ OCRBankCard: function (op = {}) {
1196
+ const MethodName = op.MethodName || "getBase64Info"
1197
+ var row = "{"
1198
+ row += '"MethodName":"' + MethodName + '"'
1199
+ row += "}"
1200
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1201
+ window[MethodName]({
1202
+ Type: 3,
1203
+ BankCardNumber: "6230245124578541",
1204
+ BankCardExpire: "2024-10-23",
1205
+ BankCardIssuer: "",
1206
+ BankCardOrganization: "",
1207
+ BankCardType: "",
1208
+ BankCardImgBase64:
1209
+ "data:image/png;base64,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",
1210
+ })
1211
+ } else if (isAndroid) {
1212
+ Func.OCRBankCard(row)
1213
+ } else if (isIOS) {
1214
+ window.webkit.messageHandlers.OCRBankCard.postMessage(row)
1215
+ }
1216
+ },
1217
+
1218
+ /**
1219
+ * 身份证OCR
1220
+ * {
1221
+ * IdCardNumber: "51382219940929720x",
1222
+ * Type,
1223
+ * IdCardName: "张xx",
1224
+ * IdCardAddress: "四川省眉山市仁寿县xxxxxxxx",
1225
+ * IdCardImgBase64: img,
1226
+ * IdCardValidDate: "2021.12.31-2041.12.31",
1227
+ * IdCardNation: "民族",
1228
+ * IdCardSex: "0",
1229
+ * IdCardAuthority: "仁寿县公安局",
1230
+ * }
1231
+ * */
1232
+ OCRIdCard: function (op = {}) {
1233
+ const Type = op.Type || op || 1
1234
+ const MethodName = op.MethodName || "getBase64Info"
1235
+ var row = "{"
1236
+ row += '"Type":"' + Type + '",'
1237
+ row += '"MethodName":"' + MethodName + '"'
1238
+ row += "}"
1239
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1240
+ const img =
1241
+ Type === 1
1242
+ ? "data:image/png;base64,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"
1243
+ : "data:image/png;base64,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"
1244
+ window[MethodName]({
1245
+ IdCardNumber: "51382219940929720x",
1246
+ Type,
1247
+ IdCardName: "张xx",
1248
+ IdCardAddress: "四川省眉山市仁寿县xxxxxxxx",
1249
+ IdCardImgBase64: img,
1250
+ IdCardValidDate: "2021.12.31-2041.12.31",
1251
+ IdCardNation: "民族",
1252
+ IdCardSex: "0",
1253
+ IdCardAuthority: "仁寿县公安局",
1254
+ })
1255
+ } else if (isAndroid) {
1256
+ Func.OCRIdCard(row)
1257
+ } else if (isIOS) {
1258
+ window.webkit.messageHandlers.OCRIdCard.postMessage(row)
1259
+ }
1260
+ },
1261
+
1262
+ /**
1263
+ * 扫码
1264
+ * */
1265
+ ScanQRCode: function (op = {}) {
1266
+ const MethodName = op.MethodName || "AppscanQRCodeMethod"
1267
+ var row = "{"
1268
+ row += '"MethodName":"' + MethodName + '"'
1269
+ row += "}"
1270
+ if (isWeChat || isAlipay || isWeb) {
1271
+ window[MethodName](window.prompt("请输入扫码内容"))
1272
+ } else if (isAndroid) {
1273
+ Func.ScanQRCode(row)
1274
+ } else if (isIOS) {
1275
+ window.webkit.messageHandlers.ScanQRCode.postMessage(row)
1276
+ }
1277
+ },
1278
+
1279
+ /**
1280
+ * 扫描base64二维码
1281
+ * */
1282
+ QRCodeBase64: function (op = {}) {
1283
+ return new Promise((resolve, reject) => {
1284
+ window.APPQRCodeBase64 = (result) => {
1285
+ resolve(result)
1286
+ }
1287
+ const base64 = op.Base64
1288
+ var row = "{"
1289
+ row += '"Base64":"' + base64 + '",'
1290
+ row += '"MethodName":"' + "APPQRCodeBase64" + '"'
1291
+ row += "}"
1292
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1293
+ window.APPQRCodeBase64("二维码内容")
1294
+ } else if (isHarmony) {
1295
+ Func.QRCodeBase64(row)
1296
+ } else if (isAndroid) {
1297
+ window.APPQRCodeBase64(Func.QRCodeBase64(row))
1298
+ } else if (isIOS) {
1299
+ window.APPQRCodeBase64(decodeURIComponent(window.prompt("QRCodeBase64", base64)))
1300
+ }
1301
+ })
1302
+ },
1303
+
1304
+ /**
1305
+ * 设置APP标题栏文字
1306
+ * */
1307
+ SetTitle: function (op = {}) {
1308
+ const Title = op.Title || ""
1309
+ var row = "{"
1310
+ row += '"Title":"' + Title + '"'
1311
+ row += "}"
1312
+ if (isWeChat || isAlipay || isWeb) {
1313
+ document.title = Title
1314
+ console.log(`%c 设置APP标题栏文字为:${Title}`, "color: green")
1315
+ } else if (isAndroid) {
1316
+ Func.SetTitle(row)
1317
+ } else if (isIOS) {
1318
+ window.webkit.messageHandlers.SetTitle.postMessage(row)
1319
+ }
1320
+ },
1321
+
1322
+ /**
1323
+ * 设置标题栏右侧文字
1324
+ * */
1325
+ SetRightButtonTitle: function (op = {}) {
1326
+ const ButtonTitle = op.ButtonTitle || ""
1327
+ const FontSize = op.FontSize || "12"
1328
+ const TitleColor = op.TitleColor || "#333333"
1329
+ var row = "{"
1330
+ row += '"ButtonTitle":"' + ButtonTitle + '",'
1331
+ row += '"FontSize":"' + FontSize + '",'
1332
+ row += '"TitleColor":"' + TitleColor + '"'
1333
+ row += "}"
1334
+ if (isWeChat || isAlipay || isWeb) {
1335
+ console.log(`%c 设置标题栏右侧文字,参数为:${op}`, "color: green")
1336
+ } else if (isAndroid) {
1337
+ Func.SetRightButtonTitle(row)
1338
+ } else if (isIOS) {
1339
+ window.webkit.messageHandlers.SetRightButtonTitle.postMessage(row)
1340
+ }
1341
+ },
1342
+
1343
+ /**
1344
+ * 设置状态栏背景色
1345
+ * */
1346
+ SetStatusBarBgColor: function (op = {}) {
1347
+ const BGColor = op.BGColor || "#ffffff"
1348
+ const Index = op.Index || 0
1349
+ if (isWeChat || isAlipay || isWeb) {
1350
+ if (Index) {
1351
+ console.log(
1352
+ `%c 调整当前页面状态栏颜色为:${BGColor} %c 下标为:${Index}`,
1353
+ "color: green",
1354
+ "color: blue;",
1355
+ )
1356
+ } else {
1357
+ console.log(`%c 调整当前页面状态栏颜色为:${BGColor}`, "color: green")
1358
+ }
1359
+ } else if (isAndroid) {
1360
+ var row = "{"
1361
+ row += '"BGColor":"' + BGColor + '",'
1362
+ row += '"Index":"' + Index + '"'
1363
+ row += "}"
1364
+ Func.SetStatusBarBgColor(row)
1365
+ } else if (isIOS) {
1366
+ var row = "{"
1367
+ row += '"BGColor":"' + BGColor + '"'
1368
+ row += "}"
1369
+ window.webkit.messageHandlers.SetStatusBarBgColor.postMessage(row)
1370
+ }
1371
+ },
1372
+
1373
+ /**
1374
+ * 设置状态栏样式
1375
+ * */
1376
+ SetStatusBarStyle: function (op = {}) {
1377
+ const StatusBarStyle = op.Type || "default"
1378
+ const IsStatusBar = op.IsShow || 1
1379
+ const Index = op.Index || 0
1380
+ if (isWeChat || isAlipay || isWeb) {
1381
+ if (Index) {
1382
+ console.log(
1383
+ `%c 调整当前页面状态栏模式为:${StatusBarStyle} %c 下标为:${Index}`,
1384
+ "color: green",
1385
+ "color: blue;",
1386
+ )
1387
+ } else {
1388
+ console.log(
1389
+ `%c 调整当前页面状态栏模式为:${StatusBarStyle}`,
1390
+ "color: green",
1391
+ )
1392
+ }
1393
+ } else if (isAndroid) {
1394
+ var row = "{"
1395
+ row += '"StatusBarStyle":"' + StatusBarStyle + '",'
1396
+ row += '"Index":"' + Index + '",'
1397
+ row += '"IsStatusBar":"' + IsStatusBar + '"'
1398
+ row += "}"
1399
+ Func.SetStatusBarStyle(row)
1400
+ } else if (isIOS) {
1401
+ var row = "{"
1402
+ row += '"StatusBarStyle":"' + StatusBarStyle + '",'
1403
+ row += '"IsStatusBar":"' + IsStatusBar + '"'
1404
+ row += "}"
1405
+ window.webkit.messageHandlers.SetStatusBarStyle.postMessage(row)
1406
+ }
1407
+ },
1408
+
1409
+ /**
1410
+ * 退出关闭音频
1411
+ * (渲染页面时调用,退出销毁webview)
1412
+ * */
1413
+ PlayMusic: function () {
1414
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1415
+ console.log(`调用退出关闭音频`, "color: blue", "color: #4CAF50;")
1416
+ } else if (isAndroid) {
1417
+ Func.PlayMusic()
1418
+ } else if (isIOS) {
1419
+ window.webkit.messageHandlers.PlayMusic.postMessage({})
1420
+ }
1421
+ },
1422
+
1423
+ /**
1424
+ * 页面版本落后时,需手动重新更新页面(webview刷新)
1425
+ * */
1426
+ PageCheck: function () {
1427
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1428
+ window.location.reload()
1429
+ } else if (isAndroid) {
1430
+ Func.PageCheck()
1431
+ } else if (isIOS) {
1432
+ window.webkit.messageHandlers.PageCheck.postMessage({})
1433
+ }
1434
+ },
1435
+
1436
+ /**
1437
+ * 设置消息数量
1438
+ * */
1439
+ SetBadgeValue: function (op = {}) {
1440
+ const Index = op.Index || 0
1441
+ const BadgeNum = op.Num || 0
1442
+ var row = "{"
1443
+ row += '"Index":"' + Index + '",'
1444
+ row += '"BadgeNum":"' + BadgeNum + '"'
1445
+ row += "}"
1446
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1447
+ console.log(
1448
+ `%c 页面下标为:${Index} %c 设置数量为:${BadgeNum}`,
1449
+ "color: green",
1450
+ "color: blue;",
1451
+ )
1452
+ } else if (isAndroid) {
1453
+ Func.SetBadgeValue(row)
1454
+ } else if (isIOS) {
1455
+ window.webkit.messageHandlers.SetBadgeValue.postMessage(row)
1456
+ }
1457
+ },
1458
+
1459
+ /**
1460
+ * 清除消息红点
1461
+ * */
1462
+ ClearBadgeValue: function (op = {}) {
1463
+ const Index = op.Index || 0
1464
+ var row = "{"
1465
+ row += '"Index":"' + Index + '"'
1466
+ row += "}"
1467
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1468
+ console.log(`%c 页面下标为:${Index}`, "color: green")
1469
+ } else if (isAndroid) {
1470
+ Func.ClearBadgeValue(row)
1471
+ } else if (isIOS) {
1472
+ window.webkit.messageHandlers.ClearBadgeValue.postMessage(row)
1473
+ }
1474
+ },
1475
+
1476
+ /**
1477
+ * 获取设备信息
1478
+ * {
1479
+ * Model: "OCE-AL50",
1480
+ * Brand: "HUAWEI",
1481
+ * Device: "HWOCE-ML",
1482
+ * Version: "12",
1483
+ * SdkVersion: 31,
1484
+ * Property: "5.10.43",
1485
+ * DeviceId: "c88685e7e343912e",
1486
+ * TotalSpace: "106GB",
1487
+ * FreeSpace: "11GB",
1488
+ * BatteryPercentage: 65,
1489
+ * Connection: "Mobile",
1490
+ * Country: "CN",
1491
+ * Language: "zh",
1492
+ * }
1493
+ * */
1494
+ getDeviceInfo: function () {
1495
+ var result = ""
1496
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1497
+ result = {
1498
+ Model: "OCE-AL50",
1499
+ Brand: "HUAWEI",
1500
+ Device: "HWOCE-ML",
1501
+ Version: "12",
1502
+ SdkVersion: 31,
1503
+ Property: "5.10.43",
1504
+ DeviceId: "c88685e7e343912e",
1505
+ TotalSpace: "106GB",
1506
+ FreeSpace: "11GB",
1507
+ BatteryPercentage: 65,
1508
+ Connection: "Mobile",
1509
+ Country: "CN",
1510
+ Language: "zh",
1511
+ }
1512
+ } else if (isAndroid) {
1513
+ result = Func.getDeviceInfo()
1514
+ } else if (isIOS) {
1515
+ result = decodeURIComponent(window.prompt("getDeviceInfo", {}))
1516
+ }
1517
+ return result
1518
+ },
1519
+
1520
+ /**
1521
+ * 获取屏幕亮度
1522
+ * */
1523
+ getBrightness: function () {
1524
+ let result = ""
1525
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1526
+ result = 1
1527
+ } else if (isAndroid) {
1528
+ result = Func.getBrightness()
1529
+ } else if (isIOS) {
1530
+ result = decodeURIComponent(window.prompt("getBrightness", {}))
1531
+ }
1532
+ return result
1533
+ },
1534
+
1535
+ /**
1536
+ * 获取音量大小
1537
+ * */
1538
+ getVolume: function () {
1539
+ let result = ""
1540
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1541
+ result = 1
1542
+ } else if (isAndroid) {
1543
+ result = Func.getVolume()
1544
+ } else if (isIOS) {
1545
+ result = decodeURIComponent(window.prompt("getVolume", ""))
1546
+ }
1547
+ return result
1548
+ },
1549
+
1550
+ /**
1551
+ * 复制剪切板内容
1552
+ * */
1553
+ getClipboardContent: async function () {
1554
+ let result = ""
1555
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1556
+ result = await navigator.clipboard.readText()
1557
+ } else if (isAndroid) {
1558
+ result = Func.getClipboardContent()
1559
+ } else if (isIOS) {
1560
+ result = decodeURIComponent(window.prompt("getClipboardContent", {}))
1561
+ }
1562
+ return result
1563
+ },
1564
+
1565
+ /**
1566
+ * 网络是否通畅
1567
+ *
1568
+ **/
1569
+ IsNet: function () {
1570
+ var result = ""
1571
+ if (isWeChat || isAlipay || isWeb) {
1572
+ result = window.navigator.onLine ? "1" : "0"
1573
+ } else if (isAndroid) {
1574
+ result = Func.IsNet()
1575
+ } else if (isIOS) {
1576
+ result = window.prompt("IsNet", {})
1577
+ }
1578
+ return result == "1" ? true : false
1579
+ },
1580
+
1581
+ /**
1582
+ * 获取定位信息
1583
+ * */
1584
+ GetLocation: function (op = {}) {
1585
+ const MethodName = op.MethodName || "LocationInformation"
1586
+ var row = "{"
1587
+ row += '"MethodName":"' + MethodName + '"'
1588
+ row += "}"
1589
+ if (isAlipay || isWeb || isWeChat || isMiniProgram) {
1590
+ window[MethodName]("浏览器不支持地理位置定位。")
1591
+ } else if (isAndroid) {
1592
+ Func.GetLocation(row)
1593
+ } else if (isIOS) {
1594
+ window.webkit.messageHandlers.GetLocation.postMessage(row)
1595
+ }
1596
+ },
1597
+
1598
+ /**
1599
+ * 获取推送用户授权状态
1600
+ * 返回值:0未授权 1已授权
1601
+ * */
1602
+ getApnsAuthorizationStatus: function () {
1603
+ var result = ""
1604
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1605
+ result = Math.random() < 0.5 ? 0 : 1 // web端随机返回0或1
1606
+ } else if (isAndroid) {
1607
+ result = Func.getApnsAuthorizationStatus()
1608
+ } else if (isIOS) {
1609
+ result = decodeURIComponent(
1610
+ window.prompt("getApnsAuthorizationStatus", {}),
1611
+ )
1612
+ }
1613
+ return result == 1 ? true : false
1614
+ },
1615
+
1616
+ /**
1617
+ * 调整屏幕亮度
1618
+ * (参数范围:0-1)
1619
+ * */
1620
+ Brightness: function (op = {}) {
1621
+ const opValue = op.Value || 0.8
1622
+ const Value = opValue > 1 ? 1 : opValue < 0 ? 0 : opValue
1623
+ var row = "{"
1624
+ row += `"Value":"${Value}"`
1625
+ row += "}"
1626
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1627
+ console.log(`%c 调整设备亮度为:${Value * 100}%`, "color: green")
1628
+ } else if (isAndroid) {
1629
+ Func.Brightness(row)
1630
+ } else if (isIOS) {
1631
+ window.webkit.messageHandlers.Brightness.postMessage(row)
1632
+ }
1633
+ },
1634
+
1635
+ /**
1636
+ * 调整音量大小
1637
+ * (参数范围:0-1)
1638
+ * */
1639
+ VolumeControl: function (op = {}) {
1640
+ const opValue = op.Value || 0.8
1641
+ const Value = opValue > 1 ? 1 : opValue < 0 ? 0 : opValue
1642
+ var row = "{"
1643
+ row += `"Value":"${Value}"`
1644
+ row += "}"
1645
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1646
+ console.log(`%c 调整设备音量为:${Value * 100}%`, "color: green")
1647
+ } else if (isAndroid) {
1648
+ Func.VolumeControl(row)
1649
+ } else if (isIOS) {
1650
+ window.webkit.messageHandlers.VolumeControl.postMessage(row)
1651
+ }
1652
+ },
1653
+
1654
+ /**
1655
+ * 日历日程提醒
1656
+ * parameter:
1657
+ * Title(标题、必填、String)
1658
+ * Notes(提示内容、必填、String)
1659
+ * StartDate(开始时间、必填、Date)
1660
+ * Alarm(提前时间(整分钟)、必填、Number)
1661
+ * */
1662
+ ScheduleReminder: function (op = {}) {
1663
+ const Title = op.Title || ""
1664
+ const Notes = op.Notes || ""
1665
+ const StartDate = op.StartDate || ""
1666
+ const Alarm = op.Alarm || ""
1667
+ var row = ""
1668
+ row += "{"
1669
+ row += '"Title":"' + Title + '",'
1670
+ row += '"Notes":"' + Notes + '",'
1671
+ row += '"StartDate":"' + StartDate + '",'
1672
+ row += '"Alarm":"' + Alarm + '"'
1673
+ row += "}"
1674
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1675
+ console.log(`%c 开启标题为:${Title}的定时日历`, "color: green")
1676
+ } else if (isAndroid) {
1677
+ Func.ScheduleReminder(row)
1678
+ } else if (isIOS) {
1679
+ window.webkit.messageHandlers.ScheduleReminder.postMessage(row)
1680
+ }
1681
+ },
1682
+
1683
+ /**
1684
+ * 跳转当前APP设置界面
1685
+ * */
1686
+ SettingApns: function () {
1687
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1688
+ mixShowAlert(`跳转APP设置界面`)
1689
+ console.log(`%c 跳转APP设置界面`, "color: green")
1690
+ } else if (isAndroid) {
1691
+ Func.SettingApns()
1692
+ } else if (isIOS) {
1693
+ window.webkit.messageHandlers.SettingApns.postMessage({})
1694
+ }
1695
+ },
1696
+
1697
+ /**
1698
+ * 获取APP版本号
1699
+ * */
1700
+ GetAppVersion: function () {
1701
+ return new Promise((resolve, reject) => {
1702
+ window.APPGetAppVersion = (result) => {
1703
+ resolve(result)
1704
+ }
1705
+ var row = "{"
1706
+ row += '"MethodName":"' + "APPGetAppVersion" + '"'
1707
+ row += "}"
1708
+ if (isWeb) {
1709
+ window.APPGetAppVersion("1.0.0")
1710
+ } else if (isHarmony) {
1711
+ Func.GetAppVersion(row)
1712
+ } else if (isAndroid) {
1713
+ window.APPGetAppVersion(Func.GetAppVersion())
1714
+ } else if (isIOS) {
1715
+ window.APPGetAppVersion(window.prompt("GetAppVersion", {}))
1716
+ }
1717
+ })
1718
+ },
1719
+
1720
+ /**
1721
+ * 获取APP顶部状态栏高度
1722
+ * */
1723
+ getStatusBarHeight: function () {
1724
+ let result = ""
1725
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1726
+ result = 48
1727
+ } else if (isAndroid) {
1728
+ result = Func.getStatusBarHeight()
1729
+ } else if (isIOS) {
1730
+ result = decodeURIComponent(window.prompt("getStatusBarHeight", {}))
1731
+ }
1732
+ return result
1733
+ },
1734
+
1735
+ /**
1736
+ * app灰色模式
1737
+ * (登录页面时调用)
1738
+ * */
1739
+ GreyAllPages: function () {
1740
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1741
+ console.log(`app灰色模式`, "color: blue", "color: #4CAF50;")
1742
+ } else if (isAndroid) {
1743
+ Func.GreyAllPages()
1744
+ } else if (isIOS) {
1745
+ window.webkit.messageHandlers.GreyAllPages.postMessage({})
1746
+ }
1747
+ },
1748
+
1749
+ /**
1750
+ * 关闭隐私协议弹窗
1751
+ * */
1752
+ ClosePop() {
1753
+ if (isWeChat || isAlipay || isWeb) {
1754
+ console.log(`关闭隐私协议弹窗`, "color: blue", "color: #4CAF50;")
1755
+ } else if (isAndroid) {
1756
+ Func.ClosePop()
1757
+ } else if (isIOS) {
1758
+ window.webkit.messageHandlers.ClosePop.postMessage({})
1759
+ }
1760
+ },
1761
+
1762
+ /**
1763
+ * 清理APP缓存
1764
+ * */
1765
+ ClearAppCache: function () {
1766
+ if (isWeChat || isAlipay || isWeb) {
1767
+ console.log(`清理APP缓存`, "color: blue", "color: #4CAF50;")
1768
+ } else if (isAndroid) {
1769
+ Func.ClearAppCache()
1770
+ } else if (isIOS) {
1771
+ window.webkit.messageHandlers.ClearAppCache.postMessage({})
1772
+ }
1773
+ },
1774
+
1775
+ /**
1776
+ * 退出APP
1777
+ * */
1778
+ ExitApp() {
1779
+ if (isWeChat || isAlipay || isWeb) {
1780
+ console.log(`退出APP`, "color: blue", "color: #4CAF50;")
1781
+ } else if (isAndroid) {
1782
+ Func.ExitApp()
1783
+ } else if (isIOS) {
1784
+ window.webkit.messageHandlers.ExitApp.postMessage({})
1785
+ }
1786
+ },
1787
+
1788
+ /**
1789
+ * 获取APP图标路径
1790
+ * parameter: 无
1791
+ * */
1792
+ getAppIconsPath: function () {
1793
+ var result = ""
1794
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1795
+ result = [
1796
+ {
1797
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon1.png",
1798
+ id: "little_alliance_leader",
1799
+ },
1800
+ {
1801
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon2.png",
1802
+ id: "grand_alliance_leader",
1803
+ },
1804
+ {
1805
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon3.png",
1806
+ id: "operate",
1807
+ },
1808
+ {
1809
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon4.png",
1810
+ id: "gold_partner",
1811
+ },
1812
+ {
1813
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon5.png",
1814
+ id: "diamond_partner",
1815
+ },
1816
+ {
1817
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon6.png",
1818
+ id: "strategy_partner",
1819
+ },
1820
+ {
1821
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon7.png",
1822
+ id: "new_year",
1823
+ },
1824
+ {
1825
+ url: "http://oss.kexiaoshuang.com/upload/app-icon/icon0.png",
1826
+ id: "default",
1827
+ },
1828
+ ]
1829
+ } else if (isAndroid) {
1830
+ result = Func.getAppIconsPath()
1831
+ } else if (isIOS) {
1832
+ result = decodeURIComponent(window.prompt("getAppIconsPath", {}))
1833
+ }
1834
+ return mixJsonParse(result)
1835
+ },
1836
+
1837
+ /**
1838
+ * 更换APP图标
1839
+ * parameter: 无
1840
+ * */
1841
+ ReplaceAppIcon: function (op = {}) {
1842
+ const Id = op.Id || ""
1843
+ var row = ""
1844
+ row += "{"
1845
+ row += '"Id":"' + Id + '"'
1846
+ row += "}"
1847
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1848
+ mixShowAlert("更换的图标id:" + Id)
1849
+ } else if (isAndroid) {
1850
+ Func.ReplaceAppIcon(row)
1851
+ } else if (isIOS) {
1852
+ window.webkit.messageHandlers.ReplaceAppIcon.postMessage(row)
1853
+ }
1854
+ },
1855
+
1856
+ /**
1857
+ * 生物识别
1858
+ * 返回值:0未通过 1通过
1859
+ * */
1860
+ getBiometricRecognition: function () {
1861
+ var result = ""
1862
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1863
+ result = 1
1864
+ } else if (isAndroid) {
1865
+ result = Func.getBiometricRecognition()
1866
+ } else if (isIOS) {
1867
+ result = decodeURIComponent(window.prompt("getBiometricRecognition", {}))
1868
+ }
1869
+ return result
1870
+ },
1871
+
1872
+ /**
1873
+ * 阿里云push推送音效
1874
+ * */
1875
+ IsOpenPushSound: function (op = {}) {
1876
+ const IsOpen = op.IsOpen || 0
1877
+ var row = ""
1878
+ row += "{"
1879
+ row += '"IsOpen":"' + IsOpen + '"'
1880
+ row += "}"
1881
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1882
+ mixShowAlert(IsOpen == 1 ? "开启推送音效" : "关闭推送音效")
1883
+ } else if (isAndroid) {
1884
+ Func.IsOpenPushSound(row)
1885
+ } else if (isIOS) {
1886
+ window.webkit.messageHandlers.IsOpenPushSound.postMessage(row)
1887
+ }
1888
+ },
1889
+
1890
+ /**
1891
+ * 绑定阿里云push账号
1892
+ * */
1893
+ BindCloudChannel: function (op = {}) {
1894
+ const Account = op.Account || ""
1895
+ var row = ""
1896
+ row += "{"
1897
+ row += '"Account":"' + Account + '"'
1898
+ row += "}"
1899
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1900
+ mixShowAlert(`绑定阿里云账号:${Account}`)
1901
+ } else if (isAndroid) {
1902
+ Func.BindCloudChannel(row)
1903
+ } else if (isIOS) {
1904
+ window.webkit.messageHandlers.BindCloudChannel.postMessage(row)
1905
+ }
1906
+ },
1907
+
1908
+ /**
1909
+ * 解除阿里云push账号绑定
1910
+ * */
1911
+ UnbindCloudChannel: function () {
1912
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1913
+ mixShowAlert(`解除阿里云push账号绑定`)
1914
+ } else if (isAndroid) {
1915
+ Func.UnbindCloudChannel()
1916
+ } else if (isIOS) {
1917
+ window.webkit.messageHandlers.UnbindCloudChannel.postMessage({})
1918
+ }
1919
+ },
1920
+
1921
+ /**
1922
+ * 震动
1923
+ * parameter: String(num)
1924
+ * */
1925
+ Shock: function () {
1926
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1927
+ console.log(`震动`, "color: blue", "color: #4CAF50;")
1928
+ } else if (isAndroid) {
1929
+ Func.Shock()
1930
+ } else if (isIOS) {
1931
+ window.webkit.messageHandlers.Shock.postMessage({})
1932
+ }
1933
+ },
1934
+
1935
+ /**
1936
+ * 设置App消息数量角标
1937
+ * android 未实现
1938
+ * */
1939
+ SetApplicationIconBadgeNumber: function (op = {}) {
1940
+ const BadgeNum = op.BadgeNum || 1
1941
+ var row = {}
1942
+ row += "{"
1943
+ row += '"BadgeNum":"' + BadgeNum + '"'
1944
+ row += "}"
1945
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1946
+ console.log(
1947
+ `%c 设置App消息数量角标=> %c 参数为:${row}`,
1948
+ "color: blue",
1949
+ "color: #4CAF50;",
1950
+ )
1951
+ } else if (isAndroid) {
1952
+ Func.SetApplicationIconBadgeNumber(row)
1953
+ } else if (isIOS) {
1954
+ window.webkit.messageHandlers.SetApplicationIconBadgeNumber.postMessage(
1955
+ row,
1956
+ )
1957
+ }
1958
+ },
1959
+
1960
+ /**
1961
+ * 清除App消息数量角标
1962
+ * android 未实现
1963
+ * */
1964
+ ClearApplicationIconBadgeNumber: function () {
1965
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1966
+ console.log(`清除App消息数量角标`, "color: blue", "color: #4CAF50;")
1967
+ } else if (isAndroid) {
1968
+ Func.ClearApplicationIconBadgeNumber()
1969
+ } else if (isIOS) {
1970
+ window.webkit.messageHandlers.ClearApplicationIconBadgeNumber.postMessage(
1971
+ {},
1972
+ )
1973
+ }
1974
+ },
1975
+
1976
+ /**
1977
+ * 自动登录方法
1978
+ * parameter:
1979
+ * Url 自动登录跳转地址
1980
+ * */
1981
+ AutoLogin: function (op = {}) {
1982
+ const Url = op.Url || "main"
1983
+ var row = ""
1984
+ row += "{"
1985
+ row += '"Url":"' + Url + '"'
1986
+ row += "}"
1987
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
1988
+ mixShowAlert(`开启自动登录`)
1989
+ } else if (isAndroid) {
1990
+ Func.AutoLogin(row)
1991
+ } else if (isIOS) {
1992
+ window.webkit.messageHandlers.AutoLogin.postMessage(row)
1993
+ }
1994
+ },
1995
+
1996
+ /**
1997
+ * 显示加载dialog
1998
+ * */
1999
+ ShowLoading: function (op = {}) {
2000
+ const Message = op.Message || "加载中..."
2001
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2002
+ // showLoadingToast(Message)
2003
+ alert(Message)
2004
+ } else if (isAndroid) {
2005
+ Func.ShowLoading()
2006
+ } else if (isIOS) {
2007
+ window.webkit.messageHandlers.ShowLoading.postMessage({})
2008
+ }
2009
+ },
2010
+
2011
+ /**
2012
+ * 隐藏加载dialog
2013
+ * */
2014
+ HideLoading: function () {
2015
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2016
+ closeToast()
2017
+ } else if (isAndroid) {
2018
+ Func.HideLoading()
2019
+ } else if (isIOS) {
2020
+ window.webkit.messageHandlers.HideLoading.postMessage({})
2021
+ }
2022
+ },
2023
+
2024
+ /**
2025
+ * 显示msg弹窗
2026
+ * */
2027
+ ShowMsg: function (op = {}) {
2028
+ const Title = op.Title || "标题"
2029
+ const Message = op.Message || "提示内容"
2030
+ const ButtonText = op.confirmButtonText || "知道了"
2031
+ var row = "{"
2032
+ row += '"Title":"' + Title + '",'
2033
+ row += '"ButtonText":"' + ButtonText + '",'
2034
+ row += '"Message":"' + Message + '"'
2035
+ row += "}"
2036
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2037
+ showDialog({
2038
+ title: Title,
2039
+ message: Message,
2040
+ confirmButtonText: ButtonText,
2041
+ }).then(() => {
2042
+ // on close
2043
+ })
2044
+ } else if (isAndroid) {
2045
+ Func.ShowMsg(row)
2046
+ } else if (isIOS) {
2047
+ window.webkit.messageHandlers.ShowMsg.postMessage(row)
2048
+ }
2049
+ },
2050
+
2051
+ /**
2052
+ * 确认弹出框
2053
+ * */
2054
+ ShowDialog: function (op = {}) {
2055
+ const Title = op.Title || ""
2056
+ const Message = op.Message || ""
2057
+ const ConfirmText = op.ConfirmText || ""
2058
+ const CancelText = op.CancelText || ""
2059
+ const ConfirmAction = op.ConfirmAction || ""
2060
+ const CancelAction = op.CancelAction || ""
2061
+ var row = "{"
2062
+ row += '"Title":"' + Title + '",'
2063
+ row += '"Message":"' + Message + '",'
2064
+ row += '"ConfirmText":"' + ConfirmText + '",'
2065
+ row += '"CancelText":"' + CancelText + '",'
2066
+ row += '"ConfirmAction":"' + ConfirmAction + '",'
2067
+ row += '"CancelAction":"' + CancelAction + '"'
2068
+ row += "}"
2069
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2070
+ showConfirmDialog({
2071
+ title: Title,
2072
+ message: Message,
2073
+ confirmButtonText: ConfirmText || "确定",
2074
+ cancelButtonText: CancelText || "取消",
2075
+ })
2076
+ .then(() => {
2077
+ // on confirm
2078
+ window[ConfirmAction]()
2079
+ })
2080
+ .catch(() => {
2081
+ // on cancel
2082
+ window[CancelAction]()
2083
+ })
2084
+ } else if (isAndroid) {
2085
+ Func.ShowDialog(row)
2086
+ } else if (isIOS) {
2087
+ op = op || {}
2088
+ window.webkit.messageHandlers.ShowDialog.postMessage(row)
2089
+ }
2090
+ },
2091
+
2092
+ /**
2093
+ * 添加页面浮窗(返回时添加页面标签至浮窗)
2094
+ * */
2095
+ FloatingWindowData: function (op = {}) {
2096
+ const Url = op.Url || ""
2097
+ const Title = op.Title || ""
2098
+ const Detail = op.Detail || ""
2099
+ const Params = op.Params || ""
2100
+ const Icon = op.Icon || ""
2101
+ var row = ""
2102
+ row += "{"
2103
+ row += '"Url":"' + Url + '",'
2104
+ row += '"Title":"' + Title + '",'
2105
+ row += '"Detail":"' + Detail + '",'
2106
+ row += '"Params":"' + Params + '",'
2107
+ row += '"Icon":"' + Icon + '"'
2108
+ row += "}"
2109
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2110
+ console.log(
2111
+ `%c 添加页面浮窗=> %c 参数为:${row}`,
2112
+ "color: blue",
2113
+ "color: #4CAF50;",
2114
+ )
2115
+ } else if (isAndroid) {
2116
+ Func.FloatingWindowData(row)
2117
+ } else if (isIOS) {
2118
+ window.webkit.messageHandlers.FloatingWindowData.postMessage(row)
2119
+ }
2120
+ },
2121
+
2122
+ /**
2123
+ * 开启陀螺仪
2124
+ * */
2125
+ OpenGyro: function (op = {}) {
2126
+ const MethodName = op.MethodName
2127
+ const MaxOffsetX = op.MaxOffsetX || 100
2128
+ const MaxOffsetY = op.MaxOffsetY || 100
2129
+ var row = "{"
2130
+ row += `"MethodName":"${MethodName}",`
2131
+ row += `"MaxOffsetX":"${MaxOffsetX}",`
2132
+ row += `"MaxOffsetY":"${MaxOffsetY}"`
2133
+ row += "}"
2134
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2135
+ console.log(
2136
+ `%c 开启陀螺仪=> %c 参数为:${row}`,
2137
+ "color: blue",
2138
+ "color: #4CAF50;",
2139
+ )
2140
+ } else if (isAndroid) {
2141
+ Func.OpenGyro(row)
2142
+ } else if (isIOS) {
2143
+ window.webkit.messageHandlers.OpenGyro.postMessage(row)
2144
+ }
2145
+ },
2146
+
2147
+ /**
2148
+ * 关闭陀螺仪
2149
+ * */
2150
+ CloseGyro: function () {
2151
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2152
+ console.log(`关闭陀螺仪`, "color: blue", "color: #4CAF50;")
2153
+ } else if (isAndroid) {
2154
+ Func.CloseGyro()
2155
+ } else if (isIOS) {
2156
+ window.webkit.messageHandlers.CloseGyro.postMessage({})
2157
+ }
2158
+ },
2159
+
2160
+ /**
2161
+ * 拨打电话
2162
+ * */
2163
+ PhoneCall: function (op = {}) {
2164
+ const Phone = op.Phone || ""
2165
+ var row = "{"
2166
+ row += '"Phone":"' + Phone + '"'
2167
+ row += "}"
2168
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2169
+ window.location.href = "tel:" + Phone
2170
+ } else if (isAndroid) {
2171
+ Func.PhoneCall(row)
2172
+ } else if (isIOS) {
2173
+ window.webkit.messageHandlers.PhoneCall.postMessage(row)
2174
+ }
2175
+ },
2176
+
2177
+ /**
2178
+ * 保存IOS云端密码(IOS独有)
2179
+ * */
2180
+ SaveToiCloud: function (op = {}) {
2181
+ const UserName = op.UserName || ""
2182
+ const Password = op.Password || ""
2183
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2184
+ console.log(
2185
+ `%c 保存IOS云端密码=> %c 参数为:${row}`,
2186
+ "color: blue",
2187
+ "color: #4CAF50;",
2188
+ )
2189
+ } else if (isAndroid) {
2190
+ } else if (isIOS) {
2191
+ var row = "{"
2192
+ row += `"UserName":"${UserName}",`
2193
+ row += `"Password":"${Password}"`
2194
+ row += "}"
2195
+ window.webkit.messageHandlers.SaveToiCloud.postMessage(row)
2196
+ }
2197
+ },
2198
+
2199
+ /**
2200
+ * 关闭IOS底部安全区域(IOS独有)
2201
+ * */
2202
+ FullScreen: function () {
2203
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2204
+ console.log(`关闭IOS底部安全区域`, "color: blue", "color: #4CAF50;")
2205
+ } else if (isAndroid) {
2206
+ } else if (isIOS) {
2207
+ window.webkit.messageHandlers.FullScreen.postMessage({})
2208
+ }
2209
+ },
2210
+
2211
+ /**
2212
+ * IOS键盘占位(IOS独有)
2213
+ * parameter: true/false
2214
+ * */
2215
+ Keyboard: function (op = {}) {
2216
+ const Status = op.Status ? true : false
2217
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2218
+ if (Status) {
2219
+ mixShowAlert(`开启键盘占位`)
2220
+ } else {
2221
+ mixShowAlert(`关闭键盘占位`)
2222
+ }
2223
+ } else if (isAndroid) {
2224
+ var row = "{"
2225
+ row += `"Status":"${!!Status}"`
2226
+ row += "}"
2227
+ Func.SoftKeyBoardUp(row)
2228
+ } else if (isIOS) {
2229
+ if (Status) {
2230
+ window.webkit.messageHandlers.RemoveKeyboardNotification.postMessage({})
2231
+ } else {
2232
+ window.webkit.messageHandlers.AddKeyboardNotification.postMessage({})
2233
+ }
2234
+ }
2235
+ },
2236
+
2237
+ /**
2238
+ * Android初始化阿里云推送(Android独有)
2239
+ * 调用重新初始化阿里云推送,针对手动屏蔽通知后重新开启
2240
+ * */
2241
+ InitCloudChannel: function (op = {}) {
2242
+ const Account = op.Account || ""
2243
+ var row = ""
2244
+ row += "{"
2245
+ row += '"Account":"' + Account + '"'
2246
+ row += "}"
2247
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2248
+ console.log(
2249
+ `Android重新初始化阿里云推送`,
2250
+ "color: blue",
2251
+ "color: #4CAF50;",
2252
+ )
2253
+ } else if (isAndroid) {
2254
+ Func.InitCloudChannel(row)
2255
+ } else if (isIOS) {
2256
+ }
2257
+ },
2258
+
2259
+ /**
2260
+ * 微信登录
2261
+ * */
2262
+ WeChatLogin: function () {
2263
+ if (isAndroid || isAlipay || isWeb) {
2264
+ Func.WeChatLoginBack()
2265
+ } else if (isIOS) {
2266
+ window.webkit.messageHandlers.WeChatLoginBack.postMessage({})
2267
+ }
2268
+ },
2269
+
2270
+ /**
2271
+ * QQ登录
2272
+ * */
2273
+ QQLogin: function () {
2274
+ if (isAndroid || isAlipay || isWeb) {
2275
+ Func.QQLoginBack()
2276
+ } else if (isIOS) {
2277
+ window.webkit.messageHandlers.QQLoginBack.postMessage({})
2278
+ }
2279
+ },
2280
+
2281
+ /**
2282
+ * 启动本地服务器
2283
+ * */
2284
+ StartHttpServer: function () {
2285
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2286
+ console.log(`本地服务器启动`, "color: blue", "color: #4CAF50;")
2287
+ } else if (isAndroid) {
2288
+ Func.StartHttpServer()
2289
+ } else if (isIOS) {
2290
+ window.webkit.messageHandlers.StartHttpServer.postMessage({})
2291
+ }
2292
+ },
2293
+
2294
+ /**
2295
+ * 关闭本地服务器
2296
+ * */
2297
+ StopHttpServer: function () {
2298
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2299
+ console.log(`本地服务器关闭`, "color: blue", "color: #4CAF50;")
2300
+ } else if (isAndroid) {
2301
+ Func.StopHttpServer()
2302
+ } else if (isIOS) {
2303
+ window.webkit.messageHandlers.StopHttpServer.postMessage({})
2304
+ }
2305
+ },
2306
+
2307
+ /**
2308
+ * 支付宝支付
2309
+ * */
2310
+ RequestAlipay: function (op = {}) {
2311
+ const OrderInfo = op.OrderInfo || ""
2312
+ const SuccessUrl = op.SuccessUrl || ""
2313
+ const FailUrl = op.FailUrl || ""
2314
+ var row = "{"
2315
+ row += '"OrderInfo":"' + OrderInfo + '",'
2316
+ row += '"SuccessUrl":"' + SuccessUrl + '",'
2317
+ row += '"FailUrl":"' + FailUrl + '"'
2318
+ row += "}"
2319
+ if (isWeb) {
2320
+ console.log(
2321
+ `%c 支付宝支付=> %c 参数为:${row}`,
2322
+ "color: blue",
2323
+ "color: #4CAF50;",
2324
+ )
2325
+ } else if (isAndroid) {
2326
+ Func.Alipay(row)
2327
+ } else if (isIOS) {
2328
+ window.webkit.messageHandlers.Alipay.postMessage(row)
2329
+ }
2330
+ },
2331
+
2332
+ /**
2333
+ * 微信支付
2334
+ * */
2335
+ RequestWechatPay: function (op = {}) {
2336
+ const OrderInfo = op.OrderInfo
2337
+ const SuccessUrl = op.SuccessUrl
2338
+ const FailUrl = op.FailUrl
2339
+ var row = "{"
2340
+ row += '"OrderInfo":"' + OrderInfo + '",'
2341
+ row += '"SuccessUrl":"' + SuccessUrl + '",'
2342
+ row += '"FailUrl":"' + FailUrl + '"'
2343
+ row += "}"
2344
+ if (isWeb && !isWeChat) {
2345
+ console.log(
2346
+ `%c 微信支付=> %c 参数为:${row}`,
2347
+ "color: blue",
2348
+ "color: #4CAF50;",
2349
+ )
2350
+ } else if (isMiniProgram) {
2351
+ wx.miniProgram.navigateTo({
2352
+ url: "/pages/pay/pay?PayString=" + OrderInfo,
2353
+ })
2354
+ } else if (isAndroid) {
2355
+ Func.WechatPay(row)
2356
+ } else if (isIOS) {
2357
+ window.webkit.messageHandlers.WechatPay.postMessage(row)
2358
+ }
2359
+ },
2360
+
2361
+ /**
2362
+ * 缓存大小
2363
+ * */
2364
+ CacheSize: function () {
2365
+ var result = ""
2366
+ if (isWeChat || isAlipay || isWeb) {
2367
+ result = "1.24KB"
2368
+ } else if (isAndroid) {
2369
+ result = Func.CacheSize()
2370
+ } else if (isIOS) {
2371
+ result = window.prompt("CacheSize", "")
2372
+ }
2373
+ return result
2374
+ },
2375
+
2376
+ /**
2377
+ * 客服中心
2378
+ * */
2379
+ OnlineService: function () {
2380
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2381
+ console.log(`客服中心`, "color: blue", "color: #4CAF50;")
2382
+ } else if (isAndroid) {
2383
+ Func.OnlineService()
2384
+ } else if (isIOS) {
2385
+ window.webkit.messageHandlers.OnlineService.postMessage({})
2386
+ }
2387
+ },
2388
+ /**
2389
+ * 打开高德地图
2390
+ * */
2391
+ OpenAmap: function (op = {}) {
2392
+ const Address = op.Address || ""
2393
+ const MethodName = op.MethodName || "OpenAmapFailFn"
2394
+ let row = "{"
2395
+ row += '"Address":"' + Address + '",'
2396
+ row += '"MethodName":"' + MethodName + '"'
2397
+ row += "}"
2398
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2399
+ console.log(
2400
+ `%c 跳转地图=> %c 参数为:${row}`,
2401
+ "color: blue",
2402
+ "color: #4CAF50;",
2403
+ )
2404
+ } else if (isAndroid) {
2405
+ Func.OpenAmap(row)
2406
+ } else if (isIOS) {
2407
+ window.webkit.messageHandlers.OpenAmap.postMessage(row)
2408
+ }
2409
+ },
2410
+ /**
2411
+ * 上传视频(单个视频,相机/相册)
2412
+ * MethodName:回调方法
2413
+ * VideoDuration: 录制时长
2414
+ * ReturnType: 返回类型 URL/Object[file]
2415
+ * */
2416
+ UploadVideo: function (op = {}) {
2417
+ const MethodName = op.MethodName || "VideoUpload"
2418
+ const VideoDuration = op.VideoDuration || 60
2419
+ const ReturnType = op.ReturnType || "Object[file]"
2420
+ let row = "{"
2421
+ row += '"VideoDuration":"' + VideoDuration + '",'
2422
+ row += '"MethodName":"' + "APPVideoUploadCallBack" + '"'
2423
+ row += "}"
2424
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2425
+ let $upload
2426
+ $upload = document.createElement("input")
2427
+ $upload.id = new Date().getTime()
2428
+ $upload.type = "file"
2429
+ $upload.style.display = "none"
2430
+ var body = document.querySelector("body")
2431
+ body.appendChild($upload)
2432
+ $upload.addEventListener("change", function (evt) {
2433
+ var files = evt.target.files
2434
+ if (files.length > 0) {
2435
+ window.APPVideoUploadCallBack(files[0])
2436
+ }
2437
+ $upload.value = "" //清空 input value
2438
+ })
2439
+ $upload.click()
2440
+ } else if (isAndroid) {
2441
+ Func.UploadVideo(row)
2442
+ } else if (isIOS) {
2443
+ window.webkit.messageHandlers.UploadVideo.postMessage(row)
2444
+ }
2445
+ window.APPVideoUploadCallBack = async (url) => {
2446
+ const arr = typeof url == "object" ? "" : url.split("/")
2447
+ const imageName = arr[arr.length - 1]
2448
+ if (ReturnType == "Object[file]") {
2449
+ if (isWeb) {
2450
+ window[MethodName](url)
2451
+ } else if (isAndroid) {
2452
+ const xhr = new XMLHttpRequest()
2453
+ xhr.open("GET", url, true)
2454
+ xhr.responseType = "blob"
2455
+ xhr.onreadystatechange = async function () {
2456
+ if (xhr.readyState == 4 && xhr.status == 200) {
2457
+ // 请求成功,处理响应数据
2458
+ const res = xhr.response
2459
+ window[MethodName](
2460
+ new File([res], imageName, { type: "video/mp4" }),
2461
+ )
2462
+ }
2463
+ }
2464
+ xhr.send()
2465
+ } else if (isIOS) {
2466
+ const response = await fetch(url)
2467
+ const blob = await response.blob()
2468
+ window[MethodName](new File([blob], imageName, { type: "video/mp4" }))
2469
+ }
2470
+ } else if (ReturnType == "URL") {
2471
+ if (isWeb) {
2472
+ const reader = new FileReader()
2473
+ reader.onload = function (e) {
2474
+ window[MethodName](e.target.result)
2475
+ }
2476
+ reader.readAsDataURL(url)
2477
+ } else if (isAndroid || isIOS) {
2478
+ window[MethodName](url)
2479
+ }
2480
+ } else {
2481
+ throw new Error("PLEASE SELECT THE CORRECT ReturnType")
2482
+ }
2483
+ }
2484
+ },
2485
+ /**
2486
+ * 字符串分词
2487
+ * KeyWord: 需要分词的字符串
2488
+ * Length: 分词长度
2489
+ * */
2490
+ CutWord: function (op) {
2491
+ return new Promise((resolve, reject) => {
2492
+ const Length = op.Length || 6
2493
+ window.APPCutWord = (result) => {
2494
+ try {
2495
+ const array = []
2496
+ JSON.parse(result).forEach((item, index) => {
2497
+ if (index < Length && Length !== 0) {
2498
+ array.push(item)
2499
+ } else {
2500
+ array[array.length - 1] += item
2501
+ }
2502
+ })
2503
+ resolve(array)
2504
+ } catch (error) {
2505
+ resolve([])
2506
+ }
2507
+ }
2508
+ const KeyWord = op.KeyWord || ""
2509
+ var row = "{"
2510
+ row += '"KeyWord":"' + KeyWord + '",'
2511
+ row += '"MethodName":"' + "APPCutWord" + '"'
2512
+ row += "}"
2513
+ if (isWeb) {
2514
+ window.APPCutWord(JSON.stringify(KeyWord.split("")))
2515
+ } else if (isHarmony) {
2516
+ Func.CutWord(row)
2517
+ } else if (isAndroid) {
2518
+ window.APPCutWord(Func.CutWord(row))
2519
+ } else if (isIOS) {
2520
+ window.APPCutWord(decodeURIComponent(window.prompt("CutWord", row)))
2521
+ }
2522
+ })
2523
+ },
2524
+
2525
+ /**
2526
+ * 页面埋点记录
2527
+ * MethodName: 回调方法名
2528
+ * Type: 类型(1:开启,0:关闭)
2529
+ * */
2530
+ StayTime: function (op = {}) {
2531
+ const MethodName = op.MethodName
2532
+ const UserId = op.UserId
2533
+ const type = op.Type == 0 ? 0 : 1;
2534
+ var row = "{"
2535
+ row += `"MethodName":"${MethodName}"`
2536
+ row += "}"
2537
+ if (isWeChat || isAlipay || isWeb || isMiniProgram) {
2538
+ if(type === 1){
2539
+ console.log(
2540
+ `%c 开启页面埋点记录=> %c 参数为:${row}`,
2541
+ "color: blue",
2542
+ "color: #4CAF50;",
2543
+ )
2544
+ setTimeout(() => {
2545
+ window[MethodName](JSON.stringify({url:window.location.href,stayTime: 1}))
2546
+ }, 3000);
2547
+ }else{
2548
+ console.log(
2549
+ `%c 关闭页面埋点记录=> %c 参数为:空`,
2550
+ "color: blue",
2551
+ "color: #4CAF50;",
2552
+ )
2553
+ }
2554
+ } else if (isAndroid) {
2555
+ if(type === 1){
2556
+ Func.OpenStayTime(row)
2557
+ }else{
2558
+ Func.CloseStayTime()
2559
+ }
2560
+ } else if (isIOS) {
2561
+ if(type === 1){
2562
+ window.webkit.messageHandlers.OpenStayTime.postMessage(row)
2563
+ }else{
2564
+ window.webkit.messageHandlers.CloseStayTime.postMessage({})
2565
+ }
2566
+ }
2567
+ },
2568
+ }
2569
+ }