hqlsdk

hqlsdk


android sdk对接文档

<p>[toc]</p> <h1>SDK接入文档</h1> <p>[sdk下载](<a href="https://files.hnfushun.net/sdk/android_1.0.1.zip">https://files.hnfushun.net/sdk/android_1.0.1.zip</a> &quot;sdk下载地址&quot;)。</p> <h2>一、注意事项</h2> <ol> <li>targetSdkVersion &gt;= 30, minSdkVersion &gt;= 21,v2签名</li> <li>必须继承SDKApplication</li> <li>必须实现所有生命周期方法</li> <li>必须实现角色信息上报</li> <li>oaid=1.0.25</li> </ol> <h2>二、接入流程</h2> <h3>1. 获取接入参数</h3> <p>联系我方运营获取以下参数:</p> <ul> <li>必须参数:   - gameId:游戏ID <ul> <li>loginkey: 服务端登录校验使用</li> <li>paykey:服务端支付通知使用</li> </ul></li> <li>可选参数(由运营决定是否需要):   - packageName:包名   - jpushAppKey:极光AppKey</li> </ul> <h3>2. 引入依赖</h3> <p>在项目的build.gradle中添加以下依赖:</p> <pre><code class="language-groovy">android{     defaultConfig {         // 极光参数         manifestPlaceholders = [             &amp;quot;JPUSH_PKGNAME&amp;quot;: applicationId,             &amp;quot;JPUSH_APPKEY&amp;quot; : &amp;quot;e270d5cba070b3fff8dd8782&amp;quot;, //Portal上注册的包名对应的 appKey.             &amp;quot;JPUSH_CHANNEL&amp;quot;: &amp;quot;developer-default&amp;quot;, //暂时填写默认值即可.         ]     }   } dependencies {     implementation fileTree(dir: &amp;#039;libs&amp;#039;, include: [&amp;#039;*.jar&amp;#039;, &amp;#039;*.aar&amp;#039;])     implementation &amp;#039;com.android.support.constraint:constraint-layout:1.1.3&amp;#039;     implementation &amp;#039;com.android.support:cardview-v7:28.0.0&amp;#039;     implementation &amp;#039;com.android.support:support-v4:28.0.0&amp;#039;     implementation &amp;quot;com.android.support:recyclerview-v7:28.0.0&amp;quot;     implementation &amp;#039;com.android.support:appcompat-v7:28.0.0&amp;#039;     implementation &amp;#039;org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61&amp;#039; }</code></pre> <h3>3. 清单文件配置</h3> <p>在AndroidManifest.xml中添加游戏ID和scheme配置:</p> <pre><code class="language-xml">&amp;lt;application&amp;gt;     &amp;lt;!-- 游戏ID配置 --&amp;gt;     &amp;lt;meta-data         android:name=&amp;quot;HUOQILIN_GAME_ID&amp;quot;         android:value=&amp;quot;6001&amp;quot; /&amp;gt;     &amp;lt;!-- 闪屏Activity配置 --&amp;gt;     &amp;lt;activity         android:name=&amp;quot;.SplashActivity&amp;quot;         android:configChanges=&amp;quot;keyboardHidden|screenSize|orientation&amp;quot;         android:screenOrientation=&amp;quot;landscape&amp;quot;         android:hardwareAccelerated=&amp;quot;false&amp;quot;         android:exported=&amp;quot;true&amp;quot;         android:theme=&amp;quot;@android:style/Theme.NoTitleBar.Fullscreen&amp;quot;         android:launchMode=&amp;quot;singleTop&amp;quot;&amp;gt;         &amp;lt;intent-filter&amp;gt;             &amp;lt;action android:name=&amp;quot;android.intent.action.MAIN&amp;quot; /&amp;gt;             &amp;lt;category android:name=&amp;quot;android.intent.category.LAUNCHER&amp;quot; /&amp;gt;         &amp;lt;/intent-filter&amp;gt;         &amp;lt;!-- 添加hqlgame协议头 --&amp;gt;         &amp;lt;intent-filter&amp;gt;             &amp;lt;data android:scheme=&amp;quot;hqlgame&amp;quot; android:host=&amp;quot;${applicationId}&amp;quot;/&amp;gt;             &amp;lt;action android:name=&amp;quot;android.intent.action.VIEW&amp;quot; /&amp;gt;             &amp;lt;category android:name=&amp;quot;android.intent.category.DEFAULT&amp;quot; /&amp;gt;             &amp;lt;category android:name=&amp;quot;android.intent.category.BROWSABLE&amp;quot; /&amp;gt;         &amp;lt;/intent-filter&amp;gt;     &amp;lt;/activity&amp;gt; &amp;lt;/application&amp;gt;</code></pre> <h3>4. Application配置</h3> <p>必须继承SDKApplication:</p> <pre><code class="language-java">public class YourApplication extends com.hql.sdk.SDKApplication {     @Override     public void onCreate() {         super.onCreate();     } }</code></pre> <h3>5. 闪屏Activity配置【必接】</h3> <p>接入目的:用于巨量、快手等广告平台的过审需求,会在首屏中弹出协议,用户点击同意后才会进入游戏。</p> <pre><code class="language-java">public class YourSplashActivity extends com.hql.mobile.activity.SplashActivity {     @Override     protected String getGameActivity() {         return YourMainActivity.class.getName();     } }</code></pre> <h3>6. SDK初始化</h3> <p>在Activity中初始化SDK:</p> <pre><code class="language-java">GameSDK.getInstance().init(this, new GameSDK.GameSDKListener() {     @Override     public void onInitResult(boolean isSuccess) {         // 初始化结果回调     }     @Override     public void onPayResult(boolean isSuccess) {         // 支付结果回调     }     @Override     public void onLoginResult(boolean isSuccess, String token, String userId) {         // 登录结果回调     }     @Override     public void onExit() {         // 退出游戏回调     }     @Override     public void onLogout() {         // 登出回调     } });</code></pre> <h3>7. 登录功能</h3> <pre><code class="language-java">GameSDK.getInstance().login(activity);</code></pre> <h3>8. 登出功能</h3> <pre><code class="language-java">GameSDK.getInstance().logout(activity);</code></pre> <h3>9. 支付功能</h3> <pre><code class="language-java">PayParams params = new PayParams(); params.setBuyNum(1); // 购买数量 params.setCoinNum(100); // 虚拟币数量 params.setExtension(String.valueOf(System.currentTimeMillis())); // 扩展信息 params.setPrice(money); // 价格(元) params.setProductId(&amp;quot;com.hqlgame.demo1&amp;quot;); // 商品ID params.setProductName(&amp;quot;元宝&amp;quot;); // 商品名称 params.setProductDesc(&amp;quot;购买100元宝&amp;quot;); // 商品描述 params.setRoleId(roleId); // 角色ID params.setRoleLevel(Integer.parseInt(roleLevel)); // 角色等级 params.setRoleName(&amp;quot;角色名称&amp;quot;); // 角色名称 params.setServerId(serverId); // 服务器ID params.setServerName(&amp;quot;服务器名称&amp;quot;); // 服务器名称 params.setVip(&amp;quot;vip1&amp;quot;); // VIP等级 GameSDK.getInstance().pay(activity, params);</code></pre> <h3>10. 角色信息上报</h3> <pre><code class="language-java">UserExtraData extraData = new UserExtraData(); extraData.setDataType(type); // 上报类型 extraData.setServerID(serverId); // 服务器ID extraData.setServerName(serverName); // 服务器名称 extraData.setRoleName(roleName); // 角色名称 extraData.setRoleLevel(roleLevel); // 角色等级 extraData.setRoleID(roleId); // 角色ID extraData.setMoneyNum(&amp;quot;0&amp;quot;); // 元宝数量 extraData.setRoleCreateTime(new Date().getTime() / 1000); // 角色创建时间 extraData.setPower(Long.parseLong(power)); // 战斗力 extraData.setVip(vip); // VIP等级 extraData.setExtension(&amp;quot;{}&amp;quot;); // 扩展信息 GameSDK.getInstance().submitExtendData(activity, extraData);</code></pre> <h3>11. 生命周期方法</h3> <p>必须在Activity中实现所有生命周期方法:</p> <pre><code class="language-java">@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     GameSDK.getInstance().onCreate(savedInstanceState); } @Override protected void onStart() {     super.onStart();     GameSDK.getInstance().onStart(); } @Override protected void onResume() {     super.onResume();     GameSDK.getInstance().onResume(); } @Override protected void onPause() {     super.onPause();     GameSDK.getInstance().onPause(); } @Override protected void onStop() {     super.onStop();     GameSDK.getInstance().onStop(); } @Override protected void onDestroy() {     super.onDestroy();     GameSDK.getInstance().onDestroy(); } @Override protected void onRestart() {     super.onRestart();     GameSDK.getInstance().onRestart(); } @Override protected void onNewIntent(Intent intent) {     super.onNewIntent(intent);     GameSDK.getInstance().onNewIntent(intent); } @Override protected void onSaveInstanceState(Bundle outState) {     super.onSaveInstanceState(outState);     GameSDK.getInstance().onSaveInstanceState(outState); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     super.onActivityResult(requestCode, resultCode, data);     GameSDK.getInstance().onActivityResult(requestCode, resultCode, data, this); } @Override public void onConfigurationChanged(Configuration newConfig) {     super.onConfigurationChanged(newConfig);     GameSDK.getInstance().onConfigurationChanged(newConfig); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {     super.onRequestPermissionsResult(requestCode, permissions, grantResults);     GameSDK.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults); }</code></pre> <h3>12. 退出功能</h3> <pre><code class="language-java">GameSDK.getInstance().exit(activity);</code></pre> <h2>三、角色信息上报类型</h2> <ul> <li>1: 创建角色 (Constants.DATATYPE_CREATE_ROLE)</li> <li>2: 进入游戏 (Constants.DATATYPE_ENTER_GAME)</li> <li>3: 等级提升 (Constants.DATATYPE_LEVEL_UP)</li> <li>4: 退出游戏 (Constants.DATATYPE_OUT_GAME)</li> </ul> <h2>四、接入检查</h2> <ol> <li>所有生命周期方法必须调用SDK对应方法</li> <li>角色信息上报必须包含必要字段</li> <li>支付前必须确保用户已登录</li> <li>退出游戏必须调用SDK的exit方法</li> <li>屏幕旋转时需要重新初始化界面</li> <li>必须正确配置scheme</li> <li>必须正确配置闪屏Activity和Application</li> <li>必须从运营处获取正确的gameId</li> </ol>

页面列表

ITEM_HTML