PlatformHaiTuoMini.ts 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. /**
  2. 游戏名称:遮天
  3. SDK文档:
  4. https://client2.hhycdk.com/docs/sdkDocs.html?target_id=4e81bdd1-aaf0-46d8-9b3a-50769becbe1b
  5. gameId = 319 测试秘钥 = 1d5c5fcb80934b4886cc8a7c61366664 正式秘钥 = fa62a8cbd24941ec83edaf89799a1c4b zoneKey = ztxm_wxml snKey = s218
  6. 小程序ID:wx38c033079c5d7490
  7. */
  8. // 导入crypto-js的md5加密功能
  9. import * as CryptoJS from 'crypto-js';
  10. import Gamecfg from "../common/gameCfg";
  11. import { gameMethod } from "../common/gameMethod";
  12. import { PlayerLogin, PlayerLoginPram } from "../common/Xyc";
  13. import { SevBack } from "../common/Xys";
  14. import Config from "../Config";
  15. import { GameEvent, LoadEvent, PlatEvent } from "../data/const/EventConst";
  16. import { AD_VIDEO_KEY, GameErrCode, PayProductParam, ReportRoleType, PlatFormDevType } from "../data/const/TypeConst";
  17. import GameDataCenter from "../data/GameDataCenter";
  18. import GameController from "../GameController";
  19. import UIHelp from "../logic/ui/UIHelp";
  20. import EventMng from "../manager/EventMng";
  21. import PlatformBase from "./PlatformBase";
  22. import { md5 } from "../utils/md5";
  23. import ThinkingDataMgr from '../utils/ThinkingDataMgr';
  24. export default class PlatformHaiTuoMini extends PlatformBase {
  25. rewardVideo: any
  26. constructor() {
  27. super()
  28. // wx.getLaunchOptionsSync(res => {
  29. // this.dealQuery(res)
  30. // setTimeout(() => {
  31. // let str = ""
  32. // for (const key in res.query) {
  33. // str += key + "=" + res.query[key]
  34. // }
  35. // let data: DialogParams = {
  36. // content: "内容:" + str
  37. // }
  38. // UIHelp.ShowDialog(data)
  39. // }, 3000);
  40. // })
  41. // 屏幕常亮
  42. wx.setKeepScreenOn({
  43. keepScreenOn: true
  44. })
  45. // 热启动,或唤醒时触发
  46. wx.onShow(res => {
  47. this.dealQuery(res)
  48. GameDataCenter.audio.resumeMusic()
  49. // IOS系统,在后台切回时似乎回失去常亮功能,这里再调用一次
  50. wx.setKeepScreenOn({
  51. keepScreenOn: true
  52. })
  53. EventMng.emit(GameEvent.ON_SHOW_APP)
  54. console.log("-----wx.onShow 回调触发:", res)
  55. })
  56. // 切到后台时触发
  57. wx.onHide(res => {
  58. GameDataCenter.audio.stopAllEffects()
  59. GameDataCenter.audio.pauseMusic()
  60. })
  61. // 加载广告组件
  62. wx.showShareMenu({
  63. withShareTicket: false,
  64. menus: ['shareAppMessage', 'shareTimeline']
  65. })
  66. // 小程序更新机制 https://developers.weixin.qq.com/minigame/dev/guide/runtime/update-mechanism.html
  67. const updateManager = wx.getUpdateManager()
  68. updateManager.onCheckForUpdate(function (res) {
  69. // 请求完新版本信息的回调
  70. console.log("请求完新版本信息的回调", res.hasUpdate)
  71. })
  72. updateManager.onUpdateReady(function () {
  73. wx.showModal({
  74. title: '更新提示',
  75. content: '新版本已经准备好,是否重启应用?',
  76. success(res) {
  77. if (res.confirm) {
  78. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  79. updateManager.applyUpdate()
  80. }
  81. }
  82. })
  83. })
  84. updateManager.onUpdateFailed(function () {
  85. // 新版本下载失败
  86. })
  87. }
  88. private dealQuery(res) {
  89. if (res.scene) {
  90. GameDataCenter.plat.queryparams.scene = res.scene
  91. }
  92. if (res.query['inviter']) {
  93. GameDataCenter.plat.queryparams.inviter = res.query['inviter']
  94. }
  95. if (res.query['sharer']) {
  96. GameDataCenter.plat.queryparams.sharer = res.query['sharer']
  97. }
  98. console.log("-----sharer-----", GameDataCenter.plat.queryparams.sharer)
  99. EventMng.emit(PlatEvent.ON_SCENE_CHANGED)
  100. }
  101. showLoginView(): void {
  102. console.log("平台sdk初始化...")
  103. let opts = wx.getLaunchOptionsSync()
  104. EventMng.emit(LoadEvent.LOAD_PROGRESS, 0.25, "login")
  105. let packageInfo = Gamecfg.packageInfo.getItem(Config.pid)
  106. window['hitalkOpenSDK'].init((res: any) => {
  107. let sysInfo = wx.getSystemInfoSync();
  108. GameDataCenter.plat.instance.deviceOS = sysInfo?.platform
  109. console.log("----当前运行平台信息:", JSON.stringify(sysInfo))
  110. console.log("----当前运行平台:", GameDataCenter.plat.instance.deviceOS)
  111. // do something
  112. console.log("----初始化回调:", res)
  113. if (res.retCode != 0) {
  114. console.log("初始化失败")
  115. return
  116. }
  117. console.log("初始化成功")
  118. window['hitalkOpenSDK'].resetConfig(true)// true:正式服; false:测试服
  119. //调用登录接口
  120. EventMng.emit(LoadEvent.LOAD_PROGRESS, 0.5, "login")
  121. window['hitalkOpenSDK'].login((res: any) => {
  122. if (res.retCode === 0) {
  123. console.log('fingerPlayer登录成功: res=>' + JSON.stringify(res));
  124. //可以全局获取的参数
  125. Config.wxOpenId = window['hitalkOpenSDK'].openId //用户唯一标识
  126. Config.wxSign = res.data.sign //签名
  127. EventMng.emit(LoadEvent.LOAD_PROGRESS, 0.75, "login")
  128. let params: PlayerLoginPram = {
  129. pid: Config.pid,
  130. param: [res.data.openId, res.data.timestamp, res.data.sign, JSON.stringify(res.data?.snUserInfoJson)]
  131. }
  132. GameController.network.send(PlayerLogin.url, params, (result: SevBack) => {
  133. console.log("后段验证返回")
  134. if (result.type != 1) {
  135. if (gameMethod.isEmpty(result.win) || gameMethod.isEmpty(result.win.msgOut)) {
  136. GameDataCenter.plat.showErrDialog(GameErrCode.errGamePlatLogin)
  137. }
  138. return
  139. }
  140. EventMng.emit(LoadEvent.LOAD_PROGRESS, 1, "login")
  141. if (result.type == 1 && result.platBack) {
  142. this.openId = result.platBack.openid
  143. this.loginParams = [result.platBack.token]
  144. console.log("后端验证成功", this.openId)
  145. // 获取邀请者uuid
  146. let inviter = ""
  147. if (wx.getEnterOptionsSync) {
  148. let obj = wx.getEnterOptionsSync()
  149. if (obj.query && obj.query['inviter']) {
  150. inviter = obj.query['inviter']
  151. }
  152. }
  153. this.login(inviter)
  154. } else {
  155. console.log("PlayerLogin.url 返回数据异常")
  156. if (gameMethod.isEmpty(result.win) || gameMethod.isEmpty(result.win.msgOut)) {
  157. GameDataCenter.plat.showErrDialog(GameErrCode.errGamePlatLogin)
  158. }
  159. }
  160. })
  161. } else {
  162. console.log('fingerPlayer登录失败: res=>' + JSON.stringify(res));
  163. //注意:调用登录接口失败后,需要跳转游戏页面显示重新登录的按钮
  164. UIHelp.ShowDialog({
  165. content: "登录授权失败,请重新登录",
  166. onlyConfirm: true,
  167. cbConfirm: () => {
  168. GameDataCenter.plat.instance.restart()
  169. }
  170. })
  171. }
  172. // 获取用户设置信息
  173. console.log("获取用户设置信息")
  174. wx.getSetting({
  175. withSubscriptions: true,
  176. success(res) {
  177. console.log("获取用户设置信息 回调:", res)
  178. if (res.authSetting && res.authSetting["scope.userInfo"]) {
  179. // 已授权
  180. console.log("已授权")
  181. GameDataCenter.plat.instance.hasAuthUserInfo = true
  182. }
  183. // 整理订阅消息
  184. if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings) {
  185. GameDataCenter.subscribe.recordSubscribeAlwaysSettings(res.subscriptionsSetting.itemSettings)
  186. }
  187. }
  188. })
  189. })
  190. wx.onShareAppMessage(function () {
  191. return {
  192. title: "",
  193. imageUrl: "",
  194. query: `state=${""}`
  195. }
  196. })
  197. wx.showShareMenu({
  198. menus: ['shareAppMessage', 'shareTimeline']
  199. })
  200. }, { gameId: parseInt(packageInfo.params[0]), zoneKey: packageInfo.params[1], snKey: packageInfo.params[2] })
  201. }
  202. // 上报用户信息
  203. reportUserInfo(res) {
  204. }
  205. // 上报角色数据
  206. reportRole(event: ReportRoleType): void {
  207. //统一由服务端上报
  208. return
  209. if (GameDataCenter.sevBack == null) { return }
  210. if (GameDataCenter.sevBack.userInfo?.a == null) { return }
  211. console.log("上报角色数据:" + event + ",uuid:" + GameDataCenter.sevBack.userInfo?.a?.uuid)
  212. let onlineTime = 0
  213. if (GameDataCenter.time.onlineTime > 0) {
  214. onlineTime = GameDataCenter.time.sevTime - GameDataCenter.time.onlineTime
  215. }
  216. let roleTypeStr = 3
  217. if (event == ReportRoleType.create) {
  218. roleTypeStr = 2
  219. } else if (event == ReportRoleType.levelup) {
  220. roleTypeStr = 4
  221. }
  222. let param = {
  223. "areaId": GameDataCenter.sevBack.userInfo?.a?.sid,
  224. "areaName": GameDataCenter.user.serverName,
  225. "roleId": GameDataCenter.sevBack.userInfo?.a?.uuid,
  226. "roleName": GameDataCenter.sevBack.userInfo?.a?.name,
  227. "roleLevel": GameDataCenter.sevBack.userInfo?.a?.level,
  228. "vipGrade": 0,
  229. "createRoleTime": GameDataCenter.sevBack.userInfo?.a?.regtime,
  230. "createTime": GameDataCenter.time.sevTime,
  231. "moneyNum": GameDataCenter.sevBack.userInfo?.a?.iscz,
  232. "rolePower": 0,
  233. "roleTurnup": 0,
  234. "sign": Config.wxSign
  235. }
  236. //验证
  237. let str: string = ""
  238. str += "&areaId=" + param["areaId"]
  239. str += "&areaName=" + param["areaName"]
  240. str += "&createRoleTime=" + param["createRoleTime"]
  241. str += "&createTime=" + param["createTime"]
  242. str += "&moneyNum=" + param["moneyNum"]
  243. str += "&roleId=" + param["roleId"]
  244. str += "&roleLevel=" + param["roleLevel"]
  245. str += "&roleName=" + param["roleName"]
  246. str += "&rolePower=" + param["rolePower"]
  247. str += "&roleTurnup=" + param["roleTurnup"]
  248. str += "&vipGrade=" + param["vipGrade"]
  249. str += "fa62a8cbd24941ec83edaf89799a1c4b"
  250. // console.log("md5 str => ", str)
  251. let _sign = md5(str).toUpperCase();
  252. param.sign = _sign
  253. window['hitalkOpenSDK'].gameReport(roleTypeStr, param, (res: any) => {
  254. console.log("角色数据上报:" + JSON.stringify(res));
  255. if (res.retCode == 0) {
  256. //上报成功
  257. }
  258. //上报失败
  259. })
  260. }
  261. pay(orderId: string, order10cs: string, param: PayProductParam): void {
  262. window['hitalkOpenSDK'].isGamePay({}, function (res: any) {
  263. //true:开启(默认值),false:关闭支付
  264. console.log('是否开启支付功能:' + res)
  265. if (res) {
  266. //开启支付功能
  267. let packageInfo = Gamecfg.packageInfo.getItem(Config.pid)
  268. let price = param.price * 100
  269. let startPaydata = {
  270. 'gameId': parseInt(packageInfo.params[0]), // 游戏唯一标识
  271. 'snKey': packageInfo.params[2], // 包唯一码
  272. 'openId': window['hitalkOpenSDK'].openId, //用户唯一标识
  273. 'roleId': GameDataCenter.sevBack.userInfo?.a?.uuid, // 角色Id
  274. 'roleName': GameDataCenter.sevBack.userInfo?.a?.name, //角色名称
  275. 'roleLevel': GameDataCenter.sevBack.userInfo?.a?.level, //角色等级
  276. 'vipGrade': 0, //VIP等级
  277. 'areaId': GameDataCenter.sevBack.userInfo?.a?.sid, // 区服id,合服之后传旧的areaId,与数据上报的区服ID相同
  278. 'areaName': GameDataCenter.sevBack.userInfo?.a?.sid, // 区服名称
  279. 'productId': param.productId, // 商品ID
  280. 'productName': param.productName, // 商品名称
  281. 'productDescribe': param.productDesc, // 商品描述
  282. 'amount': price, // 商品金额(单位:分)
  283. 'gameOrderNo': orderId, // 游戏方支付订单号
  284. 'timestamp': GameDataCenter.time.sevTime, // 时间戳,单位:秒
  285. 'extension': "", //透传字段,支付回调时会原样返回,默认值:""
  286. 'callbackUrl': order10cs, // 支付回调地址
  287. 'sign': "" // 签名信息
  288. }
  289. //验证
  290. let str: string = ""
  291. str += "amount=" + startPaydata["amount"]
  292. str += "&areaId=" + startPaydata["areaId"]
  293. str += "&areaName=" + startPaydata["areaName"]
  294. str += "&callbackUrl=" + startPaydata["callbackUrl"]
  295. if (!gameMethod.isEmpty(startPaydata["extension"])) {
  296. str += "&extension=" + startPaydata["extension"]
  297. }
  298. str += "&gameId=" + startPaydata["gameId"]
  299. str += "&gameOrderNo=" + startPaydata["gameOrderNo"]
  300. str += "&openId=" + startPaydata["openId"]
  301. str += "&productDescribe=" + startPaydata["productDescribe"]
  302. str += "&productId=" + startPaydata["productId"]
  303. str += "&productName=" + startPaydata["productName"]
  304. str += "&roleId=" + startPaydata["roleId"]
  305. str += "&roleLevel=" + startPaydata["roleLevel"]
  306. str += "&roleName=" + startPaydata["roleName"].trim()
  307. str += "&snKey=" + startPaydata["snKey"]
  308. str += "&timestamp=" + startPaydata["timestamp"]
  309. str += "&vipGrade=" + startPaydata["vipGrade"]
  310. str += "fa62a8cbd24941ec83edaf89799a1c4b"
  311. console.log("md5 str => ", str)
  312. let _sign = md5(str).toUpperCase();
  313. startPaydata.sign = _sign
  314. console.log("startPaydata=>", JSON.stringify(startPaydata))
  315. window['hitalkOpenSDK'].gamePay(startPaydata, (res: any) => {
  316. console.log('支付:' + JSON.stringify(res))
  317. if (res.retCode = 0) {
  318. if (Config.paySuccAdokId != null) {
  319. clearInterval(Config.paySuccAdokId)
  320. Config.paySuccAdokId = null
  321. }
  322. Config.paySuccAdokIndex = 0
  323. Config.paySuccAdokId = setInterval(() => {
  324. Config.paySuccAdokIndex++
  325. if (Config.paySuccAdokIndex >= 5) {
  326. clearInterval(Config.paySuccAdokId)
  327. Config.paySuccAdokId = null
  328. }
  329. GameDataCenter.time.sendAdok()
  330. }, 1000)
  331. } else {
  332. UIHelp.ShowTips("支付异常,请联系客服")
  333. //异常上报服务端
  334. if (window["sendClientErr"]) {
  335. window["sendClientErr"]([JSON.stringify(res)])
  336. }
  337. }
  338. })
  339. } else {
  340. //不开启支付功能
  341. UIHelp.ShowTips("未开启支付,无需支付")
  342. }
  343. })
  344. }
  345. checkMsg(str: string, cb: Function): void {
  346. //由服务端校验
  347. cb()
  348. // var switchs = window['hitalkOpenSDK'].switchStatus //获取功能开关状态
  349. // //是否实现敏感字校验功能
  350. // //true:由客户端校验敏感字,false:由服务端接口校验敏感字
  351. // if (switchs.contentCheck && switchs.contentCheck.status) {
  352. // // 需要
  353. // //调用敏感字校验接口
  354. // var params = {
  355. // scene: 2,//内容应用场景值(1:创角,2:聊天(默认),3:家族改名,4:家族公告)
  356. // content: str
  357. // }
  358. // window['hitalkOpenSDK'].gameExtraAction("contentCheck", params, function (res) {
  359. // if (res.retCode == 0) {
  360. // //校验通过
  361. // cb()
  362. // } else {
  363. // //校验失败
  364. // UIHelp.ShowTips("输入文字带有敏感词,请重新输入")
  365. // }
  366. // })
  367. // } else {
  368. // // 不需要
  369. // UIHelp.ShowTips("未开通敏感词检测")
  370. // cb()
  371. // }
  372. }
  373. // 打开客服窗口
  374. openService() {
  375. var switchs = window['hitalkOpenSDK'].switchStatus //获取功能开关状态
  376. //是否显示客服功能
  377. if (switchs.customerService) {
  378. // 显示客服功能
  379. // 打开客服窗口
  380. window['hitalkOpenSDK'].gameExtraAction("customerService", {}, function (res) {
  381. //返回结果
  382. });
  383. } else {
  384. // 隐藏游戏内客服按钮
  385. UIHelp.ShowTips("未开通客服功能")
  386. }
  387. }
  388. // 订阅消息
  389. setSubscribe(tmplIds: string[], ids: string[]) {
  390. var switchs = window['hitalkOpenSDK'].switchStatus //获取功能开关状态
  391. //是否显示客服功能
  392. //判断渠道是否有订阅功能
  393. if (switchs.subscribe) {
  394. //长期订阅状态,该功能暂时关闭,需达到条件才能开启
  395. var subscribeStatus = switchs.subscribe.status //长期订阅状态(暂停使用); true:已订阅 false:未订阅
  396. var oneStatus = switchs.subscribe.oneStatus//一次性订阅状态; true:已订阅 false:未订阅
  397. //一次性订阅功能判断,当调用subscribe订阅接口时为true时判断
  398. if (oneStatus) {
  399. //用户订阅状态为true要进行的操作
  400. //比如:当用户订阅状态为true时,隐藏"订阅"图标/或者"勾选"订阅功能
  401. } else {
  402. //用户订阅状态为false要进行的操作
  403. }
  404. wx["showModal"]({
  405. title: "提示",
  406. content: "请授权开启服务通知",
  407. showCancel: true,
  408. success: function (res) {
  409. if (res.confirm) {
  410. //当(未订阅)用户点击"订阅"按钮,主动订阅时调用
  411. var params = {
  412. type: 0, //0:长期订阅 1:一次性订阅 (默认传入)
  413. tmplIds: tmplIds //订阅模板ID 数组
  414. }
  415. window['hitalkOpenSDK'].gameExtraAction("subscribe", params, function (res) {
  416. console.log("===订阅接口回调===", res)
  417. if (res.retCode == 0) {
  418. //表示订阅成功
  419. GameDataCenter.subscribe.setLastSubscribeTime(tmplIds)
  420. let acceptList: string[] = []
  421. let NoAcceptList: string[] = []
  422. tmplIds.forEach((element, index) => {
  423. if (res?.data?.indexOf(element) >= 0) {
  424. acceptList.push(ids[index])
  425. } else {
  426. NoAcceptList.push(ids[index])
  427. }
  428. });
  429. if (acceptList.length > 0) {
  430. GameDataCenter.subscribe.sendSubscribe(acceptList)
  431. }
  432. if (NoAcceptList.length > 0) {
  433. GameDataCenter.subscribe.sendSubscribeCancle(NoAcceptList)
  434. }
  435. } else {
  436. //表示订阅失败
  437. GameDataCenter.subscribe.sendSubscribeCancle(tmplIds)
  438. }
  439. });
  440. } else if (res.cancel) {
  441. console.log('用户点击取消');
  442. // 用户点击取消后的逻辑处理
  443. //表示订阅失败
  444. GameDataCenter.subscribe.sendSubscribeCancle(tmplIds)
  445. }
  446. }
  447. })
  448. } else {
  449. //表示该渠道没有订阅功能,游戏不能显示订阅相关功能
  450. UIHelp.ShowTips("未开通订阅功能")
  451. }
  452. }
  453. showRewardAd(adId: string, kid: string, order11Id: string): void {
  454. var switchs = window['hitalkOpenSDK'].switchStatus //获取功能开关状态
  455. //是否需要激励视频功能
  456. if (switchs.videoAd) {
  457. //数数上报
  458. let properties = {
  459. "ad_platform": "微信小游戏",
  460. "ad_id": adId,
  461. "ad_type": "激励视频",
  462. "ad_placement_name": "home_feed",
  463. "ad_placement_id": order11Id,
  464. "current_page": kid,
  465. // "ad_ecpm": 0
  466. }
  467. ThinkingDataMgr.TDTrack("ad_request", properties)
  468. // 开启激励视频功能
  469. //播放视频功能
  470. var params = {
  471. adUnitId: adId//不同位置的广告ID,需要游戏传入
  472. }
  473. window['hitalkOpenSDK'].gameExtraAction("videoAd", params, function (res) {
  474. let isSuc = res.retCode == 0 ? true : false
  475. //数数上报
  476. let properties = {
  477. "ad_platform": "微信小游戏",
  478. "ad_id": adId,
  479. "ad_type": "激励视频",
  480. "ad_placement_name": "home_feed",
  481. "ad_placement_id": order11Id,
  482. "current_page": kid,
  483. // "ad_ecpm": 0,
  484. "is_filled_success": isSuc,
  485. "error_detail_info": JSON.stringify(res),
  486. "error_detail_code": res.retCode
  487. }
  488. ThinkingDataMgr.TDTrack("ad_response", properties)
  489. if (res.retCode == 0) {
  490. //表示播放视频成功,游戏内给玩家发放奖励
  491. GameDataCenter.adVideo.onXiadanSucc()
  492. //数数上报
  493. let properties = {
  494. "ad_platform": "微信小游戏",
  495. "ad_id": adId,
  496. "ad_type": "激励视频",
  497. "ad_placement_name": "home_feed",
  498. "ad_placement_id": order11Id,
  499. "current_page": kid,
  500. // "ad_ecpm": 0,
  501. // "ad_app_name": "未知"
  502. }
  503. ThinkingDataMgr.TDTrack("ad_show", properties)
  504. } else {
  505. //表示播放视频失败,不发奖励
  506. //数数上报
  507. let properties = {
  508. "ad_platform": "微信小游戏",
  509. "ad_id": adId,
  510. "ad_type": "激励视频",
  511. "ad_placement_name": "home_feed",
  512. "ad_placement_id": order11Id,
  513. "current_page": kid,
  514. // "ad_ecpm": 0,
  515. // "ad_app_name": "未知",
  516. // "ad_duration": 30,
  517. // "ad_play_duration": 15,
  518. "is_complete_play": false
  519. }
  520. ThinkingDataMgr.TDTrack("ad_close", properties)
  521. }
  522. });
  523. } else {
  524. // 关闭激励视频功能
  525. UIHelp.ShowTips("未开通视频广告")
  526. }
  527. }
  528. // 分享上报
  529. resportShareEvent() {
  530. console.log("分享上报")
  531. // window["hitalkOpenSDK"].addShareInfo({
  532. // data: {
  533. // to_target: 'wx'
  534. // }
  535. // }).then(res => {
  536. // console.log("分享结果:", res)
  537. // })
  538. }
  539. }