华为快游戏SDK接入踩坑记录

华为快游戏被驳回常见问题:
  1. 游戏开始前著作权人、健康游戏忠告等信息显示不全(页面停留时间不宜过短,如果过短也可能会审核不通过)
  2. 激励视频有部分请求是实时的,没有预加载
  3. 无隐私权限或者是同意隐私权限进入应用后,下次打开仍需同意(这个可以做默认勾选,用户点击同意按钮之后下次进入游戏不再出现)
  4. 原生广告没有广告来源
华为快游戏被驳回技术方面的问题:
  1. 激励视频播放完成,不发放复活奖励。
  2. 交付件中无插屏广告,出现插屏预加载
  3. 原生广告广告位与交付件不符
  4. 原生广告切换界面后返回,广告展示无曝光上报
  5. 激励视频点击无法观看
  6. 原生广告有广告请求,没有广告返回
  7. 原生页面ui无广告标识
新规则:
快游戏激励视频必选640*360尺寸和720*1280两个尺寸
去掉勾选的使用正式版签名,不使用正式版签名
1.资源加载出错:
解决方案:
(1)第一步:
libs库文件夹中,需要引入文件: laya.hwmini.js
(2)打包工具:layaIDE的版本2.8.1以上:
(3)适配华为: 文档中心
由于快游戏平台实现的  XMLHttpRequest  不支持读取本地文件,因此需要添加适配来读取本地文件。以下是对  不同 Laya 版本的适配
   // 第一处适配代码在这里,插入添加适配读取本地资源
if (typeof loadRuntime !== 'undefined' && !url.startsWith("http")) {
   let that = this;
    setTimeout(() => {
        if (url.startsWith('file://')){
            url = url.substr('file://'.length);
        }
        url = URL.getAdptedFilePath(url);//对资源后缀转化,Laya 自带方法
        var response;
        var type = contentType;
        if (type == 'pkm' || type === "arraybuffer") {
            response = qg.getFileSystemManager().readFileSync(url);
        } else {
            response = qg.getFileSystemManager().readFileSync(url, "utf8");
            if ((type == 'atlas' || type == 'json') && typeof response !== "undefined") {
                response = JSON.parse(response);
            }
        }
        that.onLoaded(response);
    }, 0);
    return;//这里记得 return
}

//第一处添加适配代码结束,下面是原本 laya 代码
 
           //第二处适配代码
            if (Browser.onVVMiniGame || typeof qg !== "undefined") {
                this._http = new HttpRequest();
            }
            else {
                if (!this._http)
                    this._http = new HttpRequest();
            }
            // if (Browser.onVVMiniGame) {
            //     this._http = new HttpRequest();
            // }
            // else {
            //     if (!this._http)
            //         this._http = new HttpRequest();
            // }

2.音效报错:华为对音效和音乐做特殊适配:
(1)播放音乐做华为适配:
      
  if (window.hbs) {//华为播放音乐
            this._bgm = hbs.createInnerAudioContext();
            this._bgm.src = file;
            this._bgm.loop = true;
            this._bgm.play();
        } else if (Laya.Browser.onMiniGame) {
            if (!this._bgm)
                this._bgm = wx.createInnerAudioContext();
            this._bgm.src = file;
            this._bgm.loop = true;
            this._bgm.play();
        } else if (window.isApp && zs.Native && window.qg) {
            if (!this._bgm)
                this._bgm = qg.createInnerAudioContext();
            this._bgm.src = file;
            this._bgm.loop = true;
            this._bgm.play();
        } else {
            if (!this._bgm)
                this._bgm = Laya.SoundManager.playMusic(file, 0, undefined, (this._bgm && this._bgm.url === file) ? this._bgm.position : 0);
        }

