接口文档

冰柠乐接口文档


抖音小游戏SDK文档

<p>[TOC]</p> <h1>SDK介绍</h1> <p>SDK集成封装了部分的抖音的前端API,直接调用SDK接口即可,无需再调用抖音的接口; &lt;font color=&quot;red&quot;&gt;无需调用获取主体access_token接口&lt;/font&gt;,由我方提供接口获取,以免冲突;</p> <h1>版本和渠道设置说明:</h1> <p>SDK可以区分渠道和子渠道 (1)场景值做为渠道,SDK会自动通过tt.getLaunchOptionsSync().scene获取获取当前小程序场景:chid=场景值; (2)子渠道可以在启动参数(query)按照以下格式设置参数: via=子渠道ID或者 subchid=子渠道ID, 示例:via=111&amp;bbb=222 渠道只能二选一,via优先subchid</p> <h1>小游戏后台必设置:</h1> <p>域名:https:   配置文件提供的域名地址</p> <h2>小游戏后台</h2> <h3>(1)域名设置</h3> <p>在开发-&gt;开发设置-&gt;服务器域名,request合法域名增加 <code>cps.moyangmoyang.com</code></p> <h3>(2)广告设置(如内置广告必设置)</h3> <p>在推广-&gt;流量主-&gt;广告位管理,添加banner广告和激励视频广告,获得广告位id</p> <h3>(3)支付设置(如开通支付必设置)</h3> <p>在功能-&gt;虚拟支付-&gt;基本配置-&gt;游戏币配置,配置米大师相关信息</p> <h3>(4)消息推送</h3> <p>登录小程序后台后,在「开发」-「开发设置」-「消息推送」中,管理员扫码启用消息服务,填写服务器地址(URL)、令牌(Token) 和 消息加密密钥(EncodingAESKey)等信息。 URL: 开发者用来接收微信消息和事件的接口 URL。开发者所填写的URL 必须以 http:// 或 https:// 开头,分别支持 80 端口和 443 端口。 Token: 可由开发者可以任意填写,用作生成签名(该 Token 会和接口 URL 中包含的 Token 进行比对,从而验证安全性)。 EncodingAESKey: 由开发者手动填写或随机生成,将用作消息体加解密密钥。</p> <h1>1.SDK包以及引入说明(重要):</h1> <h2>1.1.SDK文件包括</h2> <pre><code>  sdk_v版本号.js(主文件)   config.js(配置文件,接入前会提供参数表,没有参数不能接入,文档中的所有密钥指的是我们提供的研发密钥,非小程序密钥,加号或者点号表示拼接两个字符串)</code></pre> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 配置文件config.js必须按照提供的资料填写完整,没有参数不能接入,文档中的所有密钥指的是我们提供的研发密钥,非小程序密钥,加号或者点号表示拼接两个字符串 &lt;/div&gt;</p> <h2>1.2.SDK引入方式</h2> <pre><code>require(&amp;quot;./js/sdk/dybsdk_v版本号.js&amp;quot;); //不同的引擎可能引入方式不一致,根据需求可以自行拆解拷贝。</code></pre> <h2>1.3.接口请求方式</h2> <p>全部POST,支持JSON和FORM,声明header格式content-type,返回的格式,如无特殊说明,code的值1为正确,0为错误</p> <h2>1.4.安全</h2> <p>涉及到服务端请求的接口,如access_token等全部要在后端进行请求,平台提供的密钥secret_key,必须放在服务端后端校验,不能暴露在前端,前端代码会被爬下来破解加密。</p> <h2>1.5.接入有问题先看文档后面的常见问题</h2> <h1>2.获取用户信息(为确保数据同步,游戏初始化必接入,打开游戏即调用)</h1> <h2>2.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取openid,无需再单独调用login接口。</p> <p><code>getDybUserInfo(function callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> (1)整个游戏流程只能全局初始化的时候调用一次即可,不能重复调用。 重复调用可能会刷新,session_key,access_token,影响支付授权。 (2)&lt;font color=&quot;red&quot;&gt;保证先接入此接口,再接入后续接口,后续接口依赖于此接口,后续接口调用可放在此接口回调函数里面,或延迟调用,不要并行&lt;/font&gt; (3)此接口调用login授权获取openid,如需头像等信息请自行使用原生接口userInfo获取信息接口,但是保证不能调用到tt.login &lt;/div&gt; &lt;div style=&quot;background: #fda7b4;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚡ <strong>校验安全</strong> 1、为了防止openid泄露被直接用于游戏接口请求,授权返回的数据中有2个字段用于游戏方后端校验用户正确性-(openid, sign) 2、返回签名sign的生成方式为:&lt;font color=&quot;red&quot;&gt;md5(&#039;sessV2&#039;+appid+openid+加密密钥key)&lt;/font&gt;, 加密密钥平台方提供,+号拼接字符串 &lt;/div&gt;</p> <h2>2.2参数说明</h2> <ul> <li>无需传参</li> </ul> <h2>2.3示例代码</h2> <pre><code class="language-javascript">dyb.getDybUserInfo(function (callback) {     console.log(&amp;#039;getDyUserInfo-------------:&amp;#039; + JSON.stringify(callback)); })</code></pre> <h2>2.4接口返回</h2> <pre><code class="language-javascript">getDyUserInfo-------------:{&amp;quot;user&amp;quot;:{&amp;quot;openid&amp;quot;:&amp;quot;_000tSU1U4sQNo0lzULmCcewwj1ejdD0jMQe&amp;quot;,&amp;quot;sign&amp;quot;:&amp;quot;ecebeb265bb64dba8c34e99077fdcb3a&amp;quot;},&amp;quot;shareInfo&amp;quot;:{}}</code></pre> <h1>3.创角信息上报</h1> <h2>3.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍上报创角事件</p> <pre><code>createRole(function callback)</code></pre> <p>&lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 第一次调用依赖第2步-获取用户信息,建议创角上报在授权事件后3-5s后调起 &lt;/div&gt;</p> <h2>3.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |role_name |是  |string |角色名称,没有填个昵称或者别的信息   | |server_id |是  |int | 区服ID,没有填个默认数字    | |server_name     |否  |string | 区服名称,没有填个默认名称    |</p> <h2>3.3示例代码</h2> <pre><code class="language-javascript">let param = {     server_id: 1,     server_name: &amp;#039;服务器&amp;#039;,     role_name: &amp;#039;默认昵称&amp;#039;, } dyb.createRole(param, function (callback) {     console.log(&amp;#039;roleData:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>3.4接口返回</h2> <pre><code class="language-javascript">roleData:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;角色已经上报&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1586418685&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>4.游戏关卡/等级</h1> <h2>4.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍上报当前玩家所在的游戏关卡/等级; (1)可以在玩家退出的时候进行上报最新的关卡/等级; (2)也可以在玩家突破关卡/等级的时候上报</p> <p><code>1、上报关卡:gameLevel(int level, callback)</code> <code>2、上报等级:gameGrade(int grade, callback)</code> &lt;font color=&quot;red&quot;&gt;如果两个接口需要同时调用,需确保其中一个先调用,另一个可放在回调函数里面调用,或延迟调用,不要并行&lt;/font&gt; &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 第一次调用依赖第2步-获取用户信息,建议在授权事件后3-5s后调起 &lt;/div&gt;</p> <h2>4.2参数说明</h2> <p><strong>上报关卡:</strong></p> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |level |是  |int |关卡   |</p> <p><strong>上报等级:</strong></p> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |grade |是  |int |等级   |</p> <h2>4.3示例代码</h2> <pre><code class="language-javascript">//上报关卡: //关卡2 dyb.gameLevel(2,function (callback) { console.log(&amp;#039;game_level:&amp;#039; + JSON.stringify(callback)); }); //上报等级: //等级3 dyb.gameGrade(3, function (callback) { console.log(&amp;#039;game_grade:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>4.4接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //0调用失败,1调用成功 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot; }</code></pre> <h1>5.内容检测接口</h1> <h2>5.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍检查玩家输入的文本内容内容是否违规(游戏内有玩家自由输入内容必接)</p> <p><code>msg_check()</code> &lt;/div&gt;</p> <h2>5.2示例代码</h2> <pre><code class="language-javascript">dyb.msg_check(&amp;#039;特3456书yuuo莞6543李zxcz蒜7782法fgnv级&amp;#039;,function (callback) {      console.log(&amp;#039;内容检测:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>5.3接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0检验失败,1检验通过) &amp;quot;msg&amp;quot;: &amp;quot;&amp;quot; }</code></pre> <h1>6.支付接口(安卓+ios)</h1> <h2>6.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍小游戏订单提交,生成支付订单并保存,调用支付后,&lt;font color=&quot;red&quot;&gt;游戏发货必须以服务端支付回调为准&lt;/font&gt;。</p> <p><code>submitOrder(Object param, callback)</code> &lt;/div&gt;</p> <h2>6.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |goods_count |是  |int |商品数量 由接入方提供 如:1   | |goods_name |是  |string |商品名称 由接入方提供 如:元宝   | |pay_amount |是  |int |支付总金额(元)=单价乘数量,由接入方提供,整数 | |redirect_uri |是  |string |异步通知游戏支付结果地址 由接入方提供   | |extra_info |是  |string |额外拓展参数(将在服务端支付回调原样透传),可以为空字符串,a=b&amp;c=d   | |order_sn |是  |string |订单编号(游戏生成的订单号)   | |role_name |是  |string |角色名称 由接入方提供   | |server_name |是  |string |区服名称 由接入方提供  |</p> <h2>6.3示例代码</h2> <pre><code class="language-javascript">let pay_data = {       pay_amount:1,       extra_info: &amp;#039;a=b&amp;#039;,       goods_count: 1,       goods_name: &amp;#039;测试商品&amp;#039;,       redirect_uri: &amp;#039;http://nginx56.local/test&amp;#039;,       role_name: &amp;#039;无角色&amp;#039;,       server_name: &amp;#039;默认服务器&amp;#039;,       order_sn: randomNumber(),   } dyb.submitOrder(pay_data, function (callback) {     console.log(&amp;#039;生成订单:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>6.4接口返回</h2> <pre><code class="language-javascript">//1.安卓+ios(钻石支付) { &amp;quot;code&amp;quot;: 1, //(0失败,直接提示,1调用成功)//此处仅提供前端参考,游戏发货必须以服务端支付回调为准 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot; } //2.ios弹窗支付(备用) //注意:研发需要获取到pay_url后,在游戏内提醒玩家复制支付链接到微信打开进行支付 //(研发自己制作弹窗)&amp;quot;pay_type&amp;quot;:2000 生成订单:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;支付链接获取成功&amp;quot;,&amp;quot;pay_url&amp;quot;:&amp;quot;weixin://wxpay/bizpayurl?pr=CDqOLhfz2&amp;quot;,&amp;quot;pay_type&amp;quot;:2000} //(SDK自带弹窗)&amp;quot;pay_type&amp;quot;:2001 生成订单:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;支付链接获取成功&amp;quot;,&amp;quot;pay_url&amp;quot;:&amp;quot;weixin://wxpay/bizpayurl?pr=EABWvzxz2&amp;quot;,&amp;quot;pay_type&amp;quot;:2001} **建议研发根据code和pay_type判断弹窗类型</code></pre> <h1>7.支付成功回调通知(服务端接口)</h1> <h2>7.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍ 1.回调地址在客户端调用支付接口时传入,字段&lt;font color=&quot;red&quot;&gt;redirect_uri&lt;/font&gt;。 2.回调方式为POST(请使用post方式接收回调值),数据提交为表单方式(Content-Type: application/x-www-form-urlencoded) 3.此接口地址由游戏服务方提供,用于接收用户支付结果的接口,控制游戏内发货,2S不响应则超时,做好过滤,防止重复通知 &lt;/div&gt;</p> <h2>7.2回调参数说明(post)</h2> <p>|参数名|说明| |:----   |-----   | |order_sn |订单编号(游戏的订单号)   | |extra_info |透传参数(原样返回,游戏在创建订单时传入,不允许有空格)   | |pay_amount |订单金额(单位:元,double类型,精确到小数点后两位)一定要校验价格 | |pay_status |订单支付状态(1或0;1为成功支付,0为未支付)   | |pay_time |支付时间(若为三方或渠道支付,此时间为平台接收到支付成功时间)   | |uid |用户的唯一id,与客户端的openid字段相同   | |goods_name |小游戏道具名字(商品名字)   | |appid |小游戏appid   | |sign |签名(为了安全,请校验签名)签名规则看回调签名  |</p> <h2>7.3回调签名</h2> <pre><code class="language-javascript">1)去除sign,其他所有POST的参数均参与签名,签名不需要转化大小写 2)参数名进行升序排序后 3)按照key1=val1&amp;amp;key2=val2&amp;amp;key3=val3格式生成源字符串。 4)md5(源字符串+加密secret_key)生成签名sign; key1=val1&amp;amp;key2=val2&amp;amp;key3=val3secret_key 签名示例: 假设现有参数为:{&amp;quot;order_sn&amp;quot;:&amp;quot;1603702733183568507&amp;quot;,&amp;quot;extra_info&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;goods_identifier&amp;quot;:&amp;quot;f4355f16858fc0244ea74ac540581148&amp;quot;,&amp;quot;pay_amount&amp;quot;:&amp;quot;1.00&amp;quot;,&amp;quot;pay_status&amp;quot;:1,&amp;quot;pay_time&amp;quot;:1603702732,&amp;quot;uid&amp;quot;:&amp;quot;09122E14E6DE6E81F493000A15121368&amp;quot;} 密钥为:ibIa4rDIxHnT1uw 参数名排序后拼接的字符串为:extra_info=&amp;amp;goods_identifier=f4355f16858fc0244ea74ac540581148&amp;amp;order_sn=1603702733183568507&amp;amp;pay_amount=1.00&amp;amp;pay_status=1&amp;amp;pay_time=1603702732&amp;amp;uid=09122E14E6DE6E81F493000A15121368ibIa4rDIxHnT1uw Sha1加密为:aa5eff8b0c74764909550daf5e908cbc1fd72ea9 Md5加密为:3762f09a6804ec6aed26955854c6f7ee</code></pre> <h2>7.4回调返回(json)</h2> <pre><code class="language-javascript">1.游戏服务端在收到回调后,返回{&amp;quot;code&amp;quot;:0,&amp;quot;message&amp;quot;:&amp;quot;success&amp;quot;}代表游戏发货成功。其他code码,游戏服务端自己定义。 2.可能存在重复通知的情况,如果已经发货成功,也请直接返回{&amp;quot;code&amp;quot;:0,&amp;quot;message&amp;quot;:&amp;quot;success&amp;quot;}。</code></pre> <h1>8.激励视频广告</h1> <h2>8.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍创建激励视频接口</p> <p><code>createVideoAd(string auditID, callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 调用一次,拉起一次广告,游戏需要根据回调状态处理奖励的发送 &lt;/div&gt;</p> <h2>8.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |auditID |是  |string |视频广告ID,小程序后台生成   |</p> <h2>8.3示例代码</h2> <pre><code class="language-javascript">dyb.createVideoAd(&amp;#039;8qodec75r8m7j1orib&amp;#039;,function(call){    //call返回的state有三种状态,分别是show,close,error    //show {&amp;quot;state&amp;quot;:&amp;quot;show&amp;quot;,&amp;quot;isEnded&amp;quot;:false,&amp;quot;msg&amp;quot;:&amp;quot;视频展示成功&amp;quot;}    //close {&amp;quot;state&amp;quot;:&amp;quot;close&amp;quot;,&amp;quot;isEnded&amp;quot;:true,&amp;quot;msg&amp;quot;:&amp;quot;视频广告关闭&amp;quot;}    //error {&amp;quot;state&amp;quot;:&amp;quot;error&amp;quot;,&amp;quot;isEnded&amp;quot;:false,&amp;quot;msg&amp;quot;:&amp;quot;视频广告错误&amp;quot;}    console.log(JSON.stringify(call),&amp;#039;createRewardedVideoAd&amp;#039;)    if(call.state == &amp;#039;close&amp;#039; &amp;amp;&amp;amp; call.isEnded){       //视频完整看完,进行发送奖励       console.log(&amp;#039;//视频完整看完,进行发送奖励&amp;#039;)    }else{       console.log(&amp;#039;//视频没看完&amp;#039;)    } })</code></pre> <h1>9.获取Access_token(服务端接口),用了接,不用不接</h1> <h2>9.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取access_token</p> <p><code>POST</code> <code>正式url: 域名/api/get_access_token</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.注意当前小程序的环境,接口网络请求https地址是否一致 2.服务端调用,小程序客户端存在代码泄露的可能 &lt;/div&gt;</p> <h2>9.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |appid |是  |string |当前小游戏appid   | |sign |是  |string |md5(appid+$secret_key),拼接字符串   |</p> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  sign里面的$secret_key是我们提供的加密密钥,不是小程序密钥 &lt;/div&gt;</p> <h2>9.3接口返回</h2> <pre><code class="language-javascript">{    &amp;quot;code&amp;quot;: 1,    &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;,    &amp;quot;time&amp;quot;: &amp;quot;1570699736&amp;quot;,    &amp;quot;expire_time&amp;quot;: &amp;quot;1570699736&amp;quot;,//token过期时间    &amp;quot;data&amp;quot;: &amp;quot;-YNu_X95paOMRR1v7horGPfnEJ09ldMcgRrQFgI18uzJMzGAAtCYbWXpYkQQ1NHjsm8&amp;quot; //token }</code></pre> <h1>10.获取session_key(服务端接口),用了接,不用不接</h1> <h2>10.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取session_key</p> <p><code>POST</code> <code>正式url: 域名/api/ get_session_list</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.注意当前小程序的环境,接口网络请求https地址是否一致 2.服务端调用,小程序客户端存在代码泄露的可能 &lt;/div&gt;</p> <h2>10.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |appid |是  |string |当前小游戏appid   | |openid |是  |string |用户openid字符串,多个用英文逗号链接,(34D015FCDA78A87A07FA5CF3B5276532,34D015FCDA78A87A07FA5CF3B5276531)   | |sign |是  |string |md5(appid+$secret_key),拼接字符串   |</p> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  sign里面的$secret_key是我们提供的加密密钥,不是小程序密钥 &lt;/div&gt;</p> <h2>10.3接口返回</h2> <pre><code class="language-javascript">{     &amp;quot;code&amp;quot;: 1,     &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;,     &amp;quot;time&amp;quot;: &amp;quot;1570699736&amp;quot;,   &amp;quot;data&amp;quot;:[ {&amp;quot;uid&amp;quot;:&amp;quot;34D015FCDA78A87A07FA5CF3B5276532&amp;quot;,&amp;quot;session_key&amp;quot;:&amp;quot;MFBTT2o1aExUSHF1Y1VBUg==&amp;quot;}, {&amp;quot;uid&amp;quot;:&amp;quot;34D015FCDA78A87A07FA5CF3B5276531&amp;quot;,&amp;quot;session_key&amp;quot;:null} ] }</code></pre> <h1>11.手动录制游戏</h1> <h2>11.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍手动录制游戏</p> <p><code>1、开始录屏:startScreenRecord</code> <code>2、结束录屏: stopScreenRecord</code> &lt;/div&gt;</p> <h2>11.2示例代码</h2> <pre><code class="language-javascript">//1、录屏开始 dyb.startScreenRecord(function (callback) { console.log(&amp;#039;录屏开始:&amp;#039; + JSON.stringify(callback)); }); //2、录屏结束 dyb.stopScreenRecord(function (callback) { console.log(&amp;#039;录屏结束:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>11.3接口返回</h2> <pre><code class="language-javascript">//开始 录屏开始:{&amp;quot;code&amp;quot;:2,&amp;quot;msg&amp;quot;:&amp;quot;录屏开始&amp;quot;} //结束 录屏结束:{&amp;quot;code&amp;quot;:3,&amp;quot;msg&amp;quot;:&amp;quot;录制完成&amp;quot;,&amp;quot;record_url&amp;quot;:&amp;quot;ttfile://temp/shareVideo.mp4&amp;quot;}</code></pre> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 录屏结束后会返回录屏地址record_url; sdk已经设置了本地缓存&lt;font color=&quot;red&quot;&gt;dybRecordUrl&lt;/font&gt;, 无需重复设置 &lt;/div&gt;</p> <h1>12.分享录屏</h1> <h2>12.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍分享玩家录屏</p> <p><code>shareRecordScreen (function callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 玩家录屏完成后,从已设置的本地缓存dybRecordUr获取路径分享录屏 &lt;/div&gt;</p> <h2>12.2示例代码</h2> <pre><code class="language-javascript">dyb.shareRecordScreen(function (call) { console.log(JSON.stringify(call), &amp;#039;分享录屏&amp;#039;) })</code></pre> <h2>12.3接口返回</h2> <pre><code class="language-javascript">{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;分享成功&amp;quot;,&amp;quot;res&amp;quot;:{&amp;quot;errMsg&amp;quot;:&amp;quot;shareAppMessage:ok&amp;quot;,&amp;quot;videoId&amp;quot;:&amp;quot;131011160f7c4d30040643400c281031525d4446677d4663555243410b7b46605f5645400f7a4c63&amp;quot;}} 分享录屏</code></pre> <h1>13.添加桌面</h1> <h2>13.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍将小游戏快捷方式添加到手机桌面上</p> <p><code>addShortcut (function callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 该 API 必须要由用户点击触发,安卓系统已判断是否已经添加(仅支持安卓)到手机桌面上 &lt;/div&gt;</p> <h2>13.2示例代码</h2> <pre><code class="language-javascript">dyb.addShortcut(function (callback) { console.log(&amp;#039;添加桌面:&amp;#039; + JSON.stringify(callback)); })</code></pre> <h2>13.3接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0添加失败,1添加成功,2已经添加(仅安卓设备))  &amp;quot;msg&amp;quot;: &amp;quot;&amp;quot; }</code></pre> <h1>14.主动分享</h1> <h2>14.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍通过按钮主动拉起分享</p> <p><code>share(Object param, callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.在游戏内用户通过按钮触发分享 2.如需其他类型分享可调用原生接口 &lt;/div&gt;</p> <h2>14.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |title |是  |string |分享标题   | |desc |是  |string |分享描述   | |imageUrl |是  |string |转发显示图片的链接,支持本地沙盒目录(ttfile://)或 相对代码包根目录的图片路径,不支持网络图片路径。显示图片长宽比推荐 5:4,不传或使用网络图片路径则默认使用小游戏 icon   | |query |否  |string |查询字符串,即小游戏的启动参数,必须是 key1=val1&amp;key2=val2 的格式,SDK已使用了(chid,subchid,shareid,sharetype)   |</p> <h2>14.3示例代码</h2> <pre><code class="language-javascript">var param = { title: &amp;#039;测试title&amp;#039;, desc: &amp;#039;测试desc&amp;#039;, imageUrl: &amp;#039;&amp;#039;, query: &amp;#039;a=b&amp;#039; } dyb.share(param, function (call) { console.log(JSON.stringify(call), &amp;#039;主动分享&amp;#039;) });</code></pre> <h2>14.4接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //0分享失败,1分享成功 &amp;quot;msg&amp;quot;: &amp;quot;分享成功&amp;quot; }</code></pre> <h1>15.广告点上报</h1> <h2>15.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍广告点上报,看广告时调用</p> <p><code>adNameReward</code> &lt;/div&gt;</p> <h2>15.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |ad_name |是  |string |广告位名称   | |ad_is_reward |是  |int |是否获得广告奖励 0否,1是(只要看完广告就传1,没看完传0)   |</p> <h2>15.3示例代码</h2> <pre><code class="language-javascript">//广告未看完 let ad_data = { ad_name: &amp;#039;广告未看完&amp;#039;, ad_is_reward: 0, //0未获得奖励,1获得奖励,必传((点击了广告未看完传0)) } dyb.adNameReward(ad_data, function (callback) { console.log(&amp;#039;上报广告名称:&amp;#039; + JSON.stringify(callback)); }); //广告看完 let ad_data = { ad_name: &amp;#039;广告看完&amp;#039;, ad_is_reward: 1, //0未获得奖励,1获得奖励,必传((只要看完广告就传1)) } dyb.adNameReward(ad_data, function (callback) { console.log(&amp;#039;上报广告名称:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>15.4接口返回</h2> <pre><code class="language-javascript">上报广告名称:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1717141847&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>16.AB测试</h1> <p>&lt;div style=&quot;background: #EE5837;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  AB测试接口需先联系运营添加白名单,否则将不能调用。 &lt;/div&gt;</p> <h2>16.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍AB测试上报</p> <p><code>userBelongTest</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.&lt;font color=&quot;red&quot;&gt;建议&lt;/font&gt;在获取到openid后延迟3-5s在调用,&lt;font color=&quot;red&quot;&gt;必须在创角上报之前&lt;/font&gt;调用 2.上报&lt;font color=&quot;red&quot;&gt;当日新增用户&lt;/font&gt;,老用户无需上报 &lt;/div&gt;</p> <h2>16.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |belong_num |是  |Int(需&gt;=1的整数)如1,2,3... |AB测试id   |</p> <h2>16.3示例代码</h2> <pre><code class="language-javascript">//上报AB测试用户 let user_data = { belong_num: 1,//需&amp;gt;=1的整数如1,2,3... } dyb.userBelongTest(user_data, function (callback) { console.log(&amp;#039;上报Ab测试:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>16.4接口返回</h2> <pre><code class="language-javascript">上报Ab测试:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1717141847&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre>

页面列表

ITEM_HTML