- 如果游戏中没有涉及内容相关的使用场景,内容安全能力2.0可以不接入吗?还是说一定要强制集成
如果游戏中没有涉及内容相关的使用场景,内容安全能力2.0可以不接入吗?还是说一定要强制集成
2022-10-24 - JS中的二进制数据处理
前言 在现有的计算机中,二进制常常以字节数组的形式存在于程序当中。例如在C#里面,就用byte[],标准C里面没有byte类型,但可以通过typedef把byte定义为unsigned char的别名,效果是一样的。JS设计之初似乎就没想过要处理二进制,对于字节的概念可以说是非常非常的模糊。如果要表达字节数组,那么似乎只能用一个普通数组来表示。 然而随着业务需求的逐渐发展,出现了WebGL这样的技术。所谓WebGL,就是指浏览器与显卡之间的通信接口。为了满足JavaScript与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式。类型化数组(Typed Array)就是在这种背景下诞生的。而类型化数组是建立在ArrayBuffer对象的基础上的。下面介绍一下Arraybuffer。 一、Arraybuffer1.1 基本概念 ArrayBuffer 对象是 ES6 才纳入正式 ECMAScript 规范,是 JavaScript 操作二进制数据的一个接口。ArrayBuffer 对象是以数组的语法处理二进制数据,也称二进制数组。它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写。 ❝ArrayBuffer 简单说是一片内存,但是你不能直接用它。这就好比你在 C 里面,malloc 一片内存出来,你也会把它转换成 unsigned_int32 或者 int16 这些你需要的实际类型的数组/指针来用。这就是 JS 里的 TypedArray 的作用,那些 Uint32Array 也好,Int16Array 也好,都是给 ArrayBuffer 提供了一个 “View”,MDN 上的原话叫做 “Multiple views on the same data”,对它们进行下标读写,最终都会反应到它所建立在的 ArrayBuffer 之上。❝1.2 基本操作「语法」 new ArrayBuffer(length) 参数:length 表示要创建的 ArrayBuffer 的大小,单位为字节;返回值:ArrayBuffer 对象;异常:如果 length 大于 Number.MAX_SAFE_INTEGER(>= 2 ** 53)或为负数,则抛出一个 RangeError 异常;「示例」 const buffer = new ArrayBuffer(32); buffer.byteLength; // 32 const v = new Int32Array(buffer); ArrayBuffer.isView(v) // true const buffer2 = buffer.slice(0, 1); 上面代码表示实例对象 buffer 占用 32 个字节。 它有实例属性 byteLength ,表示当前实例占用的内存字节长度。 它拥有一个静态方法isView(),这个方法可以用来判断是否为TypedArray实例或DataView实例。 它拥有实例方法 slice(),用来复制一部分内存,使用方式同数组的slice方法。 除了slice方法,ArrayBuffer对象不提供任何直接读写内存的方法,只允许在其上方建立视图,然后通过视图读写。 二、视图2.1 TypedArray TypedArray一共包含九种类型,每一种都是一个构造函数。(DataView视图不支持Uint8ClampedArray,其他都支持) 名称描述长度(字节)Int8Array8位有符号整数1Uint8Array8位无符号整数1Uint8ClampedArray8位无符号整型固定数组(数值在0~255之间)1Int16Array16位有符号整数2Uint16Array16位无符号整数2Int32Array32位有符号整数4Uint32Array32 位无符号整数4Float32Array32 位 IEEE 浮点数4Float64Array64 位 IEEE 浮点数8 每一种视图都有一个BYTES_PER_ELEMENT常数,表示这种数据类型占据的字节数。 Int8Array.BYTES_PER_ELEMENT // 1 Uint8Array.BYTES_PER_ELEMENT // 1 Int16Array.BYTES_PER_ELEMENT // 2 Uint16Array.BYTES_PER_ELEMENT // 2 Int32Array.BYTES_PER_ELEMENT // 4 Uint32Array.BYTES_PER_ELEMENT // 4 Float32Array.BYTES_PER_ELEMENT // 4 Float64Array.BYTES_PER_ELEMENT // 8 这 9 个构造函数生成的数组,统称为TypedArray视图。它们很像普通数组,都有length属性,普通数组的操作方法和属性,对TypedArray 数组完全适用。 普通数组与 TypedArray 数组的差异主要在以下方面: [图片] TypedArray和Array之间也可以互相转换 const typedArray = new Uint8Array([1, 2, 3, 4]); const normalArray = Array.apply([], typedArray); 「建立TypedArray视图」 // 创建一个8字节的ArrayBuffer const a = new ArrayBuffer(8); // 创建一个指向a的Int32视图,开始于字节0,直到缓冲区的末尾 const a1 = new Int32Array(a); // 创建一个指向a的Uint8视图,开始于字节4,直到缓冲区的末尾 const a2 = new Uint8Array(a, 4); // 创建一个指向a的Int16视图,开始于字节4,长度为2 const a3 = new Int16Array(a, 4, 2); 上面代码在一段长度为 8 个字节的内存(a)之上,生成了三个视图:a1、a2和a3。 视图的构造函数可以接受三个参数: 第一个参数(必选):视图对应的底层ArrayBuffer对象;第二个参数:视图开始的字节序号,默认从 0 开始;第三个参数:视图包含的数据个数,默认直到本段内存区域结束; 建立了视图以后,就可以进行各种操作了。这里需要明确的是,视图其实就是普通数组,语法完全没有什么不同,只不过它直接针对内存进行操作,而且每个成员都有确定的数据类型。所以,视图就被叫做“类型化数组”。 「TypedArray视图操作」 const buffer = new ArrayBuffer(8); const int16View = new Int16Array(buffer); for (let i = 0; i < int16View.length; i++) { int16View[i] = i * 2; } console.log(int16View) // [0, 2, 4, 6] 上面代码生成一个8字节的ArrayBuffer对象,然后在它的基础上,建立了一个16位整数的视图。由于每个字节占据8位,那么16位就占据了2个字节(1个字节等于8位),所以一共可以写入4个整数,依次为0,2,4,6。 如果在这段数据上接着建立一个8位整数的视图,则可以读出完全不一样的结果。 const int8View = new Int8Array(buffer); for (let i = 0; i < int8View.length; i++) { int8View[i] = i; } console.log(int8View) // [0, 0, 2, 0, 4, 0, 6, 0] 首先整个ArrayBuffer对象会被分成8段。然后,由于x86体系的计算机都采用小端字节序(具体概念理解请自主查询),相对重要的字节排在后面的内存地址,相对不重要字节排在前面的内存地址,所以就得到了上面的结果。还可以看到下面这个例子 const buffer = new ArrayBuffer(4); const v1 = new Uint8Array(buffer); v1[0] = 10; v1[1] = 3; v1[2] = 11; v1[3] = 8; console.log(v1) // [10, 3, 11, 8] const uInt16View = new Uint16Array(buffer); // [0xa, 0x3, 0xb, 0x8] console.log(uInt16View) // 计算机采用小端字节序 [0x030a, 0x080b] => [778, 2059] 如果一段数据是大端字节序(大端字节序主要用于数据传输),TypedArray 数组将无法正确解析,因为它只能处理小端字节序!为了解决这个问题,JavaScript 引入DataView对象,可以设定字节序。 2.2 DataView DataView 视图是一个可以从二进制 ArrayBuffer 对象中读写多种数值类型的底层接口,使用它时,不用考虑不同平台的字节序问题。 ❝ 字节顺序,又称端序或尾序(英语:Endianness),在计算机科学领域中,指存储器中或在数字通信链路中,组成多字节的字的字节的排列顺序。字节的排列方式有两个通用规则。例如,一个多位的整数,按照存储地址从低到高排序的字节中,如果该整数的最低有效字节(类似于最低有效位)在最高有效字节的前面,则称小端序;反之则称大端序。在网络应用中,字节序是一个必须被考虑的因素,因为不同机器类型可能采用不同标准的字节序,所以均按照网络标准转化。例如假设上述变量 x 类型为int,位于地址 0x100 处,它的值为 0x01234567,地址范围为 0x100~0x103字节,其内部排列顺序依赖于机器的类型。大端法从首位开始将是:0x100: 01, 0x101: 23,..。而小端法将是:0x100: 67, 0x101: 45,..。❝「语法」 new DataView(buffer [, byteOffset [, byteLength]]) 相关的参数说明如下: buffer:ArrayBuffer 对象 或 SharedArrayBuffer 对象;byteOffset(可选):此 DataView 对象的第一个字节在 buffer 中的字节偏移。如果未指定,则默认从第一个字节开始;异常:此 DataView 对象的字节长度。如果未指定,这个视图的长度将匹配 buffer 的长度;「示例」 const buffer = new ArrayBuffer(16); const view = new DataView(buffer, 0); view.setInt8(1, 68); view.getInt8(1); // 68 如果一次操作(get或者set)两个或两个以上字节,就必须明确数据的存储方式,到底是小端字节序还是大端字节序。DataView的操作方法默认使用大端字节序解读数据,如果需要使用小端字节序解读,必须在操作方法中指定参数为true(get方法的第二个参数和set方法的第三个参数)。 const buffer = new ArrayBuffer(24); const dv = new DataView(buffer); // 1个字节,默认大端字节序 const v1 = dv.getUint8(0); // 小端字节序 const v1 = dv.getUint16(1, true); // 大端字节序 const v2 = dv.getUint16(3, false); // 在第5个字节,以小端字节序写入值为11的32位整数 dv.setInt32(4, 11, true); 对于直接处理ArrayBuffer对象的业务场景不是特别多,特别是写页面比较多的同学。笔者深刻认识并运用的场景,主要是在处理比较复杂且数据量比较大的点云数据,前端接收到的点云数据已经是原始采集数据转换过的二进制数据,前端需要对二进制数据进行解析,运用的解析方法就是上述提到的各种方法。下面介绍一下业务场景中比较常见到的一种二进制表示类型——Blob。 三、Blob3.1 基本介绍 Blob 对象比较常用于文件上传、文件读写操作等。在对文件读写的时候,我们更多的时候只是操作File对象,而File继承了所有Blob的属性。所以在我们看来,File对象可以看作一种特殊的Blob对象。 而Blob 对象与 ArrayBuffer 的区别在于,Blob 对象用于操作二进制文件, ArrayBuffer 用于直接操作内存,所以他们有如下图的关系: [图片] 「语法」 const blob = new Blob(array [, options]); 相关的参数说明如下: array:字符串或二进制对象,表示新生成的Blob实例对象的内容;options(可选):比较常用的属性 type,表示数据的 MIME 类型,默认空字符串;「示例」 const array = ['Hello World! ']; const blob = new Blob(array, {type : 'text/html'}); 「属性和方法」 [图片] 由上图可以看到,Blob对象拥有size和type两个属性,以及多种自有方法。比较常用的方法slice、arrayBuffer等;slice方法主要用来拷贝原来的数据,返回的也是一个Blob实例,这个方法可以用来做切片上传。arrayBuffer方法返回一个 Promise 对象,包含 blob 中的数据,并在 ArrayBuffer 中以二进制数据的形式呈现。 const blob = new Blob([]); blob.slice(0, 1); blob.arrayBuffer().then(buffer => /* 处理 ArrayBuffer 数据的代码……*/); 3.2 运用场景通过window.URL.createObjectURL方法可以把一个blob转化为一个Blob URL,并且用做文件下载或者图片显示的链接。 Blob URL所实现的下载或者显示等功能,仅仅可以在单个浏览器内部进行。而不能在服务器上进行存储,亦或者说它没有在服务器端存储的意义。 下面是一个Blob的例子,可以看到它很短 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf 和冗长的Base64格式的Data URL相比,Blob URL的长度显然不能够存储足够的信息,这也就意味着它只是类似于一个浏览器内部的“引用“。从这个角度看,Blob URL是一个浏览器自行制定的一个伪协议。 「文件下载」 [图片] 「图片显示」 [图片] 「切片上传」 [图片] 「本地文件读取」 [图片]
2021-05-10 - 如何对 arraybuffer 做一次图像编码(例如 PNG / JPEG)?
通过摄像头onCameraFrame监听获取arraybuffer后如何转成base64图片
2020-06-09 - 小程序AR识别,三行代码实现Camera数据毫秒级转base64图片
关键词:小程序AR 图片 base64 相机 Camera onCameraFrame Canvas ArrayBuffer Uint8Array Uint8ClampedArray upng-js 核心步骤: 1 相机原始图像数据frame.data,即ArrayBuffer数组,转成Uint8Array数组 2 Uint8Array数组转成Uint8ClampedArray数组 3 wx.canvasPutImageData(Uint8ClampedArray) 详细流程如下: 最近因为项目需求,需要上传base64去做AR识别功能,和大家一起分享讨论下具体的实现方式。 首先说下实现原理,通过Camera的onCameraFrame获取实时帧数据,将实时帧数据添加到Canvas上,然后将Canvas保存为临时图片,再将临时图片转换为base64。 贴上核心实现代码: wxml: js: var nCounter = 0; openCamera: function (res) { var that = this var camera_ctx = wx.createCameraContext() listener = camera_ctx.onCameraFrame((frame) => { // nCounter等于30 是因为一开始相机会有一个对焦的过程,如果一开始获取数据,就是模糊的图片 if (nCounter == 30) { console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height) var data = new Uint8Array(frame.data); var clamped = new Uint8ClampedArray(data); // 实时帧数据添加到Canvas上 wx.canvasPutImageData({ canvasId: 'myCanvas', x: 0, y: 0, width: frame.width, height: frame.height, data: clamped, success(res) { // 转换临时文件 wx.canvasToTempFilePath({ x: 0, y: 0, width: frame.width, height: frame.height, canvasId: 'myCanvas', fileType: 'jpg', destWidth: frame.width, destHeight: frame.height, // 精度修改 quality: 0.8, success(res) { // 临时文件转base64 wx.getFileSystemManager().readFile({ filePath: res.tempFilePath, //选择图片返回的相对路径 encoding: 'base64', //编码格式 success: res => { // 保存base64 that.data.mybase64 = res.data; } }) }, fail(res) { console.log(res); } }, that) } }) } nCounter++ // console.log(nCounter); if (nCounter >= 100) { nCounter = 0 } }) listener.start() } 目前网上有两种转换方式并对比下: 1:upng-js等第三方转码js库,将相机流转换成base64,一般需要1-2s左右 [图片] 2.使用canvas将相机流转变base64,都是使用js或者小程序官方的api进行转换,一般转换时间在1秒以下: [图片] 重点说明下: 如何使用wx.canvasPutImageData()将相机流添加canvas,我们查看该官方api,添加的data类型为:Uint8ClampedArray [图片] 而我们通过onCameraFrame获取的data类型为:ArrayBuffer [图片] 所有两者类型不一致,就需要转换,将ArrayBuffer=>Uint8Array=>Uint8ClampedArray var data = new Uint8Array(frame.data); var clamped = new Uint8ClampedArray(data); 成功的把onCameraFrame获取实时帧数据转换并canvasPutImageData在canvas上,并通过canvasToTempFilePath获取临时文件,如何获取临时文件getFileSystemManager转换为base64,传入云端进行AR识别,就大功告成! 技术分享来自于:北京晞翼科技有限公司 技术作者:le3d618、xiaoz0816 微信商务联系:le3d618
2020-04-30 - 获取 Camera 实时帧数据 onCameraFrame的ArrayBuffer如何保存为图片?
请问 [代码]const listener = context.onCameraFrame((frame) => { console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height)})[代码]拿到的 ArrayBuffer 怎么能保存为一图片呢?有什么思路,谢谢
2019-12-15 - onCameraFrame获取的base64格式与普通图片base64格式不同
onCameraFrame获取的arraybuffer用wx.arrayBufferToBase64转换后得到的base64格式看起来很奇怪,与普通图片转成的base64格式不一样,得到的base64也无法通过工具转换成图片。请问有人解决过这种问题吗,该如何处理?
2019-07-30 - 请问onCameraFrame可以调整获取图片的频率吗?
请问onCameraFrame可以调整获取图片的频率吗? https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.onCameraFrame.html
2019-07-29 - 小程序安全检测上线公告
为进一步提升小程序的安全性和用户体验,目前平台将对提审的小程序进行安全检测,以便能及时帮助开发者发现小程序可能存在的安全漏洞。 一、背景介绍 小程序在开发过程中若存在安全漏洞的情况,如敏感数据篡改、拖库信息泄露、WEB攻击等,容易造成小程序的安全隐患,可能带来代码易被反编译、核心业务逻辑被破译、算法易被二次打包等风险。因此,平台将对提审的小程序进行安全检测,以协助开发者提升小程序服务的安全性,同时开发者也应加强自身小程序安全漏洞监测能力,保证可及时消除潜在的安全风险。 二、审核过程 安全检测过程中,平台会模拟真实业务场景,向提审小程序的后台发送服务请求,服务器会收到来自平台(显示为:Tencent Security Team,请求IP为106.55.202.118;113.96.223.69;125.39.132.125;43.139.209.119)的请求。该请求均以较低速率进行,正常情况下不会影响小程序的正常服务。若确实出现了影响小程序正常业务的特殊情况,如用户无法进行小程序的正常访问,开发者可基于自身业务情况,对相应请求加以限频,如有其他疑问,欢迎随时通过官方社区进行反馈。 三、审核结果 安全检测的结果是小程序审核的重要参考。若小程序在安全检测中被检测到存在安全漏洞,该小程序的审核将不予通过。开发者可根据扫描报告中的修改指引,对安全漏洞进行相应修复后,再重新进行提审。 其他常见问题 Q1:可以选择不进行安全检测吗,是否会影响小程序代码提审结果? A1:安全检测是小程序审核的环节之一,所有提审的小程序均需进行,若检测中发现安全漏洞或小程序故意采取措施规避检测,该小程序的审核将不予通过。 Q2:若在小程序代码审核已结束或审核已撤销的情况下,可以停止安全检测吗? A2:若在小程序代码审核已结束的情况下,平台将持续进行未完成的安全检测直至完成,如有需要,开发者可通过平台提供的相应链接(在【小程序管理后台 → 通知中心】查看站内信即可)自行中止安全检测;若在小程序审核已撤销的情况下,平台将自动中止未完成的安全检测。 附表:安全检测内容详情 [图片]
03-08 - 云开发入门
重磅打造的小程序学习路径课,从微信小程序到微信云开发体系化的学习,带来更加顺畅的学习体验。
2021-11-19 - 微信小游戏可以授权获取手机号吗?
微信小游戏可以授权获取手机号吗?
2022-07-22 - 游戏错选文化互动类,但是没有商标注册证书
注册的时候游戏错选文化互动类,但是没有商标注册证书,请问一下这种情况改怎么处理。
2022-07-20 - 小游戏资质提交审核指引Q&A
小游戏资质提交审核指引 温馨提醒:微信公众平台的账号名称是该账号的品牌表现,小游戏账号命名需符合平台规范。如需提前了解,或查询你的小游戏未符合平台规范 原因,可点击此处查阅平台命名规范 一、资质提交入口: 1.微信公众平台 -> 首页 -> 小程序发布流程 -> 小程序备案 -> 选择游戏情况 -> 资质提交(首次提交资质材料) [图片] 2.微信公众平台 -> 首页 -> 菜单栏左下角 -> 账号设置 -> 游戏设置 -> 资质管理 -> 前往管理(首次or后续更新资质材料)[图片] 二、主体迁移:微信公众平台 -> 首页 -> 菜单栏左下角 -> 账号设置 -> 基本设置 -> 主体信息 -> 小程序主体变更 -> 提交资质审核申请 [图片] 注:审核提交信息后预计1-2个工作日内处理完毕,审核请留意微信公众平台通知中心的通知。 说明:游戏资质文档规范及示例 一、各资质文档基本要求: (1)所有游戏需提交:《游戏自审自查报告》、《著作权自我声明》、《代备案授权书》 文档规范要求:上传文件,非个人主体请务必加盖清晰规范账号主体公章,个人主体请在落款处清晰规范签署个人签名并捺指印 查看示例: 《游戏自审自查报告》、《著作权自我声明-非个人主体》、《著作权自我声明-个人主体》、《代备案授权书-非个人主体》、《代备案授权书-个人主体》 (2)选填材料一个《计算机软件著作权登记证书》 文档规范要求:上传【原件或加盖著作权人鲜章的复印件】之扫描件,复印件务必清晰规范加盖著作权人公章或著作权人签名 查看示例:《计算机软件著作权登记证书》 注:游戏名称含有“软件”、“人名”、“英文”,《计算机软件著作权登记证书》为必填材料。 (3)牌类游戏需提交:《计算机软件著作权登记证书》、《网络游戏出版物号核发单》、《产品合规报告》、《产品运营报告》、《内容一致承诺函》、《关于使用微信支付服务的合法性承诺书》、《棋牌类网络游戏经营自查报告》、《游戏自审自查报告》、《著作权自我声明》、《代备案授权书》 文档规范要求:上传【原件或复印件】之扫描件,复印件非个人主体请务必加盖清晰规范账号主体公章,个人主体请清晰规范签署个人签名 查看示例:《计算机软件著作权登记证书》、《网络游戏出版物号核发单》、《产品合规报告》、《产品运营报告》、《内容一致承诺函》、《关于使用微信支付服务的合法性承诺书》、《棋牌类网络游戏经营自查报告》、《游戏自审自查报告》、《著作权自我声明-非个人主体》、《代备案授权书-非个人主体》 (4)开通虚拟支付游戏需提交:《网络游戏出版物号核发单》、《计算机软件著作权登记证书》、《游戏自审自查报告》、《内容一致承诺函》、《著作权自我声明》、《代备案授权书》 《网络游戏出版物号核发单》文档规范要求: 上传【原件】之扫描件 查看示例:《网络游戏出版物号核发单》 《计算机软件著作权登记证书》文档规范要求: 上传【原件或加盖著作权人鲜章的复印件】之扫描件,复印件务必清晰规范加盖著作权人公章或著作权人签名 查看示例:《计算机软件著作权登记证书》 《游戏自审自查报告》文档规范要求: 上传文件,请务必加盖清晰规范账号主体公章 查看示例: 《游戏自审自查报告》 《内容一致承诺函》文档规范要求: 上传文件,请务必加盖清晰规范账号主体公章 查看示例:《内容一致承诺函》 《著作权自我声明》文档规范要求: 上传文件,非个人主体请务必加盖清晰规范账号主体公章,个人主体请在落款处清晰规范签署个人签名并捺指印 查看示例:《著作权自我声明-非个人主体》、《著作权自我声明-个人主体》 《代备案授权书》文档规范要求: 上传文件,非个人主体请务必加盖清晰规范账号主体公章,个人主体请在落款处清晰规范签署个人签名并捺指印 查看示例:《代备案授权书-非个人主体》、《代备案授权书-个人主体》 (5)文化互动类目需提交:2个,《商标注册证》、《游戏自审自查报告》 《商标注册证》文档规范要求: 文档规范要求:上传【原件或复印件】之扫描件,复印件请务必加盖清晰规范商标注册人公章,商标注册人为个人请清晰规范签署个人签名 查看示例:《商标注册证》 《游戏自审自查报告》文档规范要求: 上传文件,非个人主体请务必加盖清晰规范账号主体公章,个人主体请在落款处清晰规范签署个人签名 查看示例: 《游戏自审自查报告》 (6)各个文件的格式、数量和大小要求 文件格式: 《网络游戏出版物号核发单》及《网络游戏出版物号核发单》授权书格式为 JPEG、JPG 《计算机软件著作权登记证书》文件为 JPEG、JPG、PNG、BMP、GIF、PDF 《计算机软件著作权登记证书》授权书为 JPEG、JPG、PNG、BMP 《游戏自审自查报告》文件为 JPEG、JPG、PNG、BMP、GIF 《内容一致承诺函》文件为 JPEG、JPG、PNG、BMP、GIF 《关于使用微信支付服务的合法性承诺书》文件为 JPEG、JPG、PNG、BMP 《棋牌类网络游戏经营自查报告》文件为 JPEG、JPG、PNG、BMP 《著作权自我声明》文件为 JPEG、JPG、PNG、BMP 《代备案授权书》文件为 JPEG、JPG、PNG、BMP 《产品合规报告》文件为 PDF 《产品运营报告》文件为 PDF 文件大小: 《网络游戏出版物号核发单》及《网络游戏出版物号核发单》授权书单个文件大小:≤ 200KB 《计算机软件著作权登记证书》及《计算机软件著作权登记证书》授权书单个文件大小:≤ 2000KB 《产品合规报告》、《产品运营报告》、《游戏自审自查报告》和《内容一致承诺函》大小不超过5M 《软著自我声明》、《代备案授权书》、《关于使用微信支付服务的合法性承诺书》和《棋牌类网络游戏经营自查报告》文件大小不超过2M 文件数量: 《网络游戏出版物号核发单》文件限制最多1张(多于1张请按顺序自行合并) 《网络游戏出版物号核发单》授权书限制最多2张(多于2张请按顺序自行合并) 《计算机软件著作权登记证书》限制最多1张(多于1张请按顺序自行合并) 《计算机软件著作权登记证书》授权书限制最多2张(多于2张请按顺序自行合并) 二、关于《计算机软件著作权登记证书》: (1)《计算机软件著作权登记证书》著作权人:提审软著证书的著作权人需与版号著作权人保持一致 《计算机软件著作权登记证书》著作权人说明示例图: [图片] (2)《计算机软件著作权登记证书》颁发日期:《计算机软件著作权登记证书》的颁发日期需在版号证书颁发日期前 《计算机软件著作权登记证书》颁发日期说明示例图: [图片] (备注:《计算机软件著作权登记证书》颁发日期为2015年5月6日,《网络游戏出版物号核发单》颁发日期为2016年11月8日) 三、关于各资质文档刊载游戏名称:各资质文件中的游戏名称,需与提审游戏名称保持完全一致 游戏名称一致说明示例图: [图片] 四、关于授权书: (1)提交入口:登录微信公众平台(mp.weixin.qq.com),进入公众平台菜单栏左下角->账号设置->游戏设置->资质管理->前往管理-> 在《授权书》入口上传相关授权书,该入口支持多个文档上传 [图片] (2)应用场景: 请针对小游戏资质软著授权、小游戏品牌合作等素材露出、使用他人的商标或IP等场景上传相关授权书及授权人的权利证明,包括但不限于著作权授权(不限于美术作品著作权、文字作品著作权、音乐作品著作权、计算机软件著作权);版号、备案信息中的运营单位授权他人发布小游戏;使用文学作品或影视作品名称或内容的小游戏;使用他人商标的小游戏;品牌联合推广等。 示例文档:《著作权授权书》、《运营授权书》、《商标授权书》 特别说明:若《网络游戏出版物号核发单》运营单位、《计算机软件著作权登记证书》著作权人与提审主体不一致,即《网络游戏出版物号核发单》运营单位委托他人发布小游戏的,请在《授权书》入口上传《计算机软件著作权登记证书》著作权人、《网络游戏出版物号核发单》运营单位、向提审主体出具的多份运营授权书。授权链条示例拆解,详见以下图表: [图片] [图片] 五、规范要求: (一)单份授权书 (1)明确标明授权人与被授权人准确名称 (2)写明授权作品的基本信息(软件名称及简写、版本号,计算机软件著作权登记证书登记号) (3)明确标明授权范围和期限 (4)授权方的盖公章或亲笔签名(个人) (5)授权书资质文件不得超过有效期 (二)多份授权书 (1)前后几份授权书之间需要有连续性 (2)在后授权书的授权范围不能超过在先授权书 (3)在后授权书的授权时间不能超过在先授权书 (4)注明是否有转授权的权利 文档规范要求:上传文件,务必加盖公章授权方盖公章或亲笔签名(个人) 查看示例:《著作权授权书》、《运营授权书》、《商标授权书》 六、其他易遗漏事项温馨提醒 (1)清晰:小游戏资质文件关键信息需清晰可见 (2)公章/签名:各资质文档需加盖公章或亲笔签名 附:如果你还不了解如何提审版本,请点击此处查看版本提审指引
11-01 - 微信小游戏接入中宣部实名认证系统流程指引
根据中宣部统一使用实名认证接口的相关要求,网络游戏企业应在5月31日前完成中宣部实名认证系统接入,规定时间内未完成接入可能会影响游戏运营。 请各位开发者前往中宣部实名认证系统按要求完成企业注册、游戏接入和渠道关联等工作,并务必在2021年5月7日前按要求同步微信小游戏平台相关信息。 具体步骤 第一步:前往中宣部实名认证系统完成企业注册、游戏注册、渠道绑定等操作 (注:手机端请复制链接至浏览器打开,若无法打开,请更换浏览器尝试) ① 企业注册:请先前往中宣部实名认证系统完成企业注册。 ② 添加游戏:游戏接入->添加游戏进入添加游戏页面,填写并提交游戏名称、批文号、ISBN等相关信息等待版署审核。 ③ 渠道绑定:所有微信小游戏必须添加【渠道关系】,输入【91440300708461136T】选 择 【腾 讯 计 算 机 系 统 有 限 公 司 】为渠 道 商 ,并勾选《实名上报》和《数据上报》权限,点击确认提交后执行第二步(此步骤无需等待渠道完成确认,直接执行第二步即可,审核通过后平台将会统一确认)。 第二步:游戏信息同步至平台 ① 开发者关联渠道关系后,前往【微信公众平台(mp.weixin.qq.com)→设置→游戏设置→中宣部实名认证系统接入】处同步以下信息至平台确认:游戏名、游戏版号、备案识别码。 ② 等待平台确认:平台侧确认所提交游戏的信息无误后会进行相关配置,无需开发者完成相关接口开发配置工作,待平台配置完成后即可完成实名认证系统的对接工作。 具体进度和详情可在实名认证系统中查看。 注意: ①完成渠道绑定申请后,请务必同步游戏信息至平台,否则无法完成该游戏在微信小游戏平台渠道的实名接入; ②同步至平台的相关信息(游戏名、游戏版号、备案识别码)请务必与提交中宣部实名认证系统的信息一致 以上流程仅针对微信小游戏完成实名认证系统的接入,其他渠道请自行处理; 常见问题 1.游戏版号相关信息在什么地方可查询? ①国家新闻出版署官网。查询步骤:打开国家新闻出版署官网→办事服务→结果公示→游戏审批结果→输入游戏名称、出版单位等信息搜索查询 ②中国音数协游戏工委官网。查询步骤:打开中国音数协游戏工委官网→版号查询→选择游戏名称、出版单位等信息搜索查询 示例: [图片] 2.实际运营企业和版号文件刊载运营单位不一致的情况怎么办? 若实际运营企业主体和版号文件刊载运营单位不一致时,在添加游戏环节提供加盖公章的授权书或者相关证明即可。 3.添加游戏环节需要提交的实名认证界面的截图在哪获得? ①横屏版 [图片] ②竖屏版 [图片] 4.需要同步至微信小游戏平台的游戏信息在哪里获得? 如下图,需同步平台的字段可前往【中宣部实名认证系统-渠道管理-我的游戏-详情】处查看 [图片] ①游戏名:需要与中宣部实名系统中的游戏名称一致,例如:星途WeGoing ②游戏版号:需要与中宣部实名认证系统中的游戏版号一致,为 ISBN 开头的版号,填写时 ISBN 四个字母不用填写,只写ISBN字母后面部分。例如:647-2-***-*****-8; ③备案识别码(bizid):即为实名认证系统中分配的备案识别码,添加游戏后会自动生成,可在渠道管理-我的游戏中查看,例如:12330***70 5.如何确定是否完成与微信小游戏渠道关联? ①在实名认证系统-渠道管理-我的游戏界面中关注状态信息【已确认/待确认/已驳回】 [图片] ②若状态为【已确认】则完成渠道关联,点击可查看详细信息结果如下图所示 [图片] 6.已在其他腾讯渠道(如QQ小游戏、应用宝)完成与腾讯主体的渠道关联的游戏该如何接入微信小游戏渠道? 对于已经关联腾讯主体的游戏,直接进行第四步即可(即同步游戏信息至平台),平台收集并匹配小游戏信息后,配置该游戏在微信小游戏平台渠道的数据上报。 7.在哪可以了解更加详细的接入指引? 已提供《网络游戏防沉迷实名认证系统企业接入操作手册》、《网络游戏防沉迷实名认证系统【培训材料】》、《常见问题汇总》、《网络游戏防沉迷实名认证系统接口对接技术规范》等文件供开发者参考。 8.接入过程中有疑问有何咨询方式? 实名认证系统接入相关的问题可以通过实名认证系统中的【技术支持-我的问题】进行提问咨询。
2021-07-07 - 游戏自审报告?
游戏自审报告必须要 版本批复文件 、《游戏健康忠告》 和设置专门页面标明 游戏著作权人、出版服务单位、批准文号出版物号吗?
2021-05-26 - 相机onCameraFrame获取到的帧数据偶尔出现镜像数据?
问题描述: 在开发中发现相机onCameraFrame获取到的帧数据偶尔出现镜像数据,导致出现的现象是闪屏。频率不确定,有时20秒内都不出现,有时5秒内频繁出现。 测试手机: 小米6X:出现闪屏现象。Andriod 9,Wechat 8.0.23,WechatLib:2.24.6 system日志: [图片] 苹果SE:没有出现闪屏现象。ios:12.3.1,Wechat:8.0.23,WechatLib:2.24.6 开发工具版本:[图片] 代码片段:https://developers.weixin.qq.com/s/6nxmo9mh7ZAU bug录像:https://www.ixigua.com/7110105491572785166?utm_source=xiguastudio
2022-06-20 - 横屏状态下onCameraFrame为什么是按竖屏比例裁剪的?
页面设置横屏,onCameraFrame获取到的视频帧是按竖屏比例裁剪过的,导致视频帧不完整,请问有办法解决吗
2022-06-06 - 小游戏中可以放超链嘛?点击跳转到微信内部浏览器或者外部浏览器中,打开对应的网页嘛
小游戏中可以放超链嘛?点击跳转到微信内部浏览器或者外部浏览器中,打开对应的网页嘛
2022-01-25 - 固定横屏的小游戏,在iOS真机上播放视频时,切换全屏后能横竖屏切换+左右横屏切换
1.iPhone7,iOS15.3.1 2.测试的小游戏配置为固定屏幕方向landscapeRight 3.使用接口wx.createVideo创建自动播放的视频(http://xxx.xxx.xxx/xxx.mp4) .将视频切换为全屏后, 发现可以自由切换横竖屏、左右横屏 .视频退出全屏时,屏幕方向不会自动切回landscapeRight,会遗留在之前的屏幕方向上,这回导致小游戏画面变形+错乱 .视频退出全屏后,如果屏幕方向不是landscapeRight, 则用户可以手动转屏1次, 且只能转回landscapeRight
2022-02-25 - unity开发的程序不是跟游戏相关怎么才能按小程序的流程走
unity开发的程序不是跟游戏相关的但打包只能转换成小游戏,现在想发布成正式版但也只能通过小游戏发布。请问有什么方法可以让其按小程序流程发布?
2021-10-22 - 相机销毁后,第二次创建相机onCameraFrame回调函数不执行
startShowCamera() { if (cc.sys.platform === cc.sys.WECHAT_GAME) { var size = "small" if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.MID) { size = "medium" } else if (hf.dataMgr.gameRecordQuality === hf.constants.GAME_RECORD_QUALITY.HIGH) { size = "large" } var camera = wx.createCamera({ x: 0, y: 0, width: 1, height: 1, devicePosition: "front", size: size, success: () => { cc.log("CameraDisplay startShowCamera Success") this.startListener() this.m_openCb && this.m_openCb() }, fail: (err) => { cc.log("CameraDisplay startShowCamera Fail", err) } }) this.m_camera = camera } }, closeCamera() { if (this.m_camera) { if (cc.sys.platform === cc.sys.WECHAT_GAME) { this.m_camera.destroy() this.m_camera = undefined } } this.fullSp.node.active = false this.quarterSp.node.active = false this.m_tex = undefined }, startListener() { var camera = this.m_camera camera.onCameraFrame((frameObj) => { if (this.m_tex) { var data = new Uint8Array(frameObj.data) this.m_tex.initWithData(data, cc.Texture2D.PixelFormat.RGBA8888, frameObj.width, frameObj.height) this.m_tex.handleLoadedTexture() } }) camera.listenFrameChange() } 代码如上图所示,我每次调用startShowCamera开启相机后,使用完成会destroy销毁,中间需要调用onCameraFrame监听帧变化。 只有第一次调用后,能监听到onCameraFrame回调函数帧变化,相机销毁后再次创建新的相机再也无法监听到帧数据。 我这边能确认的是,wx.createCamera函数调用后,每次都有success回调,也就是我的startListener函数里面的listenFrameChange这些都是执行了。但是不起作用。而且我能确认摄像头确实是打开的。
2020-05-31 - 怎么实现像高德地图那样监听手机定位是否打开?
是通过定时器来回调判断,还是有官方的接口可以监听手机的定位呢?
2021-09-10 - 如何将 Canvas放在 照相的层级的上面
最近想模仿AR做个 类似互动的小游戏 但是不知道如何将Canvas放在相机的层级的上面 或这 在相机上面放其他的项目模块进行互动 Canvas.zIndex = 100000 也 没有用 。。。。
2020-11-12 - wx.createCamera创建的相机在canvas上面
目前希望实现AR小游戏的功能,官方也在2.9.0版本中提供了wx.createCamera API,但是使用发现无法将相机画面作为canvas的背景,不知道是不是我的用法不对?同时我觉得官方提供这个api就是希望能为小游戏带来AR的能力,那么该如何让相机画面作为游戏背景呢?
2019-11-12 - 社区每周 |位置接口增加频率限制、服务商小程序新能力、新版众测及上周问题反馈(3.08-3.12)
各位微信开发者: 以下是getLocation增加调用频率限制、服务商小程序风险用户扫码能力公测启动、IOS和安卓新版众测及上周我们在社区收到的问题反馈的处理进度,希望同大家一同打造小程序生态。 getLocation增加调用频率限制 当前小程序频繁调用wx.getLocation接口会导致用户手机电量消耗较快,请开发者改为使用持续定位接口wx.onLocationChange,该接口会固定频率回调,使用效果与跟频繁调用getLocation一致。 从基础库2.17.0版本起(预计发布时间2021.4.9),将对getLocation接口增加频率限制,包括: 在开发版或体验版中,30秒内调用getLocation,仅第一次有效,剩余返回与第一次定位相同的信息。正式版中,为保证小程序正常运行同时不过度消耗用户电量,一定时间内(根据设备情况判断)调用getLocation,仅第一次会返回实时定位信息,剩余返回与第一次定位相同的信息。未做好兼容调整可能会影响用户体验,请开发者尽快适配。 服务商小程序风险用户扫描能力公测启动 为提高微信开放平台生态安全性,针对小程序各应用场景中可能存在的恶意注册、营销作弊等黑产风险和安全问题,平台将通过开放API的方式向服务商提供快速查询风险用户的接口,协助服务商保障小程序正常安全运营。 目前风险用户扫描接口支持以下两种应用场景: 1. 营销作弊场景:在首单优惠和特价优惠等营销活动中有效识别刷单、虚假交易、恶意骗保骗补贴等破坏运营秩序和安全的行为。 2. 恶意注册:识别并拦截机器批量注册、垃圾小号、伪造身份等恶意注册行为。 接口具体功能介绍请参考《小程序风险用户扫描功能介绍》。 接入指引及详细信息参考原公告:《服务商小程序风险用户扫描能力公测启动》 微信团队邀请开发者参与内部体验(安卓微信8.0.2) 本次更新概要如下小程序 video组件相关优化需关注地理位置等授权是否正常需关注临时文件相关功能是否正常需关注文件存储空间限制相关是否正常live-pusher组件相关bugfix,需关注麦克风相关功能是否正常蓝牙相关bugfix,需关注蓝牙扫描相关功能是否正常部分重构WebGL组件,需关注WebGL组件渲染是否正常小游戏 (重要)灰度期间尝试支持etc2和astc压缩格式,需关注游戏渲染是否正常优化uniformMatrix效率,需关注游戏运行性能部分重构渲染组件,需关注Touch事件等是否正常请基于以下提供的资源体验。使用过程中若发现问题,欢迎点击进入微信开放社区 #微信客户端内测 主页发表标题包含「微信8.0.2」的问答帖子反馈交流。 [图片] (扫描二维码下载) 如有需要,可查看并转发原公告:《微信团队邀请开发者参与内部体验(安卓微信8.0.2)》 微信团队邀请开发者参与内部体验(iOS微信8.0.3) 本次更新概要如下小程序: 文件系统底层重构,请关注相关接口是否受影响;小游戏: ATSC压缩纹理的支持;* 体验需识别下方二维码报名,若报名成功,则一天内会收到内测推送,内测名额8000人 [图片] 请基于以上提供的资源体验。使用过程中若发现问题,欢迎点击进入微信开放社区 #微信客户端内测 主页发表标题包含「微信iOS 8.0.3」的问答帖子反馈交流,发帖时建议提供以下信息方便定位问题: 1.手机型号 2.手机操作系统版本 3.必要时可提供代码片段 如有需要,可查看并转发原公告:《微信团队邀请开发者参与(iOS微信8.0.3内部体验)》 上周问题反馈和处理进度(3.08-3.12) 已修复的问题云开发-内容管理-短信统计分析数据一直为空的问题 查看详情 关联小程序提示:系统繁忙,请稍后重试(200003)的问题 查看详情 开发工具后控制台报(define,require)2个错误的问题 查看详情 修复中的问题 textarea maxlength 未阻止在中间输入 查看详情 previewImage 在安卓机无法预览,一直 loading 查看详情 ios 直接调hideLoading 没有触发回调 查看详情 安卓机下input输入框收起键盘之类的操作会多触发一次input事件 查看详情 iOS video 小窗模式 收不到bindended和bindtimeupdate的事件 查看详情 安卓performance中的firstRenderrender耗时偶现负数 查看详情 ios wx.previewMedia本地视频点击无法播放 查看详情 微信团队 2021.3.19
06-13 - 社区每周|短链接服务升级、本地文件缓存空间提升至200M、社区上周问题反馈(09.21-09.25)
各位微信开发者: 以下是本地文件缓存空间提升至200M能力发布及上周我们在社区收到的问题反馈、需求的处理进度,希望同大家一同打造小程序生态。 公众平台长链接转短链接服务升级为满足公众号的业务需求,优化用户体验,提升链接辨识度,自2020年10月24日起,公众平台长链接转短链接服务将升级为新域名mmbizurl.cn,原有w.url.cn域名仍可以正常访问。详情请参考 开发文档 本地文件缓存空间提升至200M能力已发布为让小程序提供更好的服务及体验,现已将本地文件缓存空间由50M提升至200M,开发者可根据小程序需要做出优化调整,能力可详见 文档 上周问题反馈和处理进度(09.21-09.25)已修复的问题小程序添加展示公众号时提示系统繁忙,请稍后再试的问题 查看详情 提审后修改游戏类别,包体限制4M变为2M原来代码也无法提交的问题 查看详情 无法提交更改小程序服务类别的问题 查看详情 刚建好的小店突然进不去了的问题 查看详情 2020年9月25日粉丝突然少了的问题 查看详情 小程序数据助手,数据出现bug,用户画像数据错误的问题 查看详情 调试器无法查看元素,重启也没用的问题 查看详情 getweanalysisappiddailyvisittrend 接口数据获取失败的问题 查看详情 在小程序插件 -》基本设置 -》,在点击《服务类别》按钮弹出窗体中,点击提交按钮出现报错的问题 查看详情 修复中的问题使用wx.chooseImage 使用相机 部分机型无法唤起闪光灯的问题 查看详情 wx.onDeviceOrientationChange 回调不精确的问题 查看详情 iOS14系统打开小游戏黑屏的问题 查看详情 微信开放域项目第一次加载远程资源时失败,再次加载才能正常加载的问题 查看详情 关于开放域设置数据 setUserCloudStorage 的问题 查看详情 公众号发文添加了“读者讨论”功能,但发文后文章里没有显示“读者讨论”模块的问题 查看详情 微信公众平台管理后台小程序功能设置-其他小程序修改报错的问题 查看详情 小游戏pc无法进入的问题 查看详情 使用游戏引擎插件会出现无法找到引擎库文件的问题 查看详情 微信官方文档 · 开发标签 文档有误的问题 查看详情 微信iOS 7.0.16 聊天列表按钮异常的问题 查看详情 公众号消息统计图文群发每日数据(getarticlesummary)接口某一天没数据的问题 查看详情 iOS下,Editor组件聚集弹出键盘后,页面组件的fixed样式失效的问题 查看详情 使用loadSubPackage fail module not fount的问题 查看详情 为什么上传包体无法超过2M的问题 查看详情 开发者工具无法加载出dom结构的问题 查看详情 小游戏模式,包上线变成2048的问题 查看详情 微信公众号自定义菜单都跳转到了同一个链接的问题 查看详情 微信7.0.19版本,URL带#路由会一直显示第一次访问内容的问题 查看详情 安卓微信7.0.19分享问题:同一个网站不同链接却只能打开一个打开过的链接的问题 查看详情 使用Worker组件运算Box2d,在iOS真机上预览报错的问题 查看详情 swiper + video 在iphone设备下的问题 查看详情 添加小程序类目点确定无反应的问题 查看详情 小程序右上角的重新进入小程序 苹果端居然不会走app.js的问题 查看详情 video 组件 bindfullscreenchange 在安卓返回值的问题 查看详情 editor 组件中的内容在部分 iOS 手机上无法长按复制的问题 查看详情 小游戏上传的代码包必须小于2M的问题 查看详情 每使用一段时间,调试器中会突然变成一片空白,只能重新打开项目的问题 查看详情 社区个人中心消息列表最后2页内容(662页和663页)完全重复的问题 查看详情 微信开发者工具Wxml空白的问题 查看详情 修改refresher-background时,改的是scroll-view的背景色的问题 查看详情 iOS 微信版本 7.0.15客服会话点击小程序卡片提示 小程序未发布的问题 查看详情 微信小程序7.0.15客服卡片的问题 查看详情 服务号投票问题,投票以后并没有被统计上的问题 查看详情 左滑退出小程序,场景值1089进入reLaunch执行,但是未触发重新加载的问题 查看详情 小程序助手无法解绑体验者的问题 查看详情 今天公众号后台数据库出现群发错误的问题 查看详情 开发工具代码热重载对于import的wxss文件无效的问题 查看详情 小程序文档错误 查看详情 wx.scanItem 不能正常发起调用的问题 查看详情 需求反馈需求评估中wx.canvasPutImageData 绘制的需求 查看详情 建议取消视频消息下方更多视频的强制开启的需求 查看详情 小程序助手需求 查看详情 小程序支持Api方式创建客服回话的需求 查看详情 云开发资源按量付费有没有上限限制的需求 查看详情 把现有的素材库“管理”加强的需求 查看详情 updateAppMessageShareData 无法正常分享 查看详情 修改层级的需求 查看详情 社区近期话题获奖、9月份突出贡献者获奖情况将在10月中秋国庆假期后公告。 微信团队 2020.09.28
2020-09-30 - wx.onDeviceMotionChange 性能特别差,能否达到H5中效果?
测试使用wx.onDeviceMotionChange制作720度浏览效果,发现安卓手机固定时,获取的值一直抖动,非常不稳定;iphone6s 特别卡,手机移动后过很长时间才返回值。 不是很明白为啥wx.onDeviceMotionChange性能如此差,跟浏览器获得的deviceorientation 的值完全没法比;讲道理原生获取的设备数据应该更加优秀才对;希望官方改进该接口,最起码能达到浏览器的效果吧
2019-08-15 - 屏幕旋转onDeviceMotionChange苹果bug,并且安卓与苹果相反。
[图片] - 当前 Bug 的表现 在ios设备上,在什么方向开始监听的便默认该方向为0。例如:我从侧向点开始监听,便认为侧向为0。 在正常进入的情况下(竖屏正向)安卓与苹果的数据是相反的。 - 预期表现 ios无论在什么方向进来都可以显示该方向固定的值。 Android和ios的方向数据是一致的。 - 复现路径 wechatide://minicode/lLSkRAmT7B31 - 提供一个最简复现 Demo wechatide://minicode/lLSkRAmT7B31
2018-11-01 - 横屏切换时wx.onDeviceOrientationChange收不到转屏事件
在将微信小游戏项目配置为landscape横屏模式后,安卓上无论锁屏与否,都能左右横屏切换。但wx.onDeviceOrientationChange收不到任何回调。 https://developers.weixin.qq.com/minigame/dev/reference/configuration/app.html [图片] https://developers.weixin.qq.com/minigame/dev/api/device/orientation/wx.onDeviceOrientationChange.html[图片]
2021-12-03 - 小游戏能否开放连续相关接口,用wx.getLocation有频次限制,不适合定位导航类的项目
发现小游戏的定位接口只有一个wx.getLocation,并且还说有调用频次限制,对需要连续定位的AR导航类项目来说不够理想 能否将连续定位的wx.startLocationUpdate、wx.onLocationChange等接口加上
2021-11-18