hzysdk

hzysdk


android sdk对接文档

<p>[toc]</p> <h2>1. 接入准备</h2> <h3>1.1 sdk下载</h3> <p>sdk:<a href="https://files.hzy211.com/hzy/android-sdk_1.0.1.zip">v1.0.1.zip</a>(内包含 demo)</p> <h3>1.2 版本支持</h3> <ol> <li>minSdkVersion &gt;= 21</li> <li>targetSdkVersion &gt;= 30</li> </ol> <h3>1.3 接入注意</h3> <ol> <li>接入前请先联系运营获取 game_id,包名对应的极光参数</li> <li>&lt;span style=&quot;color: red; &quot;&gt;超级重要提示!!!&lt;/span&gt; <ol> <li>强烈建议参考demo接入</li> <li>游戏包的targetSdkVersion不得低于30,否则渠道过不了审核</li> <li>游戏的任何获取用户信息的操作,包括但不限于获取手机设备码,获取存储权限。都必须放在我方SDK初始化回调之后。否则过不了媒体审核</li> </ol></li> </ol> <h2>2. 开始接入</h2> <h3>2.1 Android Studio接入sdk,配置gradle&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">// 省略原有配置 android { defaultConfig{ // 根据游戏需要保留架构库种类 ndk { abiFilters 'arm64-v8a', 'armeabi', 'armeabi-v7a', 'x86', 'x86_64' } // 如果是eclipse接入的,将aar解压出来后修改清单文件对应字段即可,比如下面的JPUSH_APPKEY 在清单文件里面就是${JPUSH_APPKEY}。 manifestPlaceholders = [ JPUSH_APPKEY : &amp;quot;060f6fa5e125b37022b78d7e&amp;quot;, // 极光的appKey参数,运营提供 JPUSH_CHANNEL: &amp;quot;developer-default&amp;quot;, // 暂时填写默认值即可. ] } } dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:2.0.4' implementation 'android.arch.navigation:navigation-fragment:1.0.0' implementation 'android.arch.navigation:navigation-ui:1.0.0' // SDK依赖开始 implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61' implementation 'com.android.support:recyclerview-v7:27.0.2' // SDK依赖结束 }</code></pre> <h3>2.2 清单配置&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <p>AndroidManifest.xml 清单配置, game_id 参数请联系运营获取。</p> <pre><code class="language-xml"> &amp;lt;application&amp;gt; &amp;lt;!-- game_id替换成运营给到的game_id --&amp;gt; &amp;lt;meta-data android:name=&amp;quot;_HZY_GAME_ID&amp;quot; android:value=&amp;quot;game_id&amp;quot;/&amp;gt; &amp;lt;meta-data android:name=&amp;quot;_HZY_CHANNEL_KEY&amp;quot; android:value=&amp;quot;HZYSDK&amp;quot;/&amp;gt; &amp;lt;/application&amp;gt;</code></pre> <h3>2.3 application继承&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">public class DemoApplication extends com.hzy.game.sdk.HZYApplication { @Override public void onCreate() { super.onCreate(); } }</code></pre> <h3>2.4 闪屏Activity接入&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">public class SplashActivity extends HZYSplashActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 请不要调用被重载的父类方法 // super.onActivityResult(requestCode, resultCode, data); // 检查用户是否同意使用 app if (requestCode == Constants.REQUEST_PERMISSIONS_CODE &amp;amp;&amp;amp; resultCode == Constants.REQUEST_PERMISSIONS_DENIED) { // 用户拒绝使用app finish(); } else if (requestCode == Constants.REQUEST_PERMISSIONS_CODE &amp;amp;&amp;amp; resultCode == Constants.REQUEST_PERMISSIONS_GRANTED) { // 用户同意使用app try { // 游戏主activity MainActivity.class // 或者使用 Class.forName() // Intent intent = new Intent(this, Class.forName(&amp;quot;com.xxxx.MainActivity&amp;quot;)); Intent intent = new Intent(this, NewApiMainActivity.class); startActivity(intent); finish(); }catch (Exception e){ e.printStackTrace(); } } } }</code></pre> <h3>2.5 初始化&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">HZYGameSDK.getInstance().init(this, new HZYGameSDK.HZYGameSDKListener() { @Override public void onInitResult(boolean isSuccess) { isInit = isSuccess; } @Override public void onPayResult(boolean isSuccess) { HZYLog.i(&amp;quot;onPayResult&amp;quot;); } @Override public void onLoginResult(boolean isSuccess, String token, String userId) { HZYLog.i(&amp;quot;onLoginResult&amp;quot;); HZYLog.i(&amp;quot;Token:&amp;quot; + token); HZYLog.i(&amp;quot;userid: &amp;quot; + userId); isLogin = isSuccess; } @Override public void onExit() { NewApiMainActivity.this.finish(); } @Override public void onLogout() { HZYLog.i(&amp;quot;onLogout&amp;quot;); } });</code></pre> <h3>2.6 登录&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java"> HZYGameSDK.getInstance().login(this);</code></pre> <h3>2.7 登出&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java"> HZYGameSDK.getInstance().logout(this);</code></pre> <h3>2.8 退出&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">HZYGameSDK.getInstance().exit(this);</code></pre> <h3>2.9 支付&lt;font color='red'&gt;(必须)&lt;/font&gt;)</h3> <pre><code class="language-java">HZYPayParams params = new HZYPayParams(); params.setBuyNum(1); // 写默认1 params.setCoinNum(100); // 写默认100 params.setExtension(String.valueOf(System.currentTimeMillis())); params.setPrice(money); // 单位是元 params.setProductId(&amp;quot;com.hzygame.demo1&amp;quot;); // 产品id params.setProductName(&amp;quot;元宝&amp;quot;);// 产品名称 params.setProductDesc(&amp;quot;购买100元宝&amp;quot;);// 描述 params.setRoleId(&amp;quot;123456&amp;quot;);// 角色id params.setRoleLevel(Integer.parseInt(&amp;quot;1&amp;quot;)); // 当前角色等级,未获取到角色等级时传0 params.setRoleName(&amp;quot;战国无双&amp;quot;);// 角色未获取或未创建时传空字符串 params.setServerId(&amp;quot;1&amp;quot;);// 服务器id params.setServerName(&amp;quot;测试&amp;quot;);// 未获取到服务器名称时传空字符串 params.setVip(&amp;quot;vip1&amp;quot;);// VIP等级 HZYGameSDK.getInstance().pay(NewApiMainActivity.this, params);</code></pre> <h3>2.10 角色上报&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">HZYUserExtraData extraData = new HZYUserExtraData(); extraData.setDataType(type); // 调用时机,具体见文档 extraData.setServerID(&amp;quot;1&amp;quot;); // 未获取到服务器时传0 extraData.setServerName(&amp;quot;测试demo服务器&amp;quot;); // 未获取到服务器名称时传null extraData.setRoleName(&amp;quot;战国无双&amp;quot;); // 角色未获取或未创建时传null extraData.setRoleLevel(&amp;quot;1&amp;quot;); // 当前角色等级,未获取到角色等级时传null extraData.setRoleID(&amp;quot;123456&amp;quot;); // 当前角色id,未获取角色id时传null extraData.setMoneyNum(0 + &amp;quot;&amp;quot;); // 玩家身上元宝数量,拿不到或者未获取时传0s extraData.setRoleCreateTime(new Date().getTime() / 1000);//角色创建时间, extraData.setGuildId(&amp;quot;GH10001&amp;quot;);// 公会id,无公会或未获取时传null extraData.setGuildName(&amp;quot;公会名称&amp;quot;);// 公会名称,无公会或未获取时传null extraData.setGuildLevel(100 + &amp;quot;&amp;quot;);// 公会等级,无公会或未获取时传0 extraData.setGuildLeader(&amp;quot;公会会长名&amp;quot;);// 公会会长名称,无公会或未获取时传null extraData.setPower(Long.parseLong(&amp;quot;1000000&amp;quot;)); // 角色战斗力, 不能为空,必须是数字,不能为null,若无,传0 extraData.setProfessionid(123);// 职业ID,不能为空,必须为数字,若无,传入 0 extraData.setProfession(&amp;quot;职业名称&amp;quot;);// 职业名称,不能为空,不能为 null,若无,传入 “无” extraData.setGender(&amp;quot;性别&amp;quot;);// 角色性别,不能为空,不能为 null,可传入参数“ 男、女、无” extraData.setProfessionroleid(123);// 职业称号ID,不能为空,不能为 null,若无,传入 0 extraData.setProfessionrolename(&amp;quot;职业称号&amp;quot;);// 职业称号,不能为空,不能为 null,若无,传入“ 无” extraData.setVip(&amp;quot;1&amp;quot;);// 玩家VIP等级,不能为空,必须为数字,若无,传入 0 extraData.setGuildroleid(123);// 帮派称号 ID,帮派会长/帮主必传 1,其他可自定义,不能为空,不能为 // null,若无,传入 0 extraData.setGuildrolename(&amp;quot;帮派称号名称&amp;quot;);// 帮派称号名称,不能为空,不能为 null,若无,传入“无” extraData.setExtension(&amp;quot;{}&amp;quot;);//拓展字段 //其他场景上报用这句 HZYGameSDK.getInstance().submitExtendData(TestActivity.this, extraData);</code></pre> <ul> <li>dataType 可选值</li> </ul> <table> <thead> <tr> <th>数值</th> <th>时机</th> <th>常量名</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>选择服务器</td> <td>Constants._HZY_CHOICE_SERVER</td> </tr> <tr> <td>2</td> <td>&lt;font color=&quot;red&quot;&gt;创建角色(必接)&lt;/font&gt;</td> <td>Constants._HZY_CREATE_ROLE</td> </tr> <tr> <td>3</td> <td>&lt;font color=&quot;red&quot;&gt;进入游戏(必接)&lt;/font&gt;</td> <td>Constants._HZY_ENTER_GAM</td> </tr> <tr> <td>4</td> <td>&lt;font color=&quot;red&quot;&gt;等级提升(必接)&lt;/font&gt;</td> <td>Constants._HZY_LEVEL_UP</td> </tr> <tr> <td>5</td> <td>退出游戏</td> <td>Constants._HZY_OUT_GAME</td> </tr> <tr> <td>6</td> <td>条件数据上报(按需接入)</td> <td>6</td> </tr> </tbody> </table> <h3>2.11 生命周期&lt;font color='red'&gt;(必须)&lt;/font&gt;</h3> <pre><code class="language-java">public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { HZYGameSDK.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults); } public void onActivityResult(int requestCode, int resultCode, Intent data) { HZYGameSDK.getInstance().onActivityResult(requestCode, resultCode, data, this); } public void onCreate(@Nullable Bundle savedInstanceState) { HZYGameSDK.getInstance().onCreate(savedInstanceState); } public void onStart() { HZYGameSDK.getInstance().onStart(); } public void onDestroy() { HZYGameSDK.getInstance().onDestroy(); } public void onResume() { HZYGameSDK.getInstance().onResume(); } public void onPause() { HZYGameSDK.getInstance().onPause(); } public void onRestart() { HZYGameSDK.getInstance().onRestart(); } public void onStop() { HZYGameSDK.getInstance().onStop(); } public void onSaveInstanceState(Bundle outState) { HZYGameSDK.getInstance().onSaveInstanceState(outState); } public void onNewIntent(Intent intent) { HZYGameSDK.getInstance().onNewIntent(intent); } public void onConfigurationChanged(Configuration newConfig) { HZYGameSDK.getInstance().onConfigurationChanged(newConfig); }</code></pre>

页面列表

ITEM_HTML