帮你抢小游戏流量红利——oppo小游戏接入指南

一、平台介绍

OPPO小游戏运行在OPPO手机自带的游戏中心,活跃用户接近一亿,目前小游戏产品接入需要商务审核,审核通过后方可上线。
平台地址请自行搜索,CSDN这里不让发出来。

二、问题记录

(更新于2021年7月)

1、文件系统API,处理一个不存在的目录,没有回调fail方法【platformVersion: 1090 必现】

oppoFS.stat({
    path: 'qgfile://usr/temp_game',
    success: function (res) {
		console.log(1,res);
    },
    fail: function () {
       console.log(res);
    }
})

2、文件系统API,oppoFS.readdirSync() 访问一个正常存在的目录,也是返回undefined 【platformVersion: 1090 必现】
3、文件系统API,oppoFS.rmdirSync(‘qgfile://usr/temp_game’, true); 移除一个正常存在的目录报错,提示 no such file or directory,这个目录通过oppoFS.stat方法能正常回调success 【偶现】
4、oppo账号登录请求userinfo概率性失败
请求接口是:https://play.open.oppomobile.com/instant-game-open/userInfo?pkgName=xxxx;
使用qg.loin返回最新的token进行请求,报1005错误,提示“认证失败,token校验失败”,【偶现,大概0.1-4%的错误率】
5、代码日志里面偶现部分用户连引擎代码都读取失败,可能是底层代码注入的错误,需要等待平台修复
6、文件系统目前只支持50M存储空间,不像微信、vivo等平台开放到200M。但是有内部未公开方法实现提升。
7、插屏广告不再开放,开发者可以通过自渲染原生广告的方式间接实现。
8、使用quickgame工具打包,项目文件夹下的所有文件都会打包在zip游戏包里面,如果想自己过滤一些不必要的文件,可以修改打包文件signer.js(存储在安装目录下这个路径 quickgame-toolkit\lib\sign\signer.js),在parse方法里面添加代码

if(file.indexOf(".bat")>-1 || file.indexOf(".php")>-1) return;

修改之后的完整 signer.js 文件如下

var fs = require( 'fs-extra');
var path = require( 'path');
var jszip = require( 'jszip');
var signer = require( './bundle');
var EXCLUDES = require( '../config/config').EXCLUDES;
var COMPRESS_OPTS = {
  type: 'nodebuffer',
  compression: 'DEFLATE',
  compressionOptions: {
    level: 9
  }
}

exports.sign = (options, isDev, callback) => {
  const privatekey = fs.readFileSync(options.signFiles.privatekey)
  const certpem = fs.readFileSync(options.signFiles.certificate)
  const zipper = new jszip()
  const filehashs = []
  const zipfile = path.join(options.output,options.rpkName+'.zip')
  let signfile = path.join(options.output, options.rpkName)
  if (isDev || process.env.NODE_ENV != 'production') {//如果强制写了isDev,不打signed
    signfile += '.rpk'
  }else{
    signfile += '.signed.rpk'
  }
  
  parse(options.input, '.', (name, file) => {
	if(file.indexOf(".bat")>-1 || file.indexOf(".cmd")>-1 || file.indexOf(".php")>-1) 
		return; //添加的自定义代码
    if (name.substr(0, 5) !== 'dist/' && name.substr(0, 5) !== 'sign/' && EXCLUDES.indexOf(name) === -1) {
      console.log('name include', name)
      // 文件列表hash
      filehashs.push({
        name: Buffer.from(name),
        file: file,
        hash: signer.hashFile(file, fs)
      })
      zipper.file(name, fs.createReadStream(file));
    }
  }, fs)
  fs.ensureDirSync(options.output)
  zipper.generateNodeStream(COMPRESS_OPTS).pipe(fs.createWriteStream(zipfile)).on('finish', function() {
    signer.signZip({
        zip: zipfile,
        files: filehashs
      }, privatekey, certpem, signfile)
      // 删除临时文件
    fs.existsSync(zipfile) && fs.unlinkSync(zipfile)
    //console.log(chalk.green(`签名完成!文件为:${signfile}`))
    callback && callback(signfile)
  })
}

var parse = (base, dir, cb, fs) => {
  dir = dir || '.'
  const directory = path.posix.join(base, dir)
  let name
    // 递归遍历目录
  fs.readdirSync(directory).forEach(function(file) {
    const fullpath = path.posix.join(directory, file)
    const stat = fs.statSync(fullpath)
    if (stat.isFile()) {
      // 替换
      const posixdir = dir.split(path.sep).join(path.posix.sep)
      name = path.posix.join(posixdir, path.basename(file))
      cb(name, fullpath)
    } else if (stat.isDirectory()) {
      const subdir = path.posix.join(dir, file)
      parse(base, subdir, cb, fs)
    }
  })
}

----------------------华丽的分割线----------------------------------------------------------------------
(截止到2020年3月)
1、oppo编译 需要先安装 quickgame(可以从网上下载 ,也可以从 egret 自动下载的 目录)
oppo文档地址见这里
2、oppo 调用 quickgame -v 报错:primordials is not defined, 原因是 node版本太高(12.13.1),和gulp版本不一致,把nodejs降到 11.9.0 就好了
3、egret引擎:oppo 看完视频,会触发 egret.stage resize事件(微信等其他平台不会),故如果侦听了resize事件,需要注意测试
4、egret引擎:oppo 看完视频回调需要延时 显示 tips(显示对象) 否则显示不出来
5、oppo banner 有不少问题,需要详细测试(2019.12.12)
6、oppo 2.9版本(1050)平台及更低版本以下无需兼容和测试(技术同学说的)
7、oppo 不支持游戏跳转、版本更新提示(没有更新的api)
8、oppo 游戏内的跳转ico不允许与真实游戏ico不一致,这类诱导行为一经发现游戏下架

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星之Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值