(2)播放音效做华为适配:
  
      if (window.hbs) {
            sound = hbs.createInnerAudioContext();
            sound.src = config.file;
            sound.loop = loop;
            sound.volume = config.musicPower * this.soundVolume;
            sound.play();
        } else {
            sound = Laya.SoundManager.playSound(config.file, loop ? 0 : 1);
            sound && power != void 0 && (sound.volume = power);
        }

3.华为屏幕适配:加在Main.js的最后:
 
//华为屏幕适配
if (typeof hbs !== 'undefined') {
    Laya.stage.useRetinalCanvas = true;
    if (typeof getAdapterInfo !== "undefined") {
        var stage = Laya.stage;
        var info = getAdapterInfo({ width: stage.designWidth, height: stage.designHeight, scaleMode: stage._scaleMode });
        //注意:其中 GameConfig.width 和 GameConfig.height 为该demo中设置游戏的宽和高,请根据实际项目填写
        stage.designWidth = info.w;
        stage.designHeight = info.h;
        stage.width = info.rw;
        stage.height = info.rh;
        stage.scale(info.scaleX, info.scaleY);
    }
}


4.必须主动在index.js中引入华为的库文件:

if (window.hbs) {  //打包华为必须主动引入
    loadLib("libs/laya.hwmini.js");
}

5.华为调用登录,失败:游戏登录失败,错误码:AUTH FAIL, code:-1
解决办法:
报-1是指纹问题。拿本地的加载器去测试下rpk,可以在加载器里看到该游戏的指纹,然后看看和AGC官网上这个应用的指纹是不是一致
长按加载器上应用,通过管理可以看到指纹
6.华为包第一次上线前,所有的广告都要使用测试ID去拉取:
测试广告id:
原生 testy63txaom86
banner testw6vs28auh3
激励 testx9dtjwj8hp
插屏 testb4znbuh3n2
7.华为隐私政策网址:
隐私政策
隐私政策

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/228833.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年AI视频识别技术的6大发展趋势预测

随着人工智能技术的快速发展,AI视频识别技术也将会得到进一步的发展和应用。2023年已经进入尾声,2024年即将来临,那么AI视频识别技术又将迎来怎样的发展趋势?本文将对2023年的AI视频技术做一个简单的盘点并对2024年的发展趋势进行…

隆道总裁吴树贵出席山东CIO年会 探讨AI在采购场景的应用

12月2日,由山东省首席信息官(CIO)联盟主办的2023(第14届)山东CIO年会在济南召开,本届盛会汇集业界专家、企业高管、技术厂商等,共同探讨企业数字化转型的未来趋势和发展动力,推动数字…

最简单的基于 FFmpeg 的音频解码器

最简单的基于 FFmpeg 的音频解码器 最简单的基于 FFmpeg 的音频解码器正文参考 参考雷霄骅博士的文章,链接:最简单的基于FFMPEGSDL的音频播放器:拆分-解码器和播放器 最简单的基于 FFmpeg 的音频解码器 正文 FFmpeg 音频解码器实现了音频数…

IO流(Java)

