幫助文檔

[TOC]

接入準備

Java Demo 工程地址

配置

開發環境需求

目前只支持Android Studio Demo

權限配置

配置權限,默認權限已經包含

```xml

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

``` 如果需要額外權限,請在module appAndroidManifest.xml 中添加

將快發提供的4.0sdk加入到你的項目中

  1. 請在項目目錄下的build.gradle中加入sdk庫的倉庫位置maven { url "https://github.com/KuaiFaMaster/kfsdk/raw/master" }
  2. 在app的build.gradle文件的dependencies中加入依賴的庫
    compile 'com.kf.framework:kf-utils:latest.integration@aar'
    compile 'com.kf.framework:volleyplus:latest.integration@aar' compile 'net.gameworks.gameplatform:kuaifa-sdk-login-pay-KFZS:latest.integration@aar'
    compile 'com.kf.framework:kfsdk:latest.integration@aar'

```xml

allprojects { repositories { maven { url "https://github.com/KuaiFaMaster/kfsdk/raw/master" } jcenter() } }

java dependencies { compile 'com.kf.framework:kfsdk:latest.integration@aar' compile 'com.kf.framework:kf-utils:latest.integration@aar' compile 'com.kf.framework:volleyplus:latest.integration@aar' compile 'net.gameworks.gameplatform:kuaifa-sdk-login-pay-KFZS:latest.integration@aar'

} ```

Application配置

請在module appAndroidManifest.xml 中按如下配置

```xml <application android:name="com.kf.framework.KFApplication" android:allowBackup="true">

```

如果有自定義Application請在自定義的Application繼承KFApplication

```java @Override public void onCreate() { super.onCreate();

@Override public void attachBaseContext(Context base) { super.attachBaseContext(base);

@Override public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); } ```

AndroidManifest.xml

添加meta-data 文件

    <meta-data
        android:name="HJR_CHANNEL"
        android:value="\ 0103" />
    <meta-data
        android:name="KF_GAMEKEY"
        android:value="xxxxxxx" />

注:KF_GAMEKEY 的值 需要向快發官方申請參數

配置參數

  1. 從快發提供的demo中拷貝assets目錄下的developer.properties到你的游戲工程中assets目錄或者在assets目錄新建developer.properties文件并拷貝如下示例文件的內容到新建的文件中
  2. 設置HJR_GAMEKEY的值為你從快發申請的值(聯系商務)
  3. 開啟快發的日志請將debugMode設置為0,關閉設置為1

developer.properties示例文件內容

[static]

快發gameKey,自己在快發官網申請或聯系快發商務獲取

HJR_GAMEKEY = c39697dd79df766cbf0834e1471cc1ae [dynamic]

debugMode = 0 //#日志開關 0:打開日志 1:關閉日志

channel = matrix

PluginUser= UserKF

PluginIAP= PayKF

PluginStatistic= StatisticKF****

screen_oriention = 1 //0:橫屏 1:豎屏

PluginIsKF=1 //0 開啟快發官方SDK 1 關閉開發官方SDK 測試支付時 可以設置為1

Activity生命周期函數

```java**** @Override protected void onResume() { SDKPluginWrapper.onResume(); super.onResume(); }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    SDKPluginWrapper.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
protected void onPause() {
    SDKPluginWrapper.onPause();
    super.onPause();
}

@Override
protected void onRestart() {
    SDKPluginWrapper.onRestart();
    super.onRestart();
}

@Override
public void onBackPressed() {
    SDKPluginWrapper.onRestart();
    super.onBackPressed();
}

@Override
protected void onNewIntent(Intent intent) {
    SDKPluginWrapper.onNewIntent(intent);
    super.onNewIntent(intent);
}

@Override
protected void onStop() {
    SDKPluginWrapper.onStop();
    super.onStop();
}

@Override
protected void onDestroy() {
    SDKPluginWrapper.onDestroy();
    super.onDestroy();
}

@Override
protected void onConfigurationChanged(Configuration newConfig){
    SDKPluginWrapper.onConfigurationChanged(newConfig);
    super.onConfigurationChanged(newConfig);
}

```

SDK初始化

初始化都在 Activity 的方法 onCreate

