更新日期:2025年 01月 23日Java(Android)接入文档
<h3>
<span style="line-height:3;font-size:16px;"><strong>1.接入前项目检查(必接)</strong></span>
</h3>
<p>
<span style="line-height:3;font-size:14px;">根据游戏接入后出现的问题,QuickSDK对游戏项目做以下几点要求:</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· AndroidManifest.xml中android:targetSdkVersion="26" <span style="color:#E53333;">(</span><span style="color:#E53333;font-family:微软雅黑, " font-size:32px;font-weight:600;white-space:normal;background-color:#ffffff;"=""><a href="https://www.quicksdk.com/doc-773.html?cid=9" target="_blank"><span style="color:#E53333;">关于一些应用市场对Android应用API(targetSdkVersion)最低要求的提示</span></a></span><span style="color:#E53333;">)</span></span>
</p>
<p>
<span style="font-size:14px;line-height:2.5;">部分渠道targetVersion为28时9.0设备http请求失败</span><br />
<span style="font-size:14px;line-height:2.5;">application节点下添加</span>
</p>
<pre class="brush:js;toolbar:false">android:usesCleartextTraffic="true" </pre>
<br />
<span style="font-size:14px;line-height:2.5;"></span>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;">防止游戏与渠道sdk发生横竖屏切换出现问题</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">· U3D游戏项目下,AndroidManifest.xml中</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"></meta-data></pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;">Android:value值设置为true</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· 为Activity添加横竖屏设置</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">根据游戏的横竖屏,将activity做横竖屏设置</span>
</p>
<pre class="brush:js;toolbar:false">android:screenOrientation="sensorLandscape"
android:screenOrientation="sensorPortrait"</pre>
<p>
<span style="line-height:3;font-size:14px;">或者</span>
</p>
<pre class="brush:js;toolbar:false">android:screenOrientation="landscape"
android:screenOrientation="portrait"</pre>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· AndroidManifest.xml中的Activity等组件路径为完整路径</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· 游戏项目的类路径不要使用“com.quicksdk”,打渠道包时会删除该路径下的所有内容。</span>
</p>
<h3>
<span style="line-height:3;font-size:16px;"><strong>2.接入流程</strong></span>
</h3>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>2.1 添加资源(必接)</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">去下载中心下载QuickSDK资源,将files文件夹下的文件libs和res拷贝到项目对应的文件夹中。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>2.2 添加权限(必接)</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">Androidmanifest.xml中添加权限<strong style="white-space:normal;font-family:微软雅黑, "margin:0px;padding:0px;color:#323232;font-size:14px;background-color:#FFFFFF;"><span style="margin:0px;padding:0px;color:#E53333;">(QuickSDK没有要求任何权限,游戏按自己的需要进行添加便<strong><span style="color:#E53333;">可</span></strong></span></strong><strong><span style="color:#E53333;">)</span></strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission></pre>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.3 添加QuickSdkApplication</span>
</h4>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><strong>2.3.1 新建游戏的Application(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">新建游戏的Application,继承自QuickSdkApplication</span>
</p>
<pre class="brush:js;toolbar:false">public class GameApplication extends QuickSdkApplication {
@Override
public void onCreate() {
super.onCreate();
}
}</pre>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><strong>2.3.2 将Application添加到AndroidManifest.xml中(必接)</strong></span>
</p>
<p>
<br />
</p>
<pre class="brush:xml;toolbar:false"><application
android:name="com.quicksdk.test.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
</application></pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">在AndroidManifes</span><span style="font-size:14px;">t.xml中的Application节点,修改android:name属性,其值为游戏新建的Application的全路径</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;">2.4 添加闪屏</span>
</h4>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><strong>2.4.1 新建游戏闪屏Activity(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">新建游戏闪屏Activity,继承自QuickSdkSplashActivity</span>
</p>
<pre class="brush:js;toolbar:false">public class SplashActivity extends QuickSdkSplashActivity {
@Override
public int getBackgroundColor() {
return Color.WHITE;
}
@Override
public void onSplashStop() {
//闪屏结束后,跳转到游戏界面
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
this.finish();
}
}</pre>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4.2 将闪屏Activity添加到AndroidManifest.xml中,<span style="color:#E53333;">并且设置为游戏启动Activity</span></strong></span>
</p>
<p>
<strong style="font-size:14px;"><br />
</strong>
</p>
<p>
<strong style="font-size:14px;"> </strong>
</p>
<pre class="brush:js;toolbar:false"><activity
android:name="com.quicksdk.test.SplashActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</pre>
<strong style="font-size:14px;"> <br />
</strong>
<p>
<br />
</p>
<p>
<strong style="font-size:14px;">说明:</strong>
</p>
<p>
<span style="line-height:3;font-size:14px;">android:name属性,其值为游戏自定义的闪屏Activity全路径</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">android:screenOrientation属性,其值根据游戏需求决定是横屏还是竖屏</span>
</p>
<p>
<strong><br />
</strong>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;"><span style="font-size:14px;color:#E53333;">2.5 生命周期处理(必接)</span></span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">游戏Activity的生命周期,调用相应的方法</span>
</p>
<pre class="brush:js;toolbar:false">@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
com.quicksdk.Sdk.getInstance().onCreate(this);
}
@Override
protected void onStart() {
super.onStart();
com.quicksdk.Sdk.getInstance().onStart(this);
}
@Override
protected void onRestart() {
super.onRestart();
com.quicksdk.Sdk.getInstance().onRestart(this);
}
@Override
protected void onPause() {
super.onPause();
com.quicksdk.Sdk.getInstance().onPause(this);
}
@Override
protected void onResume() {
super.onResume();
com.quicksdk.Sdk.getInstance().onResume(this);
}
@Override
protected void onStop() {
super.onStop();
com.quicksdk.Sdk.getInstance().onStop(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
com.quicksdk.Sdk.getInstance().onDestroy(this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
com.quicksdk.Sdk.getInstance().onNewIntent(intent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
com.quicksdk.Sdk.getInstance().onActivityResult(this, requestCode, resultCode, data);
}</pre>
<h4>
<strong style="font-size:14px;">2.6 QuickSDK初始化设置</strong>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.6.1 设置初始化通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setInitNotifier(InitNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:设置初始化结果回调通知,一般在游戏开始前,初始化成功后,进行游戏登陆等相关的处理。</span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setInitNotifier(new InitNotifier() {
@Override
public void onSuccess() {
//初始化成功
}
@Override
public void onFailed(String message, String trace) {
//初始化失败
} });</pre>
<p>
<span style="line-height:3;font-size:14px;"><strong></strong><strong>2.6.2 设置登录通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setLoginNotifier(LoginNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:设置用户登陆结果回调通知的相关处理。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setLoginNotifier(new LoginNotifier() {
@Override
public void onSuccess(UserInfo userInfo) {
//登录成功,获取到用户信息userInfo
//通过userInfo中的UID、token做服务器登录认证
}
@Override
public void onCancel() {
//登录取消
}
@Override
public void onFailed(final String message, String trace) {
//登录失败
}
});</pre>
<p>
<span style="line-height:3;font-size:14px;">登录信息:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="font-family:" font-size:14px;"=""><strong>UserInfo</strong></span><strong><span style="font-family:Microsoft YaHei;"></span></strong><br />
</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">
<table bordercolor="#000000" style="width:50%;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<span style="font-size:14px;">字段</span>
</td>
<td>
<span style="font-size:14px;">类型</span>
</td>
<td>
<span style="font-size:14px;">说明</span>
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;"></span><span style="font-size:14px;">UID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">用户ID,</span><span style="font-size:14px;"><span style="font-size:14px;">SDK返</span><span style="font-size:14px;">回的唯一ID</span></span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">username</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">用户登录名</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">token</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">用户验证token</span><span style="font-size:14px;"></span>
</td>
</tr>
</tbody>
</table>
</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">接入要求:</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">1)启动游戏,在登录界面中获取到登录成功的通知,跳转到进入游戏的界面;</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">2)游戏以自动登录的方式调用登录时,获取到登录失败和登录取消的通知,应再次调用登录的功能;</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">3)不同渠道可能返回相同的UID,游戏应使用渠道ID+UID作为用户的唯一标识。渠道ID通过“public int getChannelType()”获取。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.6.3 设置注销通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setLogoutNotifier(LogoutNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:设置用户注销结果回调通知等相关的处理。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setLogoutNotifier(new LogoutNotifier() {
@Override
public void onSuccess() {
//注销成功
}
@Override
public void onFailed(String message, String trace) {
//注销失败,不做处理
}
});</pre>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;">接入要求: 获取到注销成功的通知,游戏应回到登录</span><span style="color:#E53333;">界面并重新调用登录方法。</span></span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><strong>2.6.4 设置切换账号通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setSwitchAccountNotifier(SwitchAccountNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能: 一些渠道(如:<span style="color:#E53333;">百度</span> 等)在悬浮框有切换账号的功能,此回调即切换成功后的回调。游戏应清除当前的游戏角色信息。在切换账号成功后回到选择服务器界面,用回调结果里面的新的UID 和Token 进入游戏。<span style="color:#E53333;">注意:在此回调内无需调用登录接口</span><br />
</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setSwitchAccountNotifier(new SwitchAccountNotifier() {
@Override
public void onSuccess(UserInfo userInfo) { //切换账号成功的回调,返回新账号的userInfo
}
@Override
public void onCancel() {
//切换账号取消
}
@Override
public void onFailed(String message, String trace) {
//切换账号失败
}
})</pre>
<p>
<span style="line-height:3;font-size:14px;">切换账号成功信息:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>UserInfo</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>
<table bordercolor="#000000" style="width:50%;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<span style="font-size:14px;">字段</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"><span style="font-size:14px;"> 类</span><span style="font-size:14px;">型</span></span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"> 说明</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">UID</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"> String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">用户ID,SDK返回的唯一ID</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">username</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"> String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"><span style="font-size:14px;">用户登录</span><span style="font-size:14px;">名</span></span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">token</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;"> String</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">用户验证token</span><span style="font-size:14px;"></span>
</td>
</tr>
</tbody>
</table>
</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;">接入要</span><span style="color:#E53333;">求:</span></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;">在游戏界面中,获取到切换账号成功的通知,游戏注销当前的游戏角色,使用新的用户信息,回到进入游戏的界面。(针对渠道SDK在</span><span style="color:#E53333;">游戏界面中通过悬浮框进行账号的切换)</span> </span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.6.5 设置定额支付通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setPayNotifier(PayNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:设置用户支付结果回调通知等相关的处理</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setPayNotifier(new PayNotifier() {
@Override
public void onSuccess(String sdkOrderID, String cpOrderID,
String extrasParams) {
//支付成功
//sdkOrderID:quick订单号 cpOrderID:游戏订单号
}
@Override
public void onCancel(String cpOrderID) {
//支付取消
}
@Override
public void onFailed(String cpOrderID, String message, String trace) {
//支付失败
}
});</pre>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">说明:游戏充值是否成功到账,只能以服务器的通知为准,而不是客户端的通知,因为部分渠道SDK自身有时不会发送正确的通知。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.6.6 设置退出通知(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:QuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public QuickSDK setExitNotifier(ExitNotifier notifier)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:设置用户退出结果回调通知等相关的处理</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setExitNotifier(new ExitNotifier() {
@Override
public void onSuccess() {
//退出成功,游戏在此做自身的退出逻辑处理
}
@Override
public void onFailed(String message, String trace) {
//退出失败,不做处理
}
});</pre>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;"><strong>接</strong></span><span style="color:#E53333;"><strong>入要求:获取到退出成功的通知后,游戏做自身的退出逻辑处理。</strong></span></span>
</p>
<h4>
<strong style="font-size:14px;">2.7 渠道SDK接口</strong><strong style="font-size:14px;">调用</strong>
</h4>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><strong>接入</strong><strong>要求:SDK的接口需在UI主线程下调用</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.7.1 SDK初始化(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Sdk</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void init(Activity activity, String productCode, String productKey)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:渠道SDK初始化</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:activity 必填 当前Activity</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"></span>
</p>
<p style="white-space:normal;">
<span style="line-height:3;font-size:14px;"><strong><span style="color:#E53333;">targetVersion大于等于23时,需要在初始化之前申请权限(QuickSDK没有要求任何权限,游戏按自己的需要进行申请便可,如不用可以不做申请)</span></strong>如下:</span>
</p>
<p style="white-space:normal;">
<span style="line-height:3;font-size:14px;">案例1(<span style="color:#E53333;">当targetVersion 较大时 动态申请读写权限和读取手机状态等权限,具体权限 具体而定</span>):</span>
</p>
<p style="white-space:normal;">
<span style="line-height:3;font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"> try {
//check权限
if ((ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
|| (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
//没有,申请权限 权限数组
ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.READ_PHONE_STATE ,Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUESTCODE);
} else {
// 有则执行初始化
Sdk.getInstance().init(this, "Product_Code", "Product_Key");
}
} catch (Exception e) {
//异常 继续申请
ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.READ_PHONE_STATE ,Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUESTCODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//如果requestCode不是游戏自己申请时传的,则不作处理
if (requestCode != REQUESTCODE){
return;
}
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//申请成功
Sdk.getInstance().init(this,"Product_Code", "Product_Key");
} else {
//失败 这里逻辑以游戏为准 这里只是模拟申请失败 cp方可改为继续正常初始化调登录然后进游戏 或者继续申请权限 或者退出游戏 或者其他逻辑
Sdk.getInstance().init(this,"Product_Code", "Product_Key");
}
}</pre>
<br />
<p>
<br />
</p>
<p style="white-space:normal;">
<br />
</p>
<p style="white-space:normal;">
<span style="line-height:3;font-size:14px;"><strong><span style="color:#E53333;">targetVersion小于等于22时,无申请权限。</span></strong>如下:<br />
</span>
</p>
<p style="white-space:normal;">
<span style="line-height:3;font-size:14px;">案例2:</span>
</p>
<p style="white-space:normal;">
<br />
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().setInitNotifier(new InitNotifier() {
@Override
public void onSuccess() {
//初始化成功
}
@Override
public void onFailed(String message, String trace) {
//初始化失败
}
});</pre>
<br />
<p>
<br />
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">productCode 必填 QuickSDK后台申请的productCode</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">productKey 必填 QuickSDK后台申请的productKey</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">com.quicksdk.Sdk.getInstance().init(activity, "后台申请的productCode", "后台申请的productKey");</pre>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;"><strong>接入要求:初始化接口,应在Activity中onCreate方</strong></span><span style="color:#E53333;"><strong>法中调用。</strong></span></span><strong style="color:#E53333;font-size:14px;"></strong>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong><br />
</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.7.2 登录账号(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.User</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void login(Activity activity)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:调用渠道SDK登录</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:activity 必填 当前Activity</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">User.getInstance().login(activity);</pre>
<p>
<span style="line-height:3;font-size:14px;"><span style="color:#E53333;"><strong>接入要求:进入到登录界面,自动调</strong></span><span style="color:#E53333;"><strong>用此接口,须保证初始化成功后再调用登录接口。</strong></span></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.7.3 上传角色信息(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.User</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void setGameRoleInfo(Activity activity, GameRoleInfo roleInfo, boolean createRole)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:向渠道SDK上传角色信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:activity 必填 当前Activity</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">roleInfo 必填 角色信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">createRole 必填 是否创建角色</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">//注:GameRoleInfo的字段,以下所有参数必须传,没有的请模拟一个参数传入;
GameRoleInfo roleInfo = new GameRoleInfo();
roleInfo.setServerID("1");//数字字符串,不能含有中文字符
roleInfo.setServerName("服务器1");
roleInfo.setGameRoleName("石头");
roleInfo.setGameRoleID("1121121");
roleInfo.setGameBalance("5000");
roleInfo.setVipLevel("4");  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
roleInfo.setGameUserLevel("12"); //设置游戏角色等级
roleInfo.setPartyName("无敌联盟"); //设置帮派名称
roleInfo.setRoleCreateTime("1473141432"); //值为10位数时间戳
roleInfo.setPartyId("1100"); //设置帮派id,必须为整型字符串
roleInfo.setGameRoleGender("男"); 
roleInfo.setGameRolePower("38"); //设置角色战力,必须为整型字符串
roleInfo.setPartyRoleId("11"); //设置角色在帮派中的id
roleInfo.setPartyRoleName("帮主"); //设置角色在帮派中的名称
roleInfo.setProfessionId("38"); //设置角色职业id,必须为整型字符串
roleInfo.setProfession("法师"); //设置角色职业名称
roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
创建角色
User.getInstance().setGameRoleInfo(activity, roleInfo, true);
进入游戏及角色升级
User.getInstance().setGameRoleInfo(activity, roleInfo, false);</pre>
<p style="text-align:center;">
<span style="font-size:14px;"><strong> GameRoleInfo</strong></span>
</p>
<p>
<span style="font-size:14px;">
<table bordercolor="#000000" style="width:100%;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<span style="font-size:14px;">字段<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">类型</span><br />
</td>
<td>
<span style="font-size:14px;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">serverID<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">服务器ID(数字字符串)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">serverName<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">服务器名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleName<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleID<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色ID</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleBalance<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色用户余额</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">vipLevel<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">VIP等级</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleLevel<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色用户等级</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">partyName<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">公会社团</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">roleCreateTime<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色创建时间(10位数的unix timestamp时间戳)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">partyId<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">帮派id</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleGender<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色性别</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRolePower<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;"> 战力</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">partyRoleId<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色在帮派中的id</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">partyRoleName<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色在帮派中的名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">profession</span><span style="font-size:14px;">I</span><span style="font-size:14px;">d<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角</span><span style="font-size:14px;">色</span><span style="font-size:14px;">职业id</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">profe</span><span style="font-size:14px;">ssion<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">角色职业名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">friendlis</span><span style="font-size:14px;">t<span style="line-height:3;"></span></span><br />
</td>
<td>
<span style="font-size:14px;">String</span><span></span><br />
</td>
<td>
<span style="font-size:14px;">好友关系列表</span>
</td>
</tr>
</tbody>
</table>
</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">接入说明:</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">1) 在创建游戏角色、进入游戏和角色升级3个地方调用此接口,当创建角色时createRole值为true,其他两种情况为false。true & false 均需要调用一遍</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">2) GameRoleInfo所有字段均需上传,不能传null,游戏没有的字段可以传一个默认值(比如 default 或者 1 之类的)。</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">3) 关于360渠道上传角色信息的具体说明,<span style="color:#E53333;">请参考:</span></span><span style="font-size:14px;"><span style="color:#E53333;"><a href="https://www.quicksdk.com/doc-190.html?cid=15" target="_blank"><span style="color:#E53333;">https://www.quicksdk.com/doc-190.html?cid=15</span></a></span></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.7.4 定额支付(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Payment</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void pay(final Activity activity, final OrderInfo orderInfo, final GameRoleInfo roleInfo)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:调用渠道SDK支付</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:activity 必填 当前Activity</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">orderInfo 所有参数必填 订单信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">roleInfo <span style="font-size:14px;white-space:normal;">所有参数</span>必填 角色信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">GameRoleInfo roleInfo = new GameRoleInfo();
roleInfo.setServerID("1");//数字字符串
roleInfo.setServerName("服务器1");
roleInfo.setGameRoleName("石头");
roleInfo.setGameRoleID("1121121");
roleInfo.setRoleCreateTime("1473141432"); //值为10位数时间戳
roleInfo.setGameUserLevel("12");
roleInfo.setVipLevel("4");
roleInfo.setGameBalance("5000");
roleInfo.setPartyName("xx联盟");
OrderInfo orderInfo = new OrderInfo();
orderInfo.setCpOrderID("20150917003200119310");
orderInfo.setGoodsName("元宝");//商品名称,不带数量
orderInfo.setCount(60);//游戏币数量
orderInfo.setAmount(6);
orderInfo.setGoodsID("1");
orderInfo.setGoodsDesc("Diamond_60_商品描述");
orderInfo.setPrice(0.1);
orderInfo.setExtrasParams("额外参数");
orderInfo.setCallbackUrl();//游戏支付回调地址,如后台也有配置,则优先通知后台设置的地址
Payment.getInstance().pay(activity, orderInfo, roleInfo);</pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">支付信息参数表:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>OrderInfo</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>
<table bordercolor="#000000" style="width:70%;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<span style="font-size:14px;">字段</span><br />
</td>
<td>
<span style="font-size:14px;">类型</span><br />
</td>
<td>
<span style="font-size:14px;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">goodsID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">产品ID,用来识别购买的产品</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">goodsName</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">产品名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">cpOrderID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">产品订单号(游戏方的订单号)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">count</span><br />
</td>
<td>
<span style="font-size:14px;">int</span><br />
</td>
<td>
<span style="font-size:14px;">商品数量</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">amount</span><br />
</td>
<td>
<span style="font-size:14px;">double</span><br />
</td>
<td>
<span style="font-size:14px;">总金额(元)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">price</span>
</td>
<td>
<span style="white-space:normal;font-size:14px;">doubl</span><span style="white-space:normal;font-size:14px;">e</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">总金额(元,跟amount传一样的值就行)</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<div>
<span style="font-size:14px;">goodsdesc </span>
</div>
</td>
<td>
<span style="font-size:14px;">String</span>
</td>
<td>
<span style="font-size:14px;">商品描述</span>
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">extrasParams</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td style="width:70%;">
<span style="font-size:14px;">透传参数 <span style="color:#E53333;">服务器发送异步通知时原样回传(<span style="white-space:normal;color:#E53333;font-size:14px;">需要传纯字符串,不能传json格式)</span></span><span style="color:#E53333;"></span></span>
</td>
</tr>
</tbody>
</table>
</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">为了兼容各个渠道商品名称能够统一显示,订单应以如下案例的形式传入:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例1: 案例2:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">amount:6.0 amount:10.0</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">count:60 count:1</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">goodsName:元宝 goodsName:月卡</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">接入要求:</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· GoodsName产品名称以“月卡”、“钻石”、“元宝”的形式传入,不带数量;</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· 其中OrderInfo中Count字段表示商品数量</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;">· OrderInfo,GameRoleInfo所有字段均需上传且不能传null,游戏没有的字段可以传一个默认值(<span style="white-space:normal;color:#E53333;font-size:14px;">比如 default 或者 1 之类的</span>)</span>
</p>
<p>
<span style="color:#E53333;line-height:3;font-size:14px;"><br />
</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.7.5 注销账号(游戏自身需要登出SDK账号时进行调用)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.User</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void logout(Activity activity)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:渠道SDK注销</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">User.getInstance().logout(activity);</pre>
<p>
<span style="line-height:3;font-size:14px;"><strong></strong><strong>2.7.6 退出(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Sdk</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public void exit(Activity activity)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:渠道SDK退出,游戏做退出逻辑时,先通过isShowExitDialog接口判断渠道是否有退出框,如果渠道有退出框,直接调用QuickSDK的exit接口;如果渠道没有退出框,则调用游戏自身的退出框,退出框点击“确定”后,调用QuickSDK的exit接口。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<pre class="brush:js;toolbar:false">//通过isShowExitDialog判断渠道sdk是否有退出框
if(QuickSDK.getInstance().isShowExitDialog()){
Sdk.getInstance().exit(activity);
}else{
// 游戏调用自身的退出对话框,点击确定后,调用quick的exit接口
new AlertDialog.Builder(MainActivity.this).setTitle("退出").setMessage("是否退出游戏?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Sdk.getInstance().exit(MainActivity.this);
}
}).setNegativeButton("取消", null).show();
}</pre>
<h3>
<span style="line-height:3;font-size:16px;"><br />
</span>
</h3>
<h3>
<span style="line-height:3;font-size:16px;">3.扩展接口</span>
</h3>
<h4>
<span style="line-height:3;font-size:14px;">3.1 获取渠道类型</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public int getChannelType()/getParentChannelType()</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:<span style="white-space:normal;font-size:14px;">获取复制渠道的父渠道号</span>/获取<span style="white-space:normal;font-size:14px;">渠道号</span></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:渠道ID</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().getParentChannelType();//获取复制渠道的父渠道号(推荐使用)
Extend.getInstance().getChannelType();//获取渠道号</pre>
<br />
<p>
<span style="font-size:14px;">比如(渠道code:25643,渠道名:官方自用渠道)的渠道是从(渠道code:134,渠道名:QuickGame_安卓)复制而来,那么通过getParentChannelType接口获取到的值就是134,通过getChannelType接口获取到的就是25643</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;color:#E53333;">注意:</span>
</p>
<p>
<span style="font-size:14px;"><span style="color:#E53333;">为了父渠道跟复制渠道的包能角色互通,推荐游戏使用getParentChannelType接口获取父渠道code做uid拼接</span></span>
</p>
<p>
<span style="font-size:14px;color:#E53333;">如果游戏服务端进行登录验证时有拼接</span><span style="font-size:14px;line-height:3;"><span style="color:#E53333;">channel_code,那么需使用</span><span style="color:#E53333;"></span></span><span style="font-size:14px;color:#E53333;"></span><span style="font-size:14px;color:#E53333;">getChannelType()接口获取的值进行请求</span><span style="font-size:14px;color:#E53333;"></span>
</p>
<p>
<span style="font-size:14px;color:#E53333;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4 style="font-size:13.33px;white-space:normal;">
<span style="line-height:3;font-size:14px;">3.2 获取设备号(DeviceID)</span>
</h4>
<p style="font-size:13.33px;white-space:normal;">
<span style="line-height:3;font-size:14px;"></span>
</p>
<p style="white-space:normal;font-size:13.33px;">
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Extend <br />
方法:public String getDeviceID(Activity activity) <br />
功能:获取QuickSDK定义的设备号 <br />
说明:此设备号仅以QuickSDK算法计算得来,与渠道或cp设备号不一致; <br />
案例:<br />
</span>
</p>
<p style="white-space:normal;">
<br />
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().getDeviceID(MainActivity.this);</pre>
<p>
<br />
</p>
<p style="white-space:normal;font-size:13.33px;">
<span style="line-height:3;font-size:14px;"></span>
</p>
<p style="white-space:normal;font-size:13.33px;">
<span style="line-height:3;font-size:14px;"></span>
</p>
<h4 style="white-space:normal;font-size:13.33px;">
<span style="line-height:3;font-size:14px;">3.3 上传自定义数据</span>
</h4>
<span style="font-size:14px;line-height:3;">类名:com.quicksdk.Extend</span>
<p style="font-size:13.33px;white-space:normal;">
<span style="font-size:14px;line-height:3;">方法:public void uploadNode(Activity activity,String eventCode ,String eventParams)</span>
</p>
<p style="font-size:13.33px;white-space:normal;">
<span style="font-size:14px;line-height:3;">功能:上传cp自定义的数据</span>
</p>
<p style="font-size:13.33px;white-space:normal;">
<span style="font-size:14px;line-height:3;">说明:上传cp自定义的数据</span>
</p>
<p style="font-size:13.33px;white-space:normal;">
<span style="line-height:3;font-size:14px;">案例: </span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance(). uploadNode(activity,"eventCode ","eventParams");</pre>
<p>
<br />
</p>
<h4 style="font-size:13.33px;white-space:normal;">
<strong style="font-size:14px;">3.4 获取配置参数值</strong>
</h4>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public String getExtrasConfig(String key)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:获取配置参数值</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:运行游戏自定义参数配置在quicksdk.xml文件中,根据一定的规则,在打包的时候进行改变</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="font-size:14px;">案例</span><span style="font-size:14px;">:</span></span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().getExtrasConfig("key");</pre>
<h4>
<span style="line-height:3;font-size:14px;">3.5 是否支持指定方法</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public boolean isFunctionSupported(final int funcType)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:是否支持指定方法</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:某些SDK具有打开关闭浮动工具栏、进入用户中心、进入论坛等功能,该方法可以用来判断是否支持,方便游戏中进行判断. 指定方法的定义请参见SDK库com.quicksdk.FuncType的定义</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="font-size:14px;">案例</span><span style="font-size:14px;">:</span></span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().isFunctionSupported(FuncType.HIDE_TOOLBAR); //是否支持隐藏悬浮框功能</pre>
<h4>
<span style="line-height:3;font-size:14px;"><strong>3.6 调用指定方法</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">方法:public String callFunction(final Activity activity, final int funcType)</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:调用指定方法</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:某些渠道有显示/隐藏悬浮按扭、进入用户中心、进入论坛等功能,该方法可以用来调用第三方渠道支持的方法,调用前请先用isFunctionSupported进行判断。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="font-size:14px;">案例</span>:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().callFunction(activity, FuncType.HIDE_TOOLBAR); //调用隐藏悬浮框的方法</pre>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>3.7 </strong><strong>调用QuickSDK客服插件(客服属收费项目,不需要就不接)</strong></span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">方法:public <span style="font-size:14px;white-space:normal;">void</span> callPlugin(final Activity activity, final int funcType,final Object ... infos)</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">功能:调用显示客服插件的方法</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">说明:母包实现按钮调用该方法,然后到QuickSDK后台添加客服插件(QuickSDKCustomService)进行打包。</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">案例:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().callPlugin(MainActivity.this, FuncType.CUSTOM, "1000","嘻嘻哈哈","zzzz","1");//后四个参数请依次传入 角色id,角色名,区服名,vip等级</pre>
<p>
<br />
</p>
<h4 style="white-space:normal;">
<span style="font-size:14px;"><strong><span style="line-height:2.5;">3.8 </span></strong><strong><span style="line-height:2.5;">调用渠道带参数的拓展功能(以下以渠道分享功能为例)</span></strong></span>
</h4>
<p>
<span style="line-height:2.5;font-size:14px;"><strong><strong style="font-family:微软雅黑, " margin:0px;padding:0px;color:#323232;font-size:14px;white-space:normal;background-color:#ffffff;"="">ShareInfo类字段说明</strong></strong></span>
</p>
<p>
<span style="font-size:14px;"><strong> <br />
<table bordercolor="#000000" style="width:100%;" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<span style="line-height:2.5;"><span style="font-size:14px;"></span><span style="font-size:14px;">参数名称</span></span>
</td>
<td>
<span style="color:#323232;font-family:微软雅黑, " font-size:14px;white-space:normal;background-color:#ffffff;"="">数据类型</span><br />
</td>
<td>
<span style="font-size:14px;">说明</span>
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">title</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span>
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享标题</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">content</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;"></span><span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享内容</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">imgPath</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享图片本地地址</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">imgUrl</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享图片网络地址</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">url</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享链接</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">type</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享类型</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">shareTo</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">分享到哪里</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:2.5;font-size:14px;">extenal</span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">string</span><span style="line-height:2.5;font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:2.5;font-size:14px;">额外备注</span><br />
</td>
</tr>
</tbody>
</table>
</strong></span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">类名:com.quicksdk.Extend</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">方法:public void callFunctionWithParams(final Activity activity, final int funcType,final Object ... infos)</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">功能:调用渠道的含参方法</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">说明:以下案例已分享为例 母包调用接口传入分享对象,打出对应渠道包之后即可调起对应渠道的分享功能。</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">案例:</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<pre class="brush:js;toolbar:false">Extend.getInstance().callFunctionWithParams(MainActivity.this, FuncType.SHARE,shareInfo);</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;"><strong>3.9 调用实名认证接口(登录成功后进行调用,目前渠道基本都做了实名跟防沉迷,游戏可以不用调此接口获取实名信息来做防沉迷限制)</strong></span>
</h4>
<span style="font-size:14px;"><br />
类名:com.quicksdk.Extend<br />
<br />
方法:Extend.getInstance().callFunctionWithParamsCallBack(activity, FuncType.REAL_NAME_REGISTER, callback)<br />
<br />
功能:获取渠道实名认证信息<br />
<br />
</span>
<p>
<br />
</p>
<p>
<span style="font-size:14px;white-space:normal;">说明:</span><span style="font-size:14px;white-space:normal;"></span><span style="font-size:14px;white-space:normal;">callback的onSuccess将返回封装的json实体;uid (表示用户id),age (表示年龄, 如果渠道没返回默认为-1),realName (是否已实名: true表示已实名, false表示未实名;如果渠道没返回默认为 false),resumeGame (渠道实名认证失败之后是否可以继续游戏 :true表示可以, false表示不可以;如果渠道没返回默认为 true),other (预留字段,如果渠道没返回默认为""的字符串)</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">返回数据示例:</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">{"uid":"jc453530202","resumeGame":true,"realName":false,"other":"","age":-1}</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><span style="font-size:14px;white-space:normal;">案例:</span></span>
</p>
<p>
<span style="font-size:16px;"><span style="font-size:14px;white-space:normal;"> </span></span>
</p>
<pre class="brush:js;toolbar:false">private void verifyRealName() {
final Activity activity = this;
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// 判断渠道是否支持实名认证功能
if (Extend.getInstance().isFunctionSupported(FuncType.REAL_NAME_REGISTER)) {
Extend.getInstance().callFunctionWithParamsCallBack(activity, FuncType.REAL_NAME_REGISTER, new BaseCallBack() {
@Override
public void onSuccess(Object... arg0) {
if (arg0 != null && arg0.length > 0) {
JSONObject jsonObject = (JSONObject) arg0[0];
Log.d("json", "==========" + jsonObject.toString());
try {
// 用户id
String uid = jsonObject.getString("uid");
// 年龄, 如果渠道没返回默认为-1
int age = jsonObject.getInt("age");
// 是否已实名 true表示已实名
// false表示未实名,如果渠道没返回默认为false
boolean realName = jsonObject.getBoolean("realName");
// oppo实名认证失败之后是否可以继续游戏 true表示可以
// false表示不可以,如果渠道没返回默认为true
boolean resumeGame = jsonObject.getBoolean("resumeGame");
// 预留字段,如果渠道没返回默认为""的字符串
String other = jsonObject.getString("other");
// 游戏根据返回信息做对应的逻辑处理
} catch (JSONException e) {
}
}
}
@Override
public void onFailed(Object... arg0) {
}
});
}
}
});
}</pre>
<p>
<br />
</p>
<p>
<span style="font-size:16px;"><br />
</span>
</p>
<p>
<span style="font-size:16px;"><span style="font-size:14px;"><br />
</span></span>
</p>
<h4>
<span style="font-size:16px;"><span style="font-size:14px;">3.10 调用</span><span style="font-size:14px;">隐私弹窗接口(如游戏自己有隐私弹窗则不必再调用)</span></span>
</h4>
<p>
<span style="font-size:16px;"><span style="font-size:14px;"><br />
</span></span>
</p>
<p>
<span style="font-size:16px;"><span style="font-size:14px;">详细操作见文档:<a href="https://www.quicksdk.com/doc-1042.html?cid=32" target="_blank"><u>游戏如何调用QuickSDK的隐私弹窗</u><u></u></a></span></span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:16px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;"><strong>4.其他</strong></span>
</h3>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;">4.1 关于混淆 </span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">QuickSDK 已经经过了混淆,如果要混淆java代码,请不要混淆联编的jar包中的类。可以添加以下类到proguard配置,排除在混淆之外:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">-keep class com.quicksdk.** { *; }</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>4.2 配置自定义参数</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">当游戏当游戏需要设置渠道相关的参数时。可以通过Quick后台添加自定义参数,在渠道列表中配置对应的值,最后通过Extend.getInstance().getExtrasConfig(String key)可以获取到该值。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;">4.3 测试要求</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">所有接口接入完成后,生成的母包,应严格按照母包测试用例进行测试,测试通过后,方可打出正确的渠道包。</span>
</p>
<p>
<br />
</p>