IO流 在学习IO流之前,我们首先了解一下File File File即文件或文件夹路径对象,其示例类可以是存在路径也可以是未创造路径 File有什么用 用于创建或操作文件或文件夹 File常用API API部分看得懂会查会用即可 IO流 IO(Input 读数据 Output写数据…

scikit-learn实现线性回归

要学习scikit-learn,我们必须要到scikit-clearn的官网中去查看公式和原理 scikit-learn 官网 scikit-learn 中文社区 进入官网一以后我们找到回归,然后再有监督学习中找到线性模型 scikit-learn实现简单的线性回归 公式: L2范数是指向量中每个元素的平…

倒计时模块复习

经典回顾倒计时 倒计时的基本布局介绍。 一个内容区域和一个输入区域,内容区域进行划分 直接使用flex布局会更快一点。 js代码 我们利用一下模块化思想,直接把获得时间这个功能写成一个函数。方便后续的调用 function getTime() {const date new Date…

第一课【习题】三方库

三方组件是开发者在系统能力的基础上进行了一层具体功能的封装,对其能力进行拓展的工具 。 可以通过ohpm uninstall 指令下载指定的三方库 lottie使用loadAnimation方法加载动画。 通过ohpm安装lottie后,在哪个文件中会生成相关的配置信息&#xf…

【Java探索之旅】我与Java的初相识(一):Java的特性与优点及其发展史

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! 文章目录 一. Java语言概述与优势1.1 Java的概述1.2 Java语言的优势 二. Java领域与发展史2.1 Java的使用领域2.…

智能优化算法应用:基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.跳蛛算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

MDK官网如何下载stm32支持包

网站:https://www.keil.com/demo/eval/arm.htm 1 2 3点这个下载

数字图像处理(实践篇)十九 漫水填充

目录 一 漫水填充算法--FloodFill 二 涉及的函数 三 实践 一 漫水填充算法--FloodFill FloodFill漫水填充算法就是选中与种子点相连接的区域,利用指定颜色进行区域颜色填充。可以通过设置连通方式或像素的范围控制填充的效果。通常是用来标记或者分离图像的一部…

直流负载箱的技术发展趋势和创新有哪些?

直流负载箱广泛应用于电子、通信、航空航天等领域,随着科技的不断发展,直流负载箱也在不断创新和改进,直流负载箱在负载电流和电压的测量方面要求高精度和高稳定性。未来的发展趋势是提高负载箱的测量精度和稳定性,以满足更高要求…

你知道怎样在 Python 中管理内存吗

memray 是一个Python库,它提供了一种可视化内存管理工具,可以帮助Python开发人员更好地理解和优化他们的代码中的内存使用情况。 它是由彭博社开发的,可用于分析Python程序中的内存泄漏和其他内存问题。以下是memray库的使用场景和入门案例。…

ChatGPT可能即将发布新版本,带有debug功能:支持下载原始对话、可视化对话分支等

本文原文来自DataLearnerAI官方网站:ChatGPT内置隐藏debug功能:支持下载原始对话、可视化对话分支等 | 数据学习者官方网站(Datalearner) AIPRM的工作人员最近发现ChatGPT的客户端隐藏内置了一个新的debug特性,可以提高ChatGPT对话的问题调试…

【学习笔记】LLM for Education

ChatGPT has entered the classroom: how LLMs could transform education 前言IntroductionThe risks are realEmbracing LLMsIntroducing the AI tutorAugmenting retrievalWill it catch on?总结 前言 一篇来自Nature的文章,探讨了教育行业的不同参与者&#x…

harmony开发之Text组件的使用

TextInput、TextArea是输入框组件,通常用于响应用户的输入操作,比如评论区的输入、聊天框的输入、表格的输入等,也可以结合其它组件构建功能页面,例如登录注册页面。 图片来源黑马程序员 Text组件的使用: 文本显示组…

Elasticsearch:什么是检索增强生成 (RAG)?

检索增强生成 (RAG) 定义 检索增强生成 (RAG) 是一种利用来自私有或专有数据源的信息来补充文本生成的技术。 它将旨在搜索大型数据集或知识库的检索模型与大型语言模型 (LLM) 等生成模型相结合,后者获取该信息并生成可读的文本响应。 检索增强生成可以通过添加来…

STC15F100E单片机模拟串口

文章目录 一、芯片简介二、开发环境三、软件模拟串口参考 一、芯片简介 STC15F100系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,新一代8051单片机,指令代码完全兼容传统8051,但是速度快6-12倍。 内部集成R/C时钟,5MHz…

Vue3拖拽功能【VueDraggablePlus】

一、介绍 由于 Sortablejs 的 vue3 组件一直没有更新,已经跟 vue3 严重脱节,所以诞生了这个项目,这个组件是基于 Sortablejs 的,所以如果你想了解更多关于 Sortablejs 的信息,可以查看Sortablejs 官网。VueDraggableP…
最新文章