cocos creator 支付宝渠道小游戏接入备忘

背景:

        前任以webview打包的方式配合公司前端同学制作的脚手架以小程序的方式将公司产品接入了支付宝渠道的小程序,然今年中下旬开始渠道那边通知建议接入小游戏渠道于是着手尝试。接入过程中遇到各种花式问题,故留文备忘。

QA:

 1.        Q:文档上部分接口同时提供了异步和同步实现的接口,标注了最早生效版本;然实际开发中发现图省事使用同步接口常会有api调用失败的情况。

                A:统一使用异步接口。

2.        Q:锁帧接口无效 / 开启音频导致的卡顿

                A:使用10.5.16以上的支付宝app

3.        Q:纹理渲染

                A:实际表现来看接入前后没啥区别,该卡还是卡
4.        Q:字体模糊

                A:支付宝渠道小游戏对字体透明度预乘处理的实现和其他常见渠道有所出入,将对应控件的secBlendFactor设置为cc.macro.BlendFactor.ONE即可;

PS:如果是和我一样是已经开发完部分或各个渠道的资源在同一个分支,建议使用代码批量设置:

label["_srcBlendFactor"] = cc.macro.BlendFactor.ONE;

5.        Q:banner广告接入部分手机报错61101或create失败或create后迟迟收不到回调,不论是successCallback还是failCallback

                A:可能是传参中给的left和top过大引起的;注意使用getSystemInfo返回值里的window宽高(逻辑像素)而非screen宽高(物理像素)进行相关计算;

PS:ios目前(2023.09.05)发现一个问题是横屏游戏时,部分机型宽高的返回值反过来了

6.        Q:缓存接口存在延时

                A:支付宝缓存接口可以直接存取Object,个人实现是仅在启动游戏时读一次为cacheRoot,后续遇到需要读的地方实际上只是从cacheRoot中读取相应字段;存的话直接将当前的cacheRoot存进去

7.        Q:文件操作差异

                A:总体上说支付宝小游戏的文件api和微信小游戏的类似,需注意时支付宝api操作目录时记得去掉结尾的分隔符;
更为重要的一点是my.dowmloadFile接口,目前(2023.09.05)文档上和实际使用情况不一样,个人目前封装:

return new Promise<boolean>(resolve => {
            try {
                my.downloadFile({
                    url: url,
                    filePath: path,
                    success(res) {
                        console.log(AliPayPlatformNew.tag + `, timestamp: [${Date.now()}], `, `downloadFile success, url : ${url}, res: `, res);
                        return resolve(res.statusCode == 200);
                    },
                    fail(err) {
                        console.error(AliPayPlatformNew.tag + `, timestamp: [${Date.now()}], `, `downloadFile fail, url : ${url}, err: `, err);
                        return resolve(false);
                    },
                });
            } catch (error) {
                console.error(AliPayPlatformNew.tag + `, timestamp: [${Date.now()}], `, `downloadFile error, url : ${url}, err: `, error);
                return resolve(false);
            }
        });

主要分歧在于传参按文档说法的话是没有filePath用于指定下载后文件路径,取而代之在success回调中会有个 apFilePath指代下载文件的临时缓存路径。

8.        Q:开发过程中有一台手机会出现在加载游戏是报【unzip failed:单个文件超限】的error

                A:emm暂时没处理,先上线观察一下,因为只有这一台手机会出现(红米M2012K11AC)。说实话也不知道咋处理,估计只能重新分包。

9.        Q:使用minidev上传包报错【版本正在生成中】

                A:实测下来是因为已经有一个和当前上传版本相同版本号的包存在,在支付宝开放后台删除这个包或者换一个版本号再上传即可

Cocos Creator接入快手小游戏广告,主要是为了通过集成广告SDK,在游戏中展示广告并获取收益。下面将简要介绍如何在Cocos Creator项目里接入快手小游戏平台的广告功能。 ### 准备工作 1. **注册快手开发者账号**:前往[快手开放平台](https://open.kuaishou.com/)完成注册,并创建新的小程序应用。 2. **下载最新版SDK**:根据官方文档指引,下载适用于Cocos Creator项目的快手小游戏广告插件或SDK包。 3. **配置开发环境**:确保本地安装了正确的版本工具链(如Node.js、Cocos CLI等),并且已设置好对应的微信开发者工具或其他IDE。 ### 接入步骤 #### 步骤一:导入SDK - 将下载好的广告SDK解压到合适的位置; - 把`libs`文件夹下的内容复制粘贴至你的Cocos Creator工程根目录下指定位置(例如assets/libs); - 如果有额外资源需要加载,则按照说明添加相应路径引用; #### 步骤二:初始化 SDK 和 设置 AppID ```javascript // main.js 或者其他入口脚本 cc.game.once(cc.Game.EVENT_ENGINE_INITED, function () { if (typeof kwa != "undefined") { // 检查是否支持快手webview api var appid = 'YOUR_APP_ID'; // 替换为你申请的应用 ID // 初始化快广系统服务端口实例化对象 kwad = new KsAd(appid); // 监听日志回调信息打印 kwad.setLog(true); // 开始预加载激励视频素材... kwad.preloadRewardVideo(); } }); ``` #### 步骤三:请求显示广告 当玩家达到特定条件时触发广告播放: ```javascript function showRewardAds(callback) { if (!kwad || !kwad.isReady()) return; // 展示奖励型视频前先检查是否有缓存数据可用 kwad.show(function(result){ console.log('reward ad result:',result); // 根据结果状态给予用户对应反馈处理... callback && typeof callback === 'function' ? callback(result == 0): null; // 继续准备下一个可投放时机所需的内容... setTimeout(() => { kwad.preloadRewardVideo(); }, 500); }); } ``` 注意以上仅为演示目的编写的基本框架代码片段,请参照实际需求调整业务逻辑流程及错误异常管理机制。 此外还需关注官方提供的详细指南与API参考手册来完善整个过程中的细节部分,比如适配不同分辨率设备屏幕尺寸差异带来的布局变化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值