Gamota Android SDK
Change logs SDK version 5 to 6
Changes in configure SDK
-
Implement method Callback (Require)
@Override
public void onOpenGroup() {
}
@Override
public void onOpenFanpage() {
}
1. Integrate SDK
1.1. Integrate SDK using Android Studio (Gradle)
-
-
Step 1: App-level build.gradle
([project]/[app-module]/build.gradle):
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
defaultConfig {
multiDexEnabled true
}
dependencies {
implementation 'com.github.gmogame:sdk:main.6.1.8'
}
-
Step 2 : Project-level build.gradle ([project]/build.gradle):
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.google.gms:google-services:4.3.3'
}
}
allprojects {
// ...
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven {
url "https://jitpack.io"
credentials { username "jp_l28krc7a5uel5l48doj354csk9" }
}
}
}
-
Step 3: Config push using firebase
-
Add file google-services.json
to folder app

2. Client APIs
2.1. Initial SDK
Implement method Callback (Require)
@Override
public void onOpenGroup() {
}
@Override
public void onOpenFanpage() {
}
Step 1: App-level build.gradle ([project]/[app-module]/build.gradle):
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
defaultConfig {
multiDexEnabled true
}
dependencies {
implementation 'com.github.gmogame:sdk:main.6.1.8'
}
Step 2 : Project-level build.gradle ([project]/build.gradle):
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.google.gms:google-services:4.3.3'
}
}
allprojects {
// ...
repositories {
jcenter()
google()
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven {
url "https://jitpack.io"
credentials { username "jp_l28krc7a5uel5l48doj354csk9" }
}
}
}
Step 3: Config push using firebase
Add file google-services.json
to folder app
Calling
GMOGameSDK.getInstance().configure(Activity activity, new GMOSDKCallback());
in onCreate of the first start activity.
Class GMOSDKCallback
public interface GMOSDKCallback {
public abstract String getPaymentState(String packageId);
public abstract void onPaymentSuccess(GMOPaymentResult paymentResult, String packageId);
public void onUserLoginSuccess(GMOUserLoginResult result);
public void onUserLogout(String userName);
public void onClosePaymentView();
public void onCloseLoginView();
public void onShareFacebookSuccess(GMOUserLoginResult result);
public void onShareFacebookFail(GMOUserLoginResult result);
public void onUpdatePhonenumber(String gmoSDKPhone);
public void onGetPhonenumber(String gmoSDKPhone);
public void onRatingSuccess();
public void onOpenGroup();
public void onOpenFanpage();
}
- Please handle login your game in
onUserLoginSuccess
useGMOUserLoginResult
GMOUserLoginResult includes:
Field | Type | Note |
---|---|---|
userId | string | id of user |
accessToken | string | access token of user when login success |
verifyToken | string | use to verify users |
userName | string | username of user |
loginType | string | type of login |
string | email of user | |
shouldUpdatePassword | boolean | should Update Password |
- Please handle logout your game in
onUserLogout
Example:
GMOGameSDK.getInstance().configure(this, new GMOSDKCallback() {
@Override
public String getPaymentState(String packageId) {
return "";
}
@Override
public void onPaymentSuccess(GMOPaymentResult paymentResult, String packageId) {
}
@Override
public void onUserLoginSuccess(GMOUserLoginResult result) {
}
@Override
public void onUserLogout(String userName) {
}
@Override
public void onClosePaymentView() {
}
@Override
public void onCloseLoginView() {
}
@Override
public void onShareFacebookSuccess(GMOUserLoginResult result) {
}
@Override
public void onShareFacebookFail(GMOUserLoginResult result) {
}
@Override
public void onUpdatePhonenumber(String gmoSDKPhone) {
}
@Override
public void onGetPhonenumber(String gmoSDKPhone) {
}
@Override
public void onRatingSuccess() {
}
@Override
public void onOpenGroup() {
}
@Override
public void onOpenFanpage() {
}
});
2.2. Configure SDK
-
Configure Manifest:
-
Open file AndroidManifest.xml in your Android project.
-
Set basic permissions for SDK
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-
Permission for Google Play payment
<uses-permission android:name="com.android.vending.BILLING" />
-
Permission read and write file (If Use Feature Share To Messenger Facebook)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
Permission for crash reporting
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
-
Permission Using Firebase Cloud Messaging ({PACKAGE_NAME} is package name of app)
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="{PACKAGE_NAME}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="{PACKAGE_NAME}.permission.C2D_MESSAGE" />
-
Declare handle open app from OneLink for MainActivity :
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="fb{facebook_app_id}"/> </intent-filter>
-
Declare BaseActivity :
<activity android:name="com.gmogamesdk.v5.ui.BaseActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@style/BaseSDkTheme"/>
-
Declare FacebookActivity using facebook sdk:
<activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" />
-
Declare SignInHubActivity using Login Google:
<activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"/>
-
Declare receiver Appsflyer:
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
-
Declare Google Advertising:
<receiver android:name="com.google.ads.conversiontracking.InstallReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
-
Declare GMO API KEY:
<meta-data android:name="com.gmo.apiKey" android:value="value" />
-
Declare Crashlytics App KEY:
<meta-data android:name="com.countly.appKey" android:value="b56298258ad1fadc9a66e832d88687462b9ff70e" />
-
Declare Appflyer API KEY:
<meta-data android:name="com.gmo.appsflyerKey" android:value="value" />
-
Declare RefCode:
<meta-data android:name="com.gmo.refCode" android:value="value" />
-
Declare Facebook ApplicationID to use FacebookSDK:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="facebook_application_id" />
-
Declare provider FacebookContentProvider to use FacebookSDK:
<provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider{FACEBOOK_APP_ID}" android:exported="true" />
-
Declare service PushHandler and PushRegister to use push notification :
<service android:name="com.gmogamesdk.v5.service.PushHandler"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name="com.gmogamesdk.v5.service.PushRegister"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> <receiver android:name="com.gmogamesdk.v5.receiver.PushTracking" android:enabled="true" android:exported="false" > <meta-data android:name="com.gmogamesdk.v5.push.notification_icon" android:resource="@mipmap/ic_launcher" > <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="{PACKAGE_NAME}" /> </intent-filter> </receiver>
-
Declare init Firebase if you using ECLIPSE :
<provider android:name="com.google.firebase.provider.FirebaseInitProvider" android:authorities="{PACKAGE_NAME}.firebaseinitprovider" android:exported="false" android:initOrder="100" > <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
-
Declare log event firebase(firebase analytics) :
<receiver android:name="com.google.android.gms.measurement.AppMeasurementReceiver" android:enabled="true" android:exported="false" > </receiver> <service android:name="com.google.android.gms.measurement.AppMeasurementService" android:enabled="true" android:exported="false" />
-
Declare FileProvider If Use Feature Share To Messenger Facebook (Android 6 and 7)
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="{PACKAGE_NAME}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
2.3. Users
SDK provides methods for creating account, login account(using facebook,google) on Appota system so that user can use their account to make payment.
GMOSDKCallback is a listener for successful registration, log-in as well as payment transaction (detail GMOSDKCallback at 2.1)
2.3.1. Register
Show register view :
GMOGameSDK.getInstance().showRegisterView();
2.3.2. Login
Call GMOGameSDK.getInstance().showLoginView();
to open login screen
If you don't want to show login screen if user hasn't loggin right after your application starts:
GMOGameSDK.getInstance().setAutoShowLoginDialog(false)
(default is
true)
2.3.3. Show user infomation
Call GMOGameSDK.getInstance().showUserInfoView()
2.3.4. Get user information
- To get user infomation
Call GMOGameSDK.getInstance().getUserInfo()
return GMOUserLoginResult (includes : userId, username, email..)
- To get access token:
GamotaSDK.getInstance().getUserInfo().getAccessToken()
2.3.5. Logout
Call GMOGameSDK.getInstance().logout();
2.3.6. Login session
Default login session will be kept util logout function called.
If you want users have to login every time they open game/app and their login session will be cleared after they are exit game/app, use below function:
GMOGameSDK.getInstance().setKeepLoginSession(false)
Check whether user is logged-in or not :
GMOGameSDK.getInstance().isUserLoggedIn()
2.3.7. Set role
-
GMOGameSDK.getInstance().setRoleWithRoleName(String characterName, String characterId, String serverName, String serverId);
2.3.8. Show rating view
-
GMOGameSDK.getInstance().showRatingView();
2.3.9. Show support view
-
GMOGameSDK.getInstance().showSupportView();
2.3.10. Share Screenshot To Facebook
-
Call
GMOGameSDK.getInstance().shareScreenFacebook(String filePath);
if you want share screenshot to facebook -
Example :
GMOGameSDK.getInstance().shareScreenFacebook("/storage/emulated/0/screenshot.jpg");
2.3.11. Share Screenshot To Messenger
-
Call
GMOGameSDK.getInstance().shareScreenMessenger(String filePath);
if you want share screenshot to messenger -
Example :
GMOGameSDK.getInstance().shareScreenMessenger("/storage/emulated/0/screenshot.jpg");
2.3.12. Update phone number
- Call
GMOGameSDK.getInstance().updatePhonenumber();
open screen update phone number
2.3.13. Get phone number
- Call
GMOGameSDK.getInstance().getPhonenumber();
if you want get phone number
2.4. Payment
1.Payments implementation guide:
-After logging in SDK, user can select method to do payment(Google Play).
-After user confirm to make payment, Appota payment system will check the transaction, if success, the system will call Notify URL ( declare in dev.appota.com for developer's server process data) if have.
- Show payment view:
GMOGameSDK.getInstance().showPaymentView();
GMOGameSDK.getInstance().showPaymentViewWithPackageID(String packageID);
GMOGameSDK.getInstance().makePaymentWithProductId(String packageID);
packageID : ID of package payment. If you want to show only one specific package payment, pass its package id, if not, just pass null or empty string value for show all packages.
After making payment successfully, SDK will trigger GMOSDKCallback so you can receive GMOPaymentResult.
GMOPaymentResult is a class contains properties of transaction.
GMOPaymentResult includes:
Field | Type | Note |
---|---|---|
packageName | string | name of package |
productId | string | |
purchaseTime | int | |
purchaseState | int | |
amount | double | |
currency | string |
3. Tracking APIs in game
3.1 Download additional update data:
GMOGameSDK.getInstance().trackUpdateData(Boolean is_download)
3.2 Login game
GMOGameSDK.getInstance().trackLoginGame()
3.3 React mission:
GMOGameSDK.getInstance().trackReactMission(String mission_name);
3.4 Close payment dialog:
GMOGameSDK.getInstance().trackJoinClan(String clan_name);
3.5 Join Battle Clan:
GMOGameSDK.getInstance().trackJoinBattleClan(String clan_name);
3.6 First Recharge
GMOGameSDK.getInstance().trackFirstRecharge()
3.7 Open shop but no recharge
GMOGameSDK.getInstance().trackOpenShopButNoRecharge()
3.8 Open shop and recharge
GMOGameSDK.getInstance().trackOpenShopAndRecharge()
3.9 Open welfare
GMOGameSDK.getInstance().trackOpenWelfare()
3.10 Open activity
GMOGameSDK.getInstance().trackOpenActivity()
3.11 Track Level
GMOGameSDK.getInstance().trackLevel(int level);
3.12 Track Tutorial Complete
GMOGameSDK.getInstance().trackTutorialComplete();
3.13 Track Custom Event
Bundle bundle = new Bundle();
bundle.putString("param_1", "value_1");
GMOGameSDK.getInstance().trackCustomEvent("event_name",bundle);
Bundle bundle = new Bundle();
bundle.putString("role_id", "10930");
bundle.putString("server_id", "10");
bundle.putString("activity_name", "Đá giải đấu");
GMOGameSDK.getInstance().trackCustomEvent("activity",bundle);
4. Exception
GMOGameSDK will throw exceptions if SDK configuration is insufficient or incorrect.
Facebook, Google exception only raises if developer use them for login.
Here are exceptions:
Name | Message |
---|---|
GamotaAPIKeyException | There is no com.gmo.apiKey found in AndroidManifest.xml |
AppsflyerKeyException | There is no com.gmo.appsflyerKey found in AndroidManifest.xml |
GamotaFacebookAppIDException | There is no com.facebook.sdk.ApplicationId found in AndroidManifest.xml |
5. Other functions
5.1 Hide/show SDK floating button:
GMOGameSDK.getInstance().setSDKButtonVisibility(boolean)
Default is true.
5.2 Hide welcome view :(default is visiable)
GMOGameSDK.getInstance().setHideWelcomeView(true);
5.3 Switch account:
GMOGameSDK.getInstance().switchAccount();
5.4 Close payment dialog:
GMOGameSDK.getInstance().closePaymentView();
5.5 Show News View:
GMOGameSDK.getInstance().showNewsView();
5.6 Show Event View:
GMOGameSDK.getInstance().showEventView();
5.7 Show Giftcode View :
GMOGameSDK.getInstance().showGCView();