文章目录
- 前言
- 问题记录
- 1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效
- 2、微小支付的参数如何获取?
- 3、iOS 平台不支持虚拟支付怎么办?
- 微小 iOS 端支付时序图:
- 抖小 iOS 端支付:
- 4、展示广告时多次回调 onClose
- 5、在使用单例时 this 引起的 bug
- 6、使用 fetch 或 axios 封装网络请求框架时编译报错
前言
上两篇文章写了如何搭建一个小游戏聚合SDK以及如何打包前端SDK,这篇文章会记录我在接入微小和抖小时遇到的问题及解决办法。
问题记录
1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效
官方没有提供判断是微小环境和抖小环境的API,在聚合SDK里需要想办法判断当前环境然后调用对应环境的API,比如在微小环境下不能调用到抖音的登录。微小的API都是 wx 调用,抖音的API 都是 tt 调用,当使用这个区别来区分环境时发现并不生效,原因是抖小也引入了wx api 。需要查找其他办法。
**方法一:**可以根据小游戏 appId
来判断,微小 appId
是 wx
开头的,比如 wx05be1ceba191eb56
,抖小的 appId
是 tt
开头的,比如:tt98abci12lhhiopw52
。
**方法二:**在官方 API 文档中查到各自特有方法判断,比如抖小的 API tt.getLaunchOptionsSync
微小就没有。另 tt.getLaunchOptionsSync
这个 api 可以获取抖小的小游戏 appId
。wx.getAccountInfoSync
就是微小特有的 API。
// 平台检测
export function getPlatformType() {if (typeof wx.getAccountInfoSync !== 'undefined' && typeof wx.getSystemSetting === 'function') {return WeChatMiniSDK} else if (typeof tt.getLaunchOptionsSync !== 'undefined' && typeof tt.canIUse === 'function') {return DouyinMiniSDK}
}
2、微小支付的参数如何获取?
根据微小支付文档API https://developers.weixin.qq.com/minigame/dev/api/midas-payment/wx.requestMidasPaymentGameItem.html 在前端调用微小支付接口时需要传递 paySig
和 signature
,但是这两个参数的参数签名都不是前端生成的,需要服务端生成。也就是在用户创建微小订单时需要先向开发者服务端获取签名信息,至于如何简化流程可以和开发者服务端商量。
3、iOS 平台不支持虚拟支付怎么办?
根据微小/抖小后台虚拟支付的开通里提示,虚拟支付是不支持 iOS 端的。经过调研现有小游戏,iOS 端的支付都是开发者另辟蹊径实现的。微小/抖小的流程也并不一致,下面分开说。
微小 iOS 端支付时序图:
- 用户发起支付
- CP创建订单,向中台前端SDK