java KFSDK.getInstance().init(this);

init() 要求傳入上下文是Activity的上下文

SDK登陸

java KFSDKUser.getInstance().login();

SDK注銷

java KFSDKUser.getInstance().logout();

SDK退出

java KFSDKUser.getInstance().exit();

SDK切換賬號

java KFSDKUser.getInstance().changeAccout();

查詢實名狀態

java KFSDKUser.getInstance().getRealnameStatus();

提交實名信息

java KFSDKUser.getInstance().authRealName();

用戶模塊調用接口之后獲取回調信息

java KFSDKUser.getInstance().setListener(new KFSDKListener() { @Override public void onCallBack(int code, String msg) { //這里響應用戶模塊的回調 } } );

用戶模塊回調參數表

|參數|描述| |:--|:--| |UserWrapper.ACTION_RET_INIT_SUCCESS|渠道SDK初始化成功|
|UserWrapper.ACTION_RET_INIT_FAIL|渠道SDK初始化失敗|
|UserWrapper.ACTION_RET_LOGIN_SUCCESS|登錄成功|
|UserWrapper.ACTION_RET_LOGIN_FAIL|登錄失敗|
|UserWrapper.ACTION_RET_LOGOUT_SUCCESS|登出成功|
|UserWrapper.ACTION_RET_LOGOUT_FAIL|登出失敗|
|UserWrapper.ACTION_RET_CHANGE_ACCOUNT_SUCCESS|切換帳戶成功|
|UserWrapper.ACTION_RET_CHANGE_ACCOUNT_FAIL|切換帳戶失敗|
|UserWrapper.ACTION_RET_EXIT_SUCCESS|退出成功|
|UserWrapper.ACTION_RET_EXIT_FAIL|退出失敗|
|UserWrapper.ACTION_RET_AUTH_REALNAME_FAIL|實名失敗|
|UserWrapper.ACTION_RET_AUTH_REALNAME_SUCCESS|獲取實名信息成功(status:0未實名,1未成年,2成年; id_number:身份證號; real_name:姓名)|

支付模塊接入

調用支付

```java HashMap<String, Object> params = new HashMap<String, Object>(); params.put(Params.Pay.KEY_AMOUNT, "1");//購買商品金額
params.put(Params.Pay.KEY_ORDER_NO, "");//訂單號
params.put(Params.Pay.KEY_SERVER_ID, "1");//服務器ID
params.put(Params.Pay.KEY_PRODUCT_ID, "1");//購買商品的商品ID
params.put(Params.Pay.KEY_PRODUCT_NUM, "1");//購買商品的數量
params.put(Params.Pay.KEY_GAMEEXTEND, "");//額外參數,沒有傳""
params.put(Params.Pay.KEY_NOTIFY_URL, "");//應用方提供的支付結果通知uri,沒有先傳任意測試字符串
params.put(Params.Pay.KEY_CONIN_NAME, "金幣");
params.put(Params.Pay.KEY_RATE, "10");
params.put(Params.Pay.KEY_ROLE_ID, "1");
params.put(Params.Pay.KEY_ROLE_NAME, "11");
params.put(Params.Pay.KEY_ROLE_LEVEL, "1");
params.put(Params.Pay.KEY_PRODUCT_NAME, "商品名字");
params.put(Params.Pay.KEY_SERVER_NAME, "dd");//服務器ID

    KFSDKPay.getInstance().pay(params);

```

根據訂單號查詢訂單狀態

java String orderId = "1610139300002000"; HashMap<String, Object> params = new HashMap<String, Object>(); params.put(Params.Pay.KEY_PAY_ORDER_ID, orderId); KFSDKPay.getInstance().getOrderInfo(params);

支付模塊調用接口之后獲取回調信息

java KFSDKPay.getInstance().setListener(new KFSDKListener() { @Override public void onCallBack(int code, String msg) { //這里響應支付的結果 } } );

支付模塊參數回調表

|參數|描述| |:--|:--| |PayWrapper.PAYRESULT_SUCCESS|支付成功|
|PayWrapper.PAYRESULT_FAIL|支付失敗|
|PayWrapper.PAYRESULT_CANCEL|支付取消|
|PayWrapper.PAYRESULT_NETWORK_ERROR|支付網絡錯誤|

響應數據

模塊數據是一個個響應式變量,具體參照對應的對象表格

用戶模塊響應數據

|變量|類型|描述| |:--|:--|:--| |KFSDKUser.getInstance().getOpenId();|String|OpenId|
|KFSDKUser.getInstance().getUserId();|String|UserId|
|KFSDKUser.getInstance().getCid();|String|cId|
|KFSDKUser.getInstance().getToken();|String|Token|
|KFSDKUser.getInstance().getUserName();|String|UserName|

支付模塊響應數據

|變量|類型|描述| |:--|:--|:--| |KFSDKPay.getInstance().getOrderNo();|String|訂單號|
|KFSDKPay.getInstance().getOrderStatus();|int|支付狀態 0為成功,其他為失敗|
|KFSDKPay.getInstance().getOrderStatusMessage();|String|支付消息|

統計功能接入(必接的三個統計接口)

注:所有調用統計接口的參數都不能直接傳中文,如是中文則需要base64encode處理一次

進入游戲統計(enterGame)

java
HashMap<String, String> params = new HashMap<>();
//用戶標識:只用添加用戶ID即可
params.put(Params.Statistic.KEY_ROLE_USERMARK, KFSDKUser.getInstance().userId + "@" + KFSDKUser.getInstance().getChannel());
params.put(Params.Statistic.KEY_ROLE_ID, testRoleID);
params.put(Params.Statistic.KEY_ROLE_SERVER_ID, testServerID);
params.put(Params.Statistic.KEY_ROLE_NAME, testRoleName);
// 服務器名稱
params.put(Params.Statistic.KEY_ROLE_SERVER_NAME, testServerName);
// 角色等級
params.put(Params.Statistic.KEY_ROLE_LEVEL, testRoleLevel);
//角色等級
params.put(Params.Statistic.KEY_ROLE_GRADE, testRoleLevel);
KFSDKUser.getInstance().enterGame(params);

統計升級(recordRoleUp)

java
HashMap<String, String> params = new HashMap<String, String>();
params.put(Params.Statistic.KEY_ROLE_USERMARK, KFSDKUser.getInstance().getUserId() + "@"+KFSDKUser.getInstance().getChannel());
params.put(Params.Statistic.KEY_ROLE_ID, "1");
//角色賬號
params.put(Params.Statistic.KEY_ROLE_USERID, "lewan10086");
// 角色等級
params.put(Params.Statistic.KEY_ROLE_LEVEL, "15");
// 服務器ID
params.put(Params.Statistic.KEY_ROLE_SERVER_ID, "2");
// 角色昵稱
params.put(Params.Statistic.KEY_ROLE_NAME, "lewan10086");
//角色等級
params.put(Params.Statistic.KEY_ROLE_GRADE, "10");
// 服務器名稱
params.put(Params.Statistic.KEY_ROLE_SERVER_NAME, "服務器名稱");
KFSDKStatistic.getInstance().recordRoleUp(params);

統計角色創建(recordRoleCreate)

java
HashMap<String, String> params = new HashMap<String, String>();
params.put(Params.Statistic.KEY_ROLE_USERMARK, KFSDKUser.getInstance().getUserId() + "@"+KFSDKUser.getInstance().getChannel());
//角色id
params.put(Params.Statistic.KEY_ROLE_ID, "1222");
// 角色賬號
params.put(Params.Statistic.KEY_ROLE_USERID, "lewan10086");
// 角色等級
params.put(Params.Statistic.KEY_ROLE_LEVEL, "15");
// 角色昵稱
params.put(Params.Statistic.KEY_ROLE_NAME, "角色昵稱");
// 服務器id
params.put(Params.Statistic.KEY_ROLE_SERVER_ID, "2");
// 服務器名稱
params.put(Params.Statistic.KEY_ROLE_SERVER_NAME, "服務器名稱");
KFSDKStatistic.getInstance().recordRoleCreate(params);

国内2020揄拍人妻在线视频_亚洲日韩色欲色欲com_欧美日韩一区不卡在线观看