### 關聯項目
- [fusionAAS服務端](https://gitee.com/fusionsdk/fusionaas)
- [fusionAAS安卓客戶端demo](https://gitee.com/fusionsdk/fusionAAS-android-demo)
### Demo文件
- 下載?[安卓Demo?APK例子](https://gitee.com/fusionsdk/fusionAAS-android-demo/demo.apk)
### 1.?資源導入
#### 1.1?Android?Studio資源導入
a)?拷貝`fusion_anti_addiction_sdk-release.aar`文件到lib目錄。
b)?配置項目app的`build.gradle`文件
```gradle
android?{
????//...
????repositories?{
????????flatDir?{
????????????dirs?'libs'
????????}
????}
}
dependencies?{
????//?...(其他依賴)
????implementation?(name:?'fusion_anti_addiction_sdk-release',?ext:?'aar')
}
```
#### 1.2?Eclipse資源導入
拷貝libs和assets下的文件到項目對應文件夾中即可。
#### 1.3?資源特別說明
a)?當項目`targetVersion?>?28`時候,將文件夾xml中對應的文件(`network_security_config.xml`)拷貝至項目res目錄下的xml文件夾中(若沒有xml文件夾則在項目res的目錄下新建)
b)?在`AndroidManifest.xml`文件中的application標簽下添加屬性`android:networkSecurityConfig="@xml/network_security_config"`
如圖:

c)?`res/values/strings.xml`里配置了SDK界面中使用的文字內容,如果需要替換,可以修改此文件;研發可自行合并`string.xml`中的鍵值到游戲的項目程序中。
### 2.?權限和Activity配置
#### 2.1?權限列表
```
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
```
如果項目本身已經添加過這些權限,則無需再重復添加。
#### 2.2 Activity添加
```xml
<!-- Fusion sdk需要的activity-->
<activity android:name="com.fusion.fusion_anti_addiction_sdk.core.FusionWebActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
```
注意,游戲的主Activity需要添加屬性`android:configChanges="keyboardHidden|orientation|screenSize"`
如圖:

#### 2.3?META添加

這里添加當前防成迷系統的自定義域名,請將我們提供的開源版的[fusionAAS](https://gitee.com/fusionsdk/fusionaas)部署到正式環境,并將系統的域名填入到META值中。
### 3. 方法調用
#### 3.1 初始化
```java
/**
* 初始化方法,必須第一時間調用
* @param appId 平臺分配的應用id
* @param context 當前上下文(Activity)
*/
public void initSdk(String appId, Activity context);
```
該方法默認使用系統控制彈出實名認證和實名認證頁面為全屏。
或
```java
/**
* 初始化方法,必須第一時間調用
* @param appId 平臺分配的應用id
* @param context 當前上下文(Activity)
* @param mode 實名制啟動模式
* @param screen 實名制彈出樣式
*/
public void initSdk(String appId, Activity context, int mode, String screen);
```
**mode**參數有兩種:
- `FusionAntiMode.LanchType.MODE_DEFAULT` //由系統自己控制彈出實名制界面
- `FusionAntiMode.LanchType.MODE_CUSTOMER` //由游戲自己控制彈出時間,調用對應方法
**screen**參數有兩種:
- `FusionAntiMode.ScreenType.SCREEN_DEFAULT` //全屏顯示實名制窗口
- `FusionAntiMode.ScreenType.SCREEN_MINI` //選擇mini窗口彈出
#### 3.2 注冊監聽
```java
FusionAntiSdk.getInstance().setRealNameListener(new IRealNameCallback() {
@Override
public void AllowLogin() {
Log.e(TAG,"AllowLogin call");
Toast.makeText(MainActivity.this,"允許登錄",Toast.LENGTH_SHORT).show();
}
@Override
public void ForbidLogin(String msg) {
Log.e(TAG,"ForbidLogin call = "+msg);
Toast.makeText(MainActivity.this,"不允許登錄",Toast.LENGTH_SHORT).show();
}
@Override
public void OffLine(String msg) {
Log.e(TAG,"OffLine call = "+msg);
Toast.makeText(MainActivity.this,"已經踢線",Toast.LENGTH_SHORT).show();
}
@Override
public void AllowPay() {
Log.e(TAG,"AllowPay call");
Toast.makeText(MainActivity.this,"允許支付",Toast.LENGTH_SHORT).show();
}
@Override
public void ForbidPay(String msg) {
Log.e(TAG,"ForbidPay call = "+msg);
Toast.makeText(MainActivity.this,"不允許支付",Toast.LENGTH_SHORT).show();
}
//以下方法只用CP主動調用實名制認證方法時候才有回調
@Override
public void BindSuccess() {
Log.e(TAG,"BindSuccess call");
Toast.makeText(MainActivity.this,"實名制綁定成功",Toast.LENGTH_SHORT).show();
}
@Override
public void BindFail(String msg) {
Log.e(TAG,"BindFail call = "+msg);
Toast.makeText(MainActivity.this,"實名制綁定失敗",Toast.LENGTH_SHORT).show();
}
});
```
#### 3.3 獲取當前用戶的實名制信息
```java
FusionAntiSdk.getInstance().getRealNameState(uid);
```
- 參數1:賬戶的唯一標識
- 在游戲完成賬號登錄。準備進入游戲時候調用
#### 3.4 驗證當前用戶是否可以支付
```java
FusionAntiSdk.getInstance().checkMoneyLimit(uid, Float.valueOf(money));
```
- 參數1:賬戶唯一標識(和登錄時候保持一致)
- 參數2:金額(元)
- 在用戶點擊任何支付下單前調用
#### 3.5 上報充值記錄
```java
FusionAntiSdk.getInstance().sendCharge(uid, itemId, Float.valueOf(money));
```
- 參數1:賬戶唯一標識(和登錄時候保持一致)
- 參數2:商品id
- 參數3:金額(元)
- 在用戶完成支付,游戲客戶端收到支付成功時候上報
#### 3.6 注銷
```java
FusionAntiSdk.getInstance().logout();
```
- 注銷當前用戶,在游戲注銷或者切換賬號時候調用
#### 3.7 Activity方法重寫
```java
FusionAntiSdk.getInstance().onActivityResult(requestCode, resultCode, data);
```
- 在游戲主Activity中重寫即可
### 4.?界面配置
根據需要,可以替換SDK中防沉迷相關界面涉及到的文字內容,請針對`res/values/strings.xml`文件進行編輯。