跳到主要内容

SDK 集成

在 Application 类中初始化 VGPLifecycle

若您的游戏没有 Application 类,请先创建一个。

首先导入我们的生命周期类:

import com.vgp.sdk.initializer.VGPLifeCycle;

在 Application 类的 onCreate 方法中添加我们的生命周期:

VGPLifeCycle.getInstance(this);

Image-sample

请在 androidmanifest.xml 中注册您的 Application 类:

Image-sample

实现接口 VGPSDKCallbackImpl

import com.vgp.sdk.interfaces.VGPSDKCallback;
import com.vgp.sdk.data.model.UserInfo;
//...

Public class VGPSDKCallbackImpl implements VGPSDKCallback() {

@Override
public void onUserLoginSuccess(UserInfo user) {
// 获取 VGPID
user.getId(); // 类型 long
// 获取 VGP 用户名
user.getUsername(); // 类型 string
// 获取当前用户的 VGP 会话令牌
user.getUser_token(); // 类型 string
}

@Override
public void onUserLogout() {

}

@Override
public void onPaymentFinished() {
// 支付结束
}

@Override
public void onPaymentSuccess() {
Toast.makeText(MainActivity.this, "Payment success", Toast.LENGTH_LONG).show();
// 记录购买
VGPTracking.getInstance().logPurchase(money, item_id);
}
}

初始化 SDK

将以下代码放在 Activity 的 onCreate 方法末尾:

import com.vgp.sdk.VGPGameSDK;

//.... 其他逻辑
VGPGameSDK.getInstance().init(this, this);

设置游戏版本

此代码用于我们的日志记录,请在应用启动时调用:

String game_version = "x.x.x"; // 重要:将此游戏版本改为与当前游戏更新版本一致,例如:1.1.1
VGPGameSDK.getInstance().setGameVersion(game_version);

显示登录对话框

用户点击游戏登录按钮时将显示登录对话框。

调用以下方法显示登录界面:

VGPGameSDK.getInstance().showLogin(MainActivity.this);

显示用户信息

在游戏设置中创建一个按钮用于显示账户信息,按钮文字为「账户信息」:

VGPGameSDK.getInstance().showUserInformation(MainActivity.this);

Image-sample

支付

发起支付时调用 VGPGameSDK.getInstance().purchase(MainActivity.this, vgpPayModel);

该函数属于 VGPGameSDK 库,接收两个参数:上下文(MainActivity.this)和 vgpPayModel 对象。

import com.vgp.sdk.model.VGPPayModel;

// 其他逻辑

String serverID = "your_server_id";// 用户所在服务器
String characterID = "your_character_id";// 购买该物品的角色 ID
String partner_token = "partner_token"; // 希望在游戏服务端收到的自定义字符串:0<= partner_token.length() <=50
String itemID = "gold.xxx.17000";// 物品 ID
VGPPayModel vgpPayModel = new VGPPayModel(serverID, characterID, partner_token, itemID);
VGPGameSDK.getInstance().purchase(MainActivity.this, vgpPayModel);

Image-sample

注意: 以上为示例充值列表,不同游戏的充值列表可能不同,我们会另行提供。

获取 SDK 登录状态

检查用户是否已登录可调用:

VGPGameSDK.getInstance().isSignedIn();

获取当前用户信息

获取当前用户信息可调用:

VGPGameSDK.getInstance().getUserInfo();

登出

在游戏设置中创建一个按钮用于登出账户,文字为「登出」:

VGPGameSDK.getInstance().logout();

Image-sample

以及

Image-sample

VGP 追踪

VGP Tracking 模块提供 3 种方法,用于向我们的营销团队记录分析数据。我们使用 Firebase 与 Facebook Analytics 进行记录。

记录角色升级

记录角色升级事件可调用:

import com.vgp.sdk.tracking.VGPTracking;
// 记录角色升级
VGPTracking.getInstance().logLevelUp(currentLevel); // 'currentLevel' 为 long 类型

示例: 用户达到 100 级时可这样记录:

import com.vgp.sdk.tracking.VGPTracking;
// 记录角色升级
VGPTracking.getInstance().logLevelUp(100);

记录创建角色

用户成功创建新角色时,使用以下方法记录事件:

import com.vgp.sdk.tracking.VGPTracking;
// 记录创建角色
VGPTracking.getInstance().logCreatedCharacter();

记录购买

用户成功购买并在其账户中增加虚拟货币(vxu)后,可使用以下方法记录购买事件及收入分成与物品 ID:

import com.vgp.sdk.tracking.VGPTracking;
// 记录购买
VGPTracking.getInstance().logPurchase(revenueShare, itemID); // 'revenueShare' 为 double 类型

请按「收入分成 (VND)」列中的金额记录。例如用户获得 85(虚)游戏内货币时,可这样记录:

import com.vgp.sdk.tracking.VGPTracking;
//... 其他逻辑
VGPTracking.getInstance().logPurchase(17000, "gold.xxx.17000");

即记录 17000 VND 为收入分成,物品 ID 为 "gold.xxx.17000"。

Image-sample

分享图片到 Facebook

若游戏支持将图片分享到 Facebook,可使用 VGP SDK 中集成的 Facebook 分享功能。

首先,在 AndroidManifest.xml 的 Application 标签下添加:

<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProviderFACEBOOKID"
android:exported="true" />

其中 Facebook ID 在 SDK 包中的 Readme 文件里提供。

例如,若游戏的 Facebook ID 为 123456789,可这样配置:

<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider123456789"
android:exported="true" />

Image-sample

其次,在 Activity 中添加:

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

分享到 Facebook 可使用以下代码。

使用远程 URL 分享:

String urlImage = "https://www.w3schools.com/w3css/img_fjords.jpg"; // 示例图片 URL
FacebookShareHelper.getInstance().shareImageToFB(MainActivity.this, urlImage, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.d("Facebook", "share success");
}
@Override
public void onError(FacebookException error) {
Log.d("Facebook", "share failed");
}
@Override
public void onCancel() {
Log.d("Facebook", "share cancelled");
}
});

或使用 Bitmap 分享:

Bitmap bitmap; // 要分享的 bitmap
FacebookShareHelper.getInstance().shareImageToFB(MainActivity.this, bitmap, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.d("Facebook", "share success");
}
@Override
public void onError(FacebookException error) {
Log.d("Facebook", "share failed");
}
@Override
public void onCancel() {
Log.d("Facebook", "share cancelled");
}
});

支付待处理

checkPaymentPending() 用于检查是否有待服务端处理的支付交易。在用户进入游戏服务器并显示游戏主界面时调用。

使用示例:

VGPGameSDK.getInstance().checkPaymentPending(MainActivity.this);

在此示例中,在 MainActivity 上下文中调用 checkPaymentPending(),以检查与该游戏服务器相关的待处理支付。

Image-sample

  • 在开始显示布局 2 时使用

参考

com.vgp.sdk.data.model.UserInfo

含义

存储主要用户信息

方法

方法含义
public long getId()获取 vgp id
public String getUser_token()获取 vgp 令牌以验证会话
public String getUsername()获取 vgp 用户名