更新日期:2025年 03月 18日海外版Android接入文档
<p>
<strong style="color:#E56600;font-size:14px;"><span style="color:#E53333;">注意:Facebook SDK 升级到v13.0.0版本,需要配置facebook_client_token参数</span></strong>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">在AndroidManifest文件中添加:</span>
</p>
<p>
<span style="font-size:16px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token"/></pre>
<br />
<p>
<span style="font-size:14px;">在res/values/strings.xml中添加: </span>
</p>
<p>
<span style="font-size:16px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><string name="facebook_client_token">replace your client token</string></pre>
<br />
<p>
<br />
</p>
<p>
<span style="color:#E53333;font-size:14px;">facebook_client_token的值在facebook后台:设置(Settings) --> 高级(Advanced) --> 安全(Security) --> 客户端口令(Client token)中获取:</span>
</p>
<p>
<span style="color:#E53333;font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;color:#E53333;"><img src="https://staticsite.quickapi.net/data/newFiles/20220316/20220316160953oSbP904.jpg" alt="" /><br />
</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">一、开发环境</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">1.1.开发工具:Android Studio</span>
</p>
<br />
<span style="font-size:14px;">1.2.Android Gradle 插件版本最低为3.3.3</span>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">classpath 'com.android.tools.build:gradle:3.3.3'</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><span style="color:#333333;font-family:"font-size:16px;orphans:4;white-space:pre-wrap;background-color:#FFFFFF;">因Android 11新特性需要,android gradle插件需要升级至对应版本的最新版本</span></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><img src="https://staticsite.quickapi.net/data/newFiles/20220105/202201051438416D6N658.png" alt="" /><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">1.3.gradle.properties配置AndroidX</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<pre class="brush:js;toolbar:false">android.useAndroidX=true
android.enableJetifier=true</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">1.4.minSdkVersion 版本最低为16,targetSdkVersion根据Google Play的要求设置</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">二、工程配置</span>
</h3>
<span style="font-size:14px;"><br />
</span>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">2.1. 拷贝SDK文件、配置域名</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">将SDK资源libs目录所需资源拷贝到Android项目libs目录,</span><br />
<br />
<span style="font-size:14px;">quickgame_hw_x.x.x.aar为必需资源,x.x.x为具体版本</span><br />
<br />
<span style="font-size:14px;">将SDK资源assets/QHinfo 拷贝到Android项目assets目录</span><br />
<br />
<span style="font-size:14px;">将SDK对应IP解析后的域名写入assets/QHinfo文件中(<span style="color:#E53333;">注意需使用文本编辑器打开写入,域名地址</span><span style="color:#E53333;">前面要加上http://</span><span style="color:#E53333;"></span>)</span><br />
<br />
<h4>
<span style="font-size:14px;">2.2. 修改build.gradle配置,可参考demo</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">repositories {
flatDir {
dirs 'libs' // aar文件目录
}
}
dependencies {
//以下为必需依赖的库
implementation(name: 'quickgame_hw_x.x.x', ext: 'aar') //x.x.x为具体版本
implementation 'com.android.billingclient:billing:7.0.0'//google内购
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.10"
//以下为选接库,x.x.x为具体版本,以SDK资源里的对接文档为准
implementation 'com.google.android.gms:play-services-auth:x.x.x' //谷歌登录
implementation 'com.google.android.gms:play-services-ads-identifier:x.x.x' // adid获取
implementation 'com.facebook.android:facebook-android-sdk:x.x.x' //Facebook
implementation 'com.appsflyer:af-android-sdk:x.x.x' //appsflyer
implementation 'com.adjust.sdk:adjust-android:x.x.x' //adjust
implementation 'com.android.installreferrer:installreferrer:x.x.x' //appsflyer、adjust需要
implementation 'com.twitter.sdk.android:twitter:x.x.x'//Twitter登录
implementation (name: 'line_sdk_x.x.x',ext: 'aar')//Line登录
implementation files('libs/libTapDB-x.x.x.aar') //tapdb
implementation files('libs/TalkingData_GP_GameAnalytics_Vx.x.x.jar') //TalkingData
}</pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.3. 修改AndroidManifest文件</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">在application节点下配置</span>
</p>
<br />
<p>
<span style="font-size:14px;">谷歌登录配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><!--Google登录配置,没有Google登录可以不加 -->
<
meta-data
android:name="google-signin-client_id"
android:value="替换为google后台申请的clientid"/></pre>
<br />
<p>
<span style="font-size:14px;color:#E53333;">注:Google后台有android client 和 web client 两种,这里使用的是web client id,需跟运营人员确认清楚</span><span style="font-size:14px;color:#E53333;"></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">AppsFlyer配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><!--注意 value直接写在这里,不能使用@string/xxx的方式 -->
<
meta-data
android:name="DEV_KEY"
android:value="替换为在AppsFlyer后台申请的Dev_Key" /></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">Adjust配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="adjust.Token"
android:value="替换成adjust_token"/>
<!--adjust沙盒环境配置,正式版本需要删除以下配置,或者配置成0-->
<
meta-data
android:name="adjust.Debug"
android:value="1:沙盒;0:正式"/>
<!-- 以下为SDK内预设的事件,配置后sdk内部会自动上报,选接-->
<
meta-data
android:name="adj_login_token"
android:value="替换成登录事件的token" />
<
meta-data
android:name="adj_complete_registration_token"
android:value="替换成注册事件的token" />
<
meta-data
android:name="adj_purchase_token"
android:value="替换成google内购事件的token" /></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">Facebook配置(按需配置</span><span style="font-size:14px;">)</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20230801/20230801165727WWvA702.png" alt="" />
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20230801/20230801165734D6PY898.png" alt="" />
</p>
<p>
<br />
</p>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">TalkingData配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">游戏的Application继承com.quickgame.android.sdk.QuickSdkApplication<br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="TD_AppID"
android:value="替换成TD_appid"/></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">TapDB配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="tapdb_appid"
android:value="替换成tapdb_appid"/>
<
meta-data
android:name="tapdb_channel"
android:value="替换成app当前渠道名"/></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">Twitter配置(按需配置)</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="TWITTER_KEY"
android:value="替换成Twitter的API key"/>
<
meta-data
android:name="TWITTER_SECRET"
android:value="替换成Twitter的API secret key"/></pre>
<br />
<p>
<span style="font-size:14px;">Line登录配置(按需配置</span><strong style="font-size:14px;">)</strong>
</p>
<p>
<strong style="font-size:14px;"><img src="https://staticsite.quickapi.net/data/newFiles/20230801/202308011658352zKl157.png" alt="" /><br />
</strong>
</p>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">三、接口调用</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.1. 获取SDK实例(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">接口没有说明调用类或调用实例时,默认使用该实例</span><br />
<br />
<pre class="brush:js;toolbar:false">QuickGameManager sdkInstance = QuickGameManager.getInstance();</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.2. 添加生命周期接口(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">在主Activity的生命周期调用SDK实例的同名方法</span><br />
<br />
<pre class="brush:js;toolbar:false">@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sdkInstance.onCreate(this);
}
@Override
protected void onStart() {
super.onStart();
sdkInstance.onStart(this);
}
@Override
protected void onResume() {
super.onResume();
sdkInstance.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
sdkInstance.onPause(this);
}
@Override
protected void onStop() {
super.onStop();
sdkInstance.onStop(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
sdkInstance.onDestroy(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
sdkInstance.onActivityResult(requestCode,resultCode,data);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
sdkInstance.onRequestPermissionsResult(requestCode,permissions,grantResults);
}</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.3. 初始化接口(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调用方法:</span>
</p>
<br />
<pre class="brush:js;toolbar:false">public void init(Activity activity,String productCode,QuickGameManager.SDKCallback sdkCallback)</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">productCode 是在Quick后台创建的应用的ProductCode</span>
</p>
<br />
<span style="font-size:14px;">sdkCallback 是SDK通知游戏的回调实例。包括初始化成功、登录完成、退出登录、google订阅类商品回调这四个事件。</span><br />
<br />
<span style="font-size:14px;">示例:</span><br />
<br />
<pre class="brush:js;toolbar:false">sdkInstance.init(this, "quick后台创建产品的ProdectCode", new QuickGameManager.SDKCallback() {
@Override
public void onInitFinished(boolean isSuccess,String error){
if (isSuccess) {
//初始化成功
} else {
Toast.makeText(GameActivity.this, "初始化失败", Toast.LENGTH_LONG).show();
}
}
@Override
public void onLoginFinished(QGUserData userInfo, QGUserHolder loginState) {
//登录成功
if (loginState.getStateCode() == QGUserHolder.LOGIN_SUCCESS) {
String uid = userInfo.getUid(); //作为唯一标示
String token = userInfo.getToken();
//判断登录方式: 6:Facebook,8:Google,9:Naver,10:Twitter,11:Line,12:迁移码,14:VK
String logintype = userInfo.getOpenType();
boolean isGuest = userInfo.isGuest(); //判断是否为游客
} else if (loginState.getStateCode() == QGUserHolder.LOGIN_CANCEL) {
Toast.makeText(GameActivity.this, "登录取消", Toast.LENGTH_LONG).show();
} else if (loginState.getStateCode() == QGUserHolder.LOGIN_FAILED) {
Toast.makeText(GameActivity.this, "登录失败", Toast.LENGTH_LONG).show();
}
}
@Override
public void onLogout() {
//注销账号成功,注销账号成功后,游戏应从游戏的界面退回到登录界面中
}
@Override
public void onGooglePlaySub(String productId, String sdkOrder, boolean isAutoRenewing, boolean isAcknowledged) {
//游戏内没有Google订阅类商品可忽略该回调
Log.d("", "商品id=" + productId + "&&sdkOrder=" + sdkOrder + "&&是否自动续订=" + isAutoRenewing + "&&是否确认" + isAcknowledged);
}
});</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.4. 登录接口(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调用方法:</span>
</p>
<br />
<pre class="brush:js;toolbar:false">public void login(Activity activity)</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">示例:</span>
</p>
<br />
<pre class="brush:js;toolbar:false">sdkInstance.login(this);</pre>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">显示/关闭悬浮窗接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">如需要显示悬浮窗可以在登录状态下调用,同时sdk后台要打开截图的配置</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">//显示悬浮窗
public void showFloatView(Activity activity)
//关闭悬浮窗
public void closeFloatView(Activity activity)</pre>
<p>
<br />
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20220704/20220704155944GynQ266.png" alt="" />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.5. 注销接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调用方法:</span>
</p>
<br />
<pre class="brush:js;toolbar:false">public void logout(Activity activity)</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">示例:</span>
</p>
<pre class="brush:js;toolbar:false">sdkInstance.logout(this);</pre>
<br />
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.6. 支付接口(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调用方法:</span>
</p>
<br />
<pre class="brush:js;toolbar:false">public void pay(Activity activity,QGOrderInfo orderInfo,QGRoleInfo roleInfo,QGPaymentCallback paymentCallback);</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">orderInfo 是订单信息</span>
</p>
<br />
<span style="font-size:14px;">roleInfo 是游戏内该玩家的角色信息</span><br />
<br />
<span style="font-size:14px;">paymentCallback 支付结果的通知回调,包括支付成功、支付失败、支付取消三种事件</span><br />
<br />
<span style="font-size:14px;"><span style="color:#E53333;">注:</span> </span><br />
<br />
<span style="font-size:14px;">使用第三方支付时,sdk不会通知paymentCallback回调</span><br />
<br />
<p>
<span style="font-size:14px;">orderInfo.setGoodsId() 传入的商品id是Google Play后台配置商品id</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>QGOrderInfo 方法说明</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>方法</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>必填</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>说明</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">setProductOrderId</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">游戏生成的订单唯一标识</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">setGoodsId</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;"><span style="font-size:14px;">sdk后台以及</span><span style="white-space:normal;font-size:14px;">Google Play后台</span><span style="font-size:14px;">配置的商品ID</span></span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">setOrderSubject</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">商品名称</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">setAmount</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">商品金额;该参数只用于三方统计,不用于支付</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:16px;background-color:#FFFFFF;"><span style="font-size:14px;">setSugge</span><span style="font-size:14px;">stCurrency</span></span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;box-sizing:border-box;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">金额货币单位代码,需和金额对应</span><br style="white-space:normal;box-sizing:border-box;color:#333333;font-family:"font-size:16px;background-color:#FFFFFF;" />
<a href="https://en.wikipedia.org/wiki/ISO_4217#Active_codes" target="_blank"><span style="color:#4183C4;background-color:#FFFFFF;font-size:14px;"><span style="box-sizing:border-box;cursor:pointer;word-break:break-all;font-size:14px;">https://en.wikipedia.org/wiki/ISO_4217#Active_codes</span></span><span style="font-size:14px;"></span></a><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">setExtrasParams</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">否</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">透传参数,请勿传特殊符号,如无法避免建议进行base64编码</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">setSkuType</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">否</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">商品类型,默认(inapp)是消耗性,订阅请设置为subs</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">setCallbackURL</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">否</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;box-sizing:border-box;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">支付回调地址,可以配置在SDK后台</span><br style="white-space:normal;box-sizing:border-box;color:#333333;font-family:"font-size:16px;background-color:#F8F8F8;" />
<span style="white-space:normal;box-sizing:border-box;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">同时配置时,优先读取后台配置的回调地址</span><span style="font-size:14px;"></span><br />
</td>
</tr>
</tbody>
</table>
<br />
<strong></strong><strong></strong><strong>QGRoleInfo 方法说明</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>方法</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>必填</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;font-weight:700;background-color:#F8F8F8;"><strong>说明</strong></span><span style="font-size:14px;"><strong></strong></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">setRoleName</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">游戏内角色的名称</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">setRoleLevel</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#F8F8F8;">游戏内角色的等级</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">setServerName</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">游戏内角色区服名称</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
setRoleId<br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><br />
</td>
<td>
游戏内角色ID<br />
</td>
</tr>
<tr>
<td>
setServerId<br />
</td>
<td>
<span style="white-space:normal;color:#333333;font-family:"font-size:14px;background-color:#FFFFFF;">是</span><br />
</td>
<td>
游戏内角色的区服ID<br />
</td>
</tr>
</tbody>
</table>
<br />
<br />
</span>
</p>
<br />
<span style="font-size:14px;">示例:</span><br />
<br />
<pre class="brush:js;toolbar:false">QGOrderInfo orderInfo = new QGOrderInfo();
orderInfo.setOrderSubject("商品名称");
orderInfo.setProductOrderId("游戏生成的唯一订单号");
orderInfo.setExtrasParams("透传参数");
//透传参数请勿传特殊符号,如果无法避免建议进行base64编码
orderInfo.setGoodsId("商品ID");
//需要和SDK后台配置的商品id对应
orderInfo.setAmount(10.99);
//商品金额,需要和下方的货币单位对应,用于appsflyer等数据SDK统计
orderInfo.setSuggestCurrency("USD");
//USD为美元的货币单位,用于appsflyer等数据SDK统计,以游戏实际货币单位为准
//货币单位参考链接:https://en.wikipedia.org/wiki/ISO_4217#Active_codes
orderInfo.setSkuType("inapp");
// 默认inapp消耗性,订阅请设置为subs
orderInfo.setCallbackURL("callbackUrl");
//支付回调地址,可选参数,可以配置在SDK后台;优先读取后台配置的回调地址
QGRoleInfo roleInfo = new QGRoleInfo();
roleInfo.setRoleId("角色ID");
roleInfo.setServerId("服务器ID");
roleInfo.setRoleName("角色名称");
roleInfo.setRoleLevel("角色等级");
roleInfo.setServerName("服务器名称");
sdkInstance.pay(this, orderInfo, roleInfo, new QuickGameManager.QGPaymentCallback() {
@Override
public void onPaySuccess(String orderId, String orderNo, String goodsId, String extrasParams) {
//返回支付时传入的游戏订单号、SDK订单号、商品ID和透传参数
}
@Override
public void onPayFailed(String orderId, String orderNo,String errorMessage) {
//返回支付时传入的游戏订单号、SDK订单号和错误信息
}
@Override
public void onPayCancel(String orderId, String orderNo,String errorMessage) {
//返回支付时传入的游戏订单号、SDK订单号和错误信息
}
});</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.7. 上传角色信息接口(必接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void submitRoleInfo(QGRoleInfo roleInfo)
//此为SDK角色信息接口
</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">roleInfo 角色信息</span>
</p>
<br />
<span style="font-size:14px;">示例:</span><br />
<br />
<pre class="brush:js;toolbar:false">QGRoleInfo roleInfo = new QGRoleInfo();
roleInfo.setRoleId("角色ID");
roleInfo.setRoleName("角色名称");
roleInfo.setRoleLevel("角色等级");
roleInfo.setServerId("服务器ID");
roleInfo.setServerName("服务器名称");
roleInfo.setVipLevel("vip等级");
sdkInstance.submitRoleInfo(roleInfo);</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.8. 账号绑定接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">若未绑定指定平台的用户,调用会走绑定流程;若已经绑定用户,调用该方法则为解绑账。接收绑定结果需要设置绑定回调setUserBindCallback,具体见下方示例代码</span>
</p>
<br />
<span style="font-size:14px;">调用方法:</span><br />
<br />
<pre class="brush:js;toolbar:false">public void bindUser(String loginOpenType)</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">loginOpenType 表示要绑定或解绑的平台,值如下表</span>
</p>
<p>
<br />
</p>
<p>
<table style="width:70%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">loginOpenType</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">对应绑定的登录方式</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_GOOGLE</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Google+登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_FACEBOOK</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Fackbook登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_NAVER</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Naver登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_TWITTER</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Twitter登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_LINE</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Line登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_PLAYGAME</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Play游戏登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_EMAIL</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">Email登录</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">QGConstant.LOGIN_OPEN_TYPE_VK</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">VK登录</span><br />
</td>
</tr>
</tbody>
</table>
</p>
<span style="font-size:14px;">示例:</span><br />
<br />
<pre class="brush:js;toolbar:false">QuickGameManager.getInstance().setUserBindCallback(new QuickGameManager.QGUserBindCallback() {
@Override
public void onBindInfoChanged(String uid, boolean isBindUnBindSuccess,QGUserBindInfo qgUserBindInfo) {
//isBindUnBindSuccess :绑定或者解绑是否成功
if (qgUserBindInfo.isBindFacebook()) {
Log.d("mainActivity", "绑定facebook");
} else {
Log.d("GameActivity", "解绑facebook");
}
}
@Override
public void onexitUserCenter() {
Log.e("GameActivity", "退出用户中心");
}
});
QuickGameManager.getInstance().bindUser(QGConstant.LOGIN_OPEN_TYPE_FACEBOOK);</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.9. Facebook分享接口</span>
</h4>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">//链接分享
public void facebookSharePost(Activity activity, String url, FacebookCallback<Sharer.Result> mShareCallback)
//图片分享
public void facebookShareBitmap(Activity activity, Bitmap bitmap, FacebookCallback<Sharer.Result> mShareCallback)</pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">activity 当前activity</span>
</p>
<br />
<span style="font-size:14px;">url 需要分享的网址</span><br />
<br />
<span style="font-size:14px;">bitmap 需要分享的图片</span><br />
<br />
<span style="font-size:14px;">mShareCallback facebook分享回调</span><br />
<br />
<h4>
<span style="font-size:14px;">3.10. Facebook事件记录接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//SDK内部已经记录的事件(无需再处理)
完成注册 标准事件,事件名: fb_mobile_complete_registration,
//完成教程,自定义事件,事件名: Complete Tutorial
public void logCompleteTutorialEvent(boolean success)
true:完成新手指导,false:未完成
//完成创角,自定义事件,事件名:Create Role
public void logCreateRoleEvent(String uid, String name)
uid:用户uid ,name:角色名
//角色升级,自定义事件,事件名: Achieve Level
public void logAchieveLevelEvent (String level)
level:角色等级
//成就解锁, 标准事件,事件名:fb_mobile_achievement_unlocked
public void logUnlockedAchievementEvent (String description, String contentType)
description:成就描述,如“击杀100人头”
contentType:成就类型
//发起结账,标准事件,事件名:fb_mobile_initiated_checkout
public void logInitiateCheckoutEvent (String contentData, String contentId, String contentType, int numItems, boolean paymentInfoAvailable, String currency, double totalPrice)
contentData:商品描述
contentId:商品ID,付费点
contentType:商品类型
numItems:购买商品数量
currency:货币名称,如“USD”
totalPrice:总价
//购买事件,自定义事件,事件名: Purchase
public void logPurchaseEvent(String contentId,String contentType,double valToSum)
contentId:商品ID,付费点
contentType:单位,如“USD”
valToSum:商品价格
//购买完成,标准事件,事件名:fb_mobile_purchase
public void logFbPurchase(double purchaseAmount, String currency, Bundle parameters)
purchaseAmount:购买金额
currency:货币单位,如"USD"
parameters:附加信息,可为null
注意:该方法仅在关闭fb自动记录事件时 或 统计第三方支付(非Google内购)时调用,否则会造成fb的标准购买事件重复统计
//游戏根据自己需要,自定义的事件
public void logEvent(String eventName)
public void logEvent(String eventName, Bundle parameters)
public void logEvent(String eventName,double valueToSum)
public void logEvent(String eventName,double valueToSum,Bundle parameters)</pre>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.11. Adjust接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//普通事件上报
public void trackAdjustEvent(String eventToken)
eventToken:事件token,由adjust后台申请得到
//支付事件上报
public void trackAdjustEvent(String eventToken, String orderId, double amount, String currency)
eventToken:支付事件token,由adjust后台申请得到
orderId:订单编号
amount:支付金额
currency:支付货币类型
支付事件的调用时机:
1. 谷歌内购的上报
不配置sdk内的google内购事件token时,可以在sdk支付接口的支付成功回调中上报
2. 第三方支付的上报
支付成功后,sdk服务器通知游戏服务器的CallbackUrl,游戏服务器通过参数中的paytype判断是否是第三方支付,然后通知游戏调用该接口(paytype值不等于8或30 就为第三方支付)</pre>
<br />
<span style="font-size:14px;"><br />
</span>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.12. AppsFlyer接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<pre class="brush:js;toolbar:false">// SDK内部已经投递的事件(无需再处理)
1. 完成注册事件:AFInAppEventType.COMPLETE_REGISTRATION(af_complete_registration)
2. 登陆事件:AFInAppEventType.LOGIN (af_login)
3. google内购支付事件:AFInAppEventType.PURCHASE (af_purchase)
支付事件中的金额和货币单位是从支付接口的orderInfo读取的
//完成教程事件投递接口,对应AF事件名:af_tutorial_completion
public void completeTutorial(boolean success)
//自定义事件
public void appsFlyerEvent(String eventName,Map<String,Object> parameters)
eventName: 事件名
parameters: 事件参数
//第三方支付上报(非google内购)
//支付成功后,sdk服务器通知游戏服务器的CallbackUrl,游戏服务器通过参数中的paytype判断是否是第三方支付,然后通知游戏调用该接口(paytype值不等于8或30 就为第三方支付)
Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.ORDER_ID, "123123132"); //订单号,string
eventValues.put(AFInAppEventParameterName.REVENUE, 1.99); //价格,float
eventValues.put(AFInAppEventParameterName.CONTENT_TYPE, "60_Gems"); //商品名,string
eventValues.put(AFInAppEventParameterName.CONTENT_ID, "123123"); //商品id,string
eventValues.put(AFInAppEventParameterName.CURRENCY, "USD"); //货币单位,string
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.PURCHASE, eventValues);</pre>
<br />
<span style="font-size:14px;"></span>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.13. TalkingData接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//基本信息投递,一般发生在登录完成,角色信息有所改变之后
public void tdTrackBasicInfo(QGRoleInfo roleInfo, String uid, String userName, String accountType)
//发起支付请求时,记录当前订单
public void tdTrackPayRequest(String orderId,String iapId, double currencyAmount,String currencyType, double virtualCurrencyAmount, String paymentType)
orderId 订单ID,最多64个字符。用于唯一标识一次交易
iapId 商品ID,最多 32 个字符
currencyAmount 支付金额
currencyType 国际货币单位,如:USD
virtualCurrencyAmount 虚拟币金额
paymentType 支付的途径。例如:“google支付”
//支付成功之后,记录订单
public void tdTrackPaySuccess(String orderId)
//自定义事件
public void tdTrackCustomEvent(String eventId, final Map<String, Object> eventData)
eventId 自定义事件名称,最多支持 32 个字符
eventData key为自定义事件的参数名</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.14. TapDB接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//第三方支付成功上报
//支付成功后,sdk服务器通知游戏服务器的CallbackUrl,游戏服务器通过参数中的paytype判断是否是第三方支付,然后通知游戏调用该接口(paytype值不等于8或30 就为第三方支付)
public void tapDBPaySuccess(String orderId, String product, long amount, String currencyType, String payment)
orderId 可为空,长度大于0并小于等于256。订单ID。传递订单ID可进行排重,防止计算多次
product 可为空,长度大于0并小于等于256。商品名称
amount 不可为空,大于0并小于等于100000000000。充值金额。单位分,即无论什么币种,都需要乘以100
currencyType 可为空,货币类型。国际通行三字母表示法,为空时默认CNY。参考:人民币 CNY,美元 USD;欧元 EUR
payment 可为空,长度大于0并小于等于256。充值渠道</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.15. Twitter分享接口</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void shareToTwitter(Activity activity,String text,String url)
activity 当前activity
text 分享文本
url 分享链接</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">3.16. 其他接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false">//日志开关接口
QGLog.setDebugMod(boolean isShow) //在初始化init之后调用
//登录成功后调用,获取第三方登录绑定情况
public QGUserBindInfo getUserBindInfo()
//直接游客模式登录,不显示登录框
public void freeLogin(Activity activity)
//获取用户信息
public QGUserData getUser()
// 进入用户中心
public void enterUserCenter(Activity activity)
//获取设备号
public String getDeviceId(Activity activity)
</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">四、AndroidManifest更多设置(选接)</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">4.1. 游客绑定跳转到用户中心(默认跳转到邮箱绑定页面)</span>
</h4>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="noFloatViewBinding"
android:value="1" /></pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">1:打开</span><span style="white-space:pre;"> </span><span style="font-size:14px;">0:关闭</span>
</p>
<br />
<h4>
<span style="font-size:14px;">4.2. 登陆界面显示logo</span>
</h4>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><
meta-data
android:name="showLoginLogo"
android:value="true"/></pre>
<br />
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">4.3. quick后台渠道分包(渠道分包,用于quick后台数据区分)</span>
</h4>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><!--配置渠道id,需要为字符串-->
<
meta-data
android:name="channelId"
android:value="c1" /></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">4.4. 注册邮箱账号时,开启邮箱验证</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<pre class="brush:js;toolbar:false"><!--注册邮箱账号时 需要验证邮箱-->
<
meta-data
android:name="isNeedVerify"
android:value="true" /></pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">五、其他</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">5.1. 查询谷歌商品信息接口</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<pre class="brush:js;toolbar:false">public void queryGoogleSku(List<String> goodsIds, QueryGoogleSkuListener listener)</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">goodsIds 商品列表</span>
</p>
<br />
<span style="font-size:14px;">listener 异步返回的监听</span><br />
<br />
<span style="font-size:14px;">示例:</span><br />
<br />
<pre class="brush:js;toolbar:false">List<String> goodsIds = new ArrayList<>();
goodsIds.add("1");
goodsIds.add("2");
sdkInstance.queryGoogleSku(goodsIds, new QueryGoogleSkuListener() {
@Override
public void onResult(List<SkuDetails> skuDetailsList) {
for (SkuDetails sku : skuDetailsList) {
}
}
});</pre>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">5.2. 设置谷歌预注册回调</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">在调用初始化接口之前调用该方法</span><br />
<br />
<span style="font-size:14px;">当检测登录Play商店的账号是预注册用户时,SDK通过该回调通知游戏,后续可通过QGUserData的isPreReg()判断该用户是不是预注册用户。</span><br />
<br />
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void setGooglePreRegisterListener(GooglePreRegisterListener preRegisterListener)
示例
sdkInstance.setGooglePreRegisterListener(new GooglePreRegisterListener() {
@Override
public void onCheckSuccess() {
}
});
</pre>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">5.3. </span><span style="font-size:14px;">移除Http允许明文传输配置</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">sdk默认支持http明文传输,如果需要移除http明文传输支持</span><br />
<br />
<span style="font-size:14px;">在主module的res/xml目录下创建network_security_config.xml文件,内容如下</span><br />
<br />
<span style="font-size:14px;color:#E53333;">注意:文件名必须为network_security_config.xml</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><?xml version ="1.0" encoding ="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="false" />
</network-security-config></pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;">5.4. </span><span style="font-size:14px;">用户协议和隐私政策配置</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">用户协议和隐私政策默认显示在邮箱账户注册界面(显示内容在SDK后台-> 游戏管理 --> 应用扩展 里进行配置)</span><br />
<span style="font-size:14px;">如果需要在首次启动或者登录界面进行</span><span style="white-space:normal;font-size:14px;">显示</span><span style="font-size:14px;">,可在初始化接口前设置SDKConfig:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">SDKConfig sdkConfig = new SDKConfig.Builder()
//首次启动显示用户协议弹框,不同意无法进入登录界面
.showServicesAndPrivacyPolicy()
//在登录界面显示用户协议
.showLoginServicesAndPrivacyPolicy()
.build();
QuickGameManager.getInstance().setSdkConfig(sdkConfig);
</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>