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)

  • Download Sample

  • 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

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 use GMOUserLoginResult

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
email 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();