Game > Gamebase > Android SDK 사용 가이드 > 시작하기

Environments

Android에서 Gamebase를 사용하기 위한 시스템 환경은 다음과 같습니다.

[최소 사양]

  • 사용자 실행 환경 : Android API 16 (JellyBean, OS 4.1) 이상
  • 빌드 환경 : Android Gradle Plugin 3.2.0 이상
  • 개발 환경 : Android Studio

Dependencies

Gamebase SDK Gamebase Adapter External SDK 용도 minSdkVersion
Gamebase gamebase-sdk-base
gamebase-sdk
toast-core-0.27.1
toast-common
toast-crash-reporter-ndk
toast-logger
gson-2.8.5
okhttp-3.12.3
kotlin-stdlib-1.5.21
kotlin-stdlib-common
kotlin-stdlib-jdk7
kotlin-stdlib-jdk8
kotlin-android-extensions-runtime
kotlinx-coroutines-core-1.5.1
kotlinx-coroutines-android
kotlinx-coroutines-core-jvm
Gamebase의 Interface 및 핵심 로직을 포함 API 16 (JellyBean, OS 4.1)
Gamebase Auth Adapters gamebase-adapter-auth-appleid - Sign In With Apple 로그인을 지원 API 19(Kitkat, OS 4.4)
gamebase-adapter-auth-facebook facebook-login-11.1.0 Facebook 로그인을 지원 -
gamebase-adapter-auth-google play-services-auth-19.0.0 Google 로그인을 지원 -
gamebase-adapter-auth-hangame hangame-id-1.4.1 Hangame 로그인을 지원 -
gamebase-adapter-auth-line linesdk-5.6.2 Line 로그인을 지원 API 17(Kitkat, OS 4.2)
gamebase-adapter-auth-naver naveridlogin-android-sdk-4.4.1 Naver 로그인을 지원 -
gamebase-adapter-auth-payco payco-login-1.5.5 Payco 로그인을 지원 -
gamebase-adapter-auth-twitter signpost-core-1.2.1.2 Twitter 로그인을 지원 API 19(Kitkat, OS 4.4)
gamebase-adapter-auth-weibo sinaweibosdk.core-11.8.1 Weibo 로그인을 지원 API 19(Kitkat, OS 4.4)
Gamebase IAP gamebase-adapter-toastiap toast-gamebase-iap-0.16.0
toast-iap-core
게임 내 결제를 지원 -
gamebase-adapter-purchase-galaxy toast-iap-galaxy Galaxy Store를 지원 API 21(Lollipop, OS 5.0)
Galaxy IAP SDK 의 minSdkVersion 은 18이지만, 실제 결제를 위해 설치해야 하는 Checkout 서비스앱의 minSdkVersion 은 21입니다.
gamebase-adapter-purchase-google billingclient.billing-3.0.3
toast-iap-google
Google Store를 지원 -
gamebase-adapter-purchase-onestore toast-iap-onestore ONE Store를 지원 -
Gamebase Push gamebase-adapter-toastpush toast-push-analytics
toast-push-core
toast-push-notification
Push를 지원 -
gamebase-adapter-push-fcm firebase-messaging-17.6.0
toast-push-fcm
Firebase Notification을 지원 -

Setting

Console

[주의]

  • NHN Cloud Console 에서 새 프로젝트를 생성하여 Gamebase 서비스를 활성화 하였는지 꼭 확인하세요.
  • 각 IdP 콘솔에서 Client ID 를 발급받아 Gamebase 콘솔에 입력하였는지 꼭 확인하세요.

Regist as Tester

Gamebase Test Device

Store's Tester

Gradle

Using AndroidX

  • AndroidX 사용 선언을 빌드 설정에 추가하세요.
    • Android Studio groovy # gradle.properties # >>> [AndroidX] android.useAndroidX=true android.enableJetifier=true
    • Unity 2019.2 이하 groovy // mainTemplate.gradle ([rootProject] + (rootProject.subprojects as List)).each { ext { it.setProperty("android.useAndroidX", true) it.setProperty("android.enableJetifier", true) } }
    • Unity 2019.3 이상 groovy // gradleTemplate.properties android.useAndroidX=true android.enableJetifier=true
    • Unreal xml <gradleProperties> <insert> android.useAndroidX=true android.enableJetifier=true </insert> </gradleProperties>

Define Adapters

  • 사용할 Gamebase 버전, 사용할 인증, 결제, 푸시 모듈을 build.gradle 파일에 선언하세요.
    • Gamebase 최신 버전은 Maven Central(LINK) 에서 확인할 수 있습니다.
    • mavenCentral() 저장소를 추가하세요.
repositories {
    // >>> For Gamebase SDK
    mavenCentral()

    ...

    // >>> [Hangame IdP]
    maven { url 'Hangame IdP 설정 방법은 고객 센터로 문의 하시기 바랍니다.' }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // >>> Gamebase Version
    def GAMEBASE_SDK_VERSION = 'x.x.x'

    // >>> Gamebase - Add Auth Adapter
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-google:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-facebook:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-appleid:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-twitter:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-naver:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-line:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-payco:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-hangame:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-auth-weibo:$GAMEBASE_SDK_VERSION"

    // >>> Gamebase - Select Purchase Adapter
    implementation "com.toast.android.gamebase:gamebase-adapter-purchase-google:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-purchase-onestore:$GAMEBASE_SDK_VERSION"
    implementation "com.toast.android.gamebase:gamebase-adapter-purchase-galaxy:$GAMEBASE_SDK_VERSION"

    // >>> Gamebase - Select Push Adapter
    implementation "com.toast.android.gamebase:gamebase-adapter-push-fcm:$GAMEBASE_SDK_VERSION"
}

android {
    compileOptions {
        // >>> [AndroidX]
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        // >>> [Weibo IdP]
        ndk {
            abiFilters 'armeabi' // , 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

Resources

Firebase Notification

  • Android Studio 빌드인 경우
  • Unity 빌드인 경우
    • 만일 Firebase Unity SDK Package 를 설치했다면 아래 명령어로 generate_xml_from_google_services_json.exe 파일을 실행하여 json 파일을 xml 파일로 변환시킬 수 있습니다. "{UnityProject}\Firebase\Editor\generate_xml_from_google_services_json.exe" -i "{JsonFilePath}\google-services.json" -o "{UnityProject}\Assets\Plugins\Android\res\values\google-services.xml" -p "{PackageName}"
    • Firebase Unity SDK Package 를 설치하지 않았다면, 'Firebase Console > 프로젝트 설정' 에서 google-services.json 파일을 다운로드 하여 아래 가이드에 따라 string resource(xml) 파일을 직접 만들어서 'Assets/Plugins/Android/res/values/' 폴더에 포함시켜야 합니다. Firebase 서비스 연동에 따라서 google-services.json 파일의 내용은 달라질 수 있습니다. Download google-services.json
<!-- Assets/Plugins/Android/res/values/google-services-json.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="firebase_database_url" translatable="false">https://gamebase-sample-00000000.firebaseio.com</string>
    <string name="gcm_defaultSenderId" translatable="false">000000000000</string>
    <string name="google_storage_bucket" translatable="false">gamebase-sample-00000000.appspot.com</string>
    <string name="project_id" translatable="false">gamebase-sample-00000000</string>
    <string name="google_api_key" translatable="false">AbCd_AbCd_AbCd_AbCd_AbCd_AbCd_AbCd</string>
    <string name="google_app_id" translatable="false">1:000000000000:android:abcd0123abcd0123</string>
    <string name="default_web_client_id" translatable="false">000000000000-abcdabcdabcdabcdabcdabcdabcd.apps.googleusercontent.com</string>
</resources>
  • Unreal 빌드인 경우 Gamebase Unreal SDK에서 빈 google-service-json.xml 파일을 포함해 배포하고 있으니 해당 게임 정보에 맞는 값으로 변경하시기 바랍니다.
    • 만일 EasyFirebase와 같이 비슷한 형태의 XML을 자동으로 생성해 주는 Content가 있을 경우, 리소스 중복에 의해 빌드 에러가 발생할 수 있습니다. 이때는 google-service-json.xml 파일을 제거하면 됩니다.

AndroidManifest.xml

Facebook IdP

  • Facebook SDK 초기화를 위해 App ID 를 선언합니다.
    • 해당 값을 직접 선언하는 것 보다는 아래 예시와 같이 resources 를 참조하도록 설정하는 것이 좋습니다.
    • Gamebase SDK 가 내부적으로 Facebook SDK 초기화 함수를 호출하고 있으므로 현재는 필수 설정은 아닙니다.

AndroidManifest.xml

<manifest ...>
    <application ...>
        ...
        <!-- [Facebook] Configurations begin -->
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
        <!-- [Facebook] Configurations end -->
        ...
    </application>
</manifest>

res/values/strings.xml

<resources>
    <!-- [Facebook] Facebook APP ID -->
    <string name="facebook_app_id">123456789012345</string>
</resources>

Line IdP

  • Line SDK 내부에 android:allowBackup="false" 로 선언되어 있어 어플리케이션 빌드시 Manifest merger 에서 fail 이 발생할 수 있습니다. 이렇게 빌드가 실패한다면 다음과 같이 application 태그에 tools:replace="android:allowBackup" 선언을 추가하시기 바랍니다.
<application
      tools:replace="android:allowBackup"
      ... >

Hangame IdP

  • Hangame IdP 정상 동작을 위한 AndroidManifest.xml 설정은 고객 센터로 문의 하시기 바랍니다.
<manifest ...>
    <application ...>
        ...
        <!-- [Hangame] Configurations begin -->
        <meta-data ... />
        <!-- [Hangame] Configurations end -->
        ...
    </application>
</manifest>

Weibo IdP

  • Weibo IdP 가 정상 동작 하기 위해서는 application 태그에 android:networkSecurityConfig attribute 를 추가하고, weibo, sina 관련 URL 을 선언한 xml 파일 이름을 설정해야 합니다.
<application android:networkSecurityConfig="@xml/my_network_security_config"
    ...>
    ...
</application>
  • res/xml/my_network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- Weibo SDK start -->
        <domain includeSubdomains="true">sina.cn</domain>
        <domain includeSubdomains="true">weibo.cn</domain>
        <domain includeSubdomains="true">weibo.com</domain>
        <domain includeSubdomains="true">sinaimg.cn</domain>
        <domain includeSubdomains="true">sinajs.cn</domain>
        <domain includeSubdomains="true">sina.com.cn</domain>
        <!-- Weibo SDK end -->
    </domain-config>
</network-security-config>

ONE Store

  • ONE store 는 전체 결제 화면과 팝업 결제 화면을 지원합니다.
    • AndroidManifest.xml에 meta-data를 추가하여 전체 결제 화면("full") 또는 팝업 결제 화면("popup")을 선택할 수 있습니다.
    • meta-data를 설정하지 않으면 기본값("full")이 적용됩니다.
<manifest>
    ...
    <application>
        ...
        <!-- [ONE store] Configurations begin -->
        <!-- popup:팝업 결제 화면 / full:전체 결제 화면 -->
        <meta-data
            android:name="iap:view_option"
            android:value="popup | full" />
        <!-- [ONE store] Configurations end -->
        ...
    </application>
</manifest>
결제 화면 설정 값
전체 결제 화면 "full"
팝업 결제 화면 "popup"

Notification Options

  • 다음과 같은 방법으로 알림 옵션을 설정할 수 있습니다.

Example

<!-- Notification priority -->
<meta-data android:name="com.toast.sdk.push.notification.default_priority"
           android:value="1"/>
<!-- Notification background color -->
<meta-data android:name="com.toast.sdk.push.notification.default_background_color"
           android:resource="@color/defaultNotificationColor"/>
<!-- LED light -->
<meta-data android:name="com.toast.sdk.push.notification.default_light_color"
           android:value="#0000ff"/>
<meta-data android:name="com.toast.sdk.push.notification.default_light_on_ms"
           android:value="0"/>
<meta-data android:name="com.toast.sdk.push.notification.default_light_off_ms"
           android:value="500"/>
<!-- Small icon -->
<meta-data android:name="com.toast.sdk.push.notification.default_small_icon"
           android:resource="@drawable/ic_notification"/>
<!-- Sound -->
<meta-data android:name="com.toast.sdk.push.notification.default_sound"
           android:value="notification_sound"/>
<!-- Vibrate pattern -->
<meta-data android:name="com.toast.sdk.push.notification.default_vibrate_pattern"
           android:resource="@array/default_vibrate_pattern"/>
<!-- Use badge icon or not -->
<meta-data android:name="com.toast.sdk.push.notification.badge_enabled"
           android:value="true"/>
<!-- Enable notification when application is foreground. -->
<meta-data android:name="com.toast.sdk.push.notification.foreground_enabled"
           android:value="false"/>
meta-data key value type description
com.toast.sdk.push.notification.default_priority int 우선 순위.
아래 5가지 값을 설정할 수 있습니다.
NoticationComapt.PRIORITY_MIN : -2
NoticationComapt.PRIORITY_LOW : -1
NoticationComapt.PRIORITY_DEFAULT : 0
NoticationComapt.PRIORITY_HIGH : 1
NoticationComapt.PRIORITY_MAX : 2
com.toast.sdk.push.notification.default_background_color int 배경색.
com.toast.sdk.push.notification.default_light_color int LED 색.
com.toast.sdk.push.notification.default_light_on_ms int LED 불이 들어올 때의 시간.
com.toast.sdk.push.notification.default_light_off_ms int LED 불이 나갈 때의 시간.
com.toast.sdk.push.notification.default_small_icon resource id 작은 아이콘의 리소스 식별자.
com.toast.sdk.push.notification.default_sound String 알림음 파일 이름.
안드로이드 8.0 미만 OS 에서만 동작합니다.
'res/raw' 폴더의 mp3, wav 파일명을 지정하면 알림음이 변경됩니다.
com.toast.sdk.push.notification.default_vibrate_pattern long[] 진동의 패턴.
com.toast.sdk.push.notification.badge_enabled boolean 배지 아이콘 사용 여부.
com.toast.sdk.push.notification.foreground_enabled boolean 포그라운드 알림 사용 여부.

Android 11

  • Android 11 은 빌드시 미리 선언된 어플리케이션이 아니면 다른 어플리케이션이 실행되지 않습니다.
  • 이를 위해 targetSdkVersion 을 30 이상으로 설정하는 경우에는 반드시 AndroidManifest.xml 에 queries 태그를 통해 허용할 어플리케이션을 미리 선언해두어야 합니다.

[주의]

If you are using
the Android Gradle
plugin version...
...upgrade to: Unity Editor
4.1.* N/A (no upgrade needed) -
4.0.* 4.0.1 -
3.6.* 3.6.4 2020.1 ~
3.5.* 3.5.4 -
3.4.* 3.4.3 2018.4.4 ~
2019.1.7 ~
3.3.* 3.3.3 -
3.2.* Not supported 2017.4.17 ~
2018.3 ~ 2018.4.3
2019.1.0 ~ 2019.1.6
3.0.* Not supported 2018.2
2.3.* Not supported 2017.3 ~ 2017.4.16
2018.1
2.1.* Not supported Unity 5
2017.1 ~ 2017.2
<manifest>
    <!-- [Android11] settings start -->
    <queries>
        <!-- [All SDK] AppToWeb Authenthcation support start -->
        <package android:name="com.android.chrome" />
        <package android:name="com.chrome.beta" />
        <package android:name="com.chrome.dev" />
        <package android:name="com.sec.android.app.sbrowser" />
        <!-- [All SDK] AppToWeb Authenthcation support end -->

        <!-- [Facebook] Configurations begin -->
        <package android:name="com.facebook.katana" />
        <!-- [Facebook] Configurations end -->

        <!-- [Payco/Hangame] Configurations begin -->
        <package android:name="com.nhnent.payapp" />
        <!-- [Payco/Hangame] Configurations end -->

        <!-- [Line] Configurations begin -->
        <package android:name="jp.naver.line.android" />
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
        </intent>
        <!-- [Line] Configurations end -->

        <!-- [Naver] Configurations begin -->
        <package android:name="com.nhn.android.search" />
        <!-- [Naver] Configurations end -->

        <!-- [Weibo] Configurations begin -->
        <package android:name="com.weico.international" />
        <package android:name="com.sina.weibo" />
        <!-- [Weibo] Configurations end -->

        <!-- [ONE store] Configurations begin -->
        <intent>
            <action android:name="com.onestore.ipc.iap.IapService.ACTION" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="onestore" />
        </intent>
        <!-- [ONE store] Configurations end -->

        <!-- [Galaxy store] Configurations begin -->
        <package android:name="com.sec.android.app.samsungapps" />
        <!-- [Galaxy store] Configurations end -->
    </queries>
    <!-- [Android11] settings end -->
</manifest>

Proguard

  • Gamebase 2.21.0 미만 버전은 Proguard 적용시 Proguard Rule 에 다음 선언을 추가하지 않으면 결제 API 호출시 크래쉬가 발생합니다.
    • Gamebase 2.21.0 버전에서 수정되었습니다.
# ---------------------- [Gamebase TOAST IAP] defines start ----------------------
# For using reflection
-keep class com.toast.android.toastgb.iap.ToastGbStoreCode { *; }
# ---------------------- [Gamebase TOAST IAP] defines end ----------------------
  • Gamebase 에서 권장하는 flow 는 Sample Project 에도 동일하게 구현되어 있습니다.
  • 게임이 시작되었을 때 Gamebase 클라이언트 SDK 를 초기화 하고 로그인이 성공하면 결제 재처리가 시작되도록 구현하세요.

overview flow

3rd-Party Provider SDK Guide

API Reference

  • API Reference는 SDK 내에 포함되어 있습니다.

API Deprecate Governance

Gamebase에서 더 이상 지원하지 않는 API는 Deprecate 처리합니다. Deprecated 된 API는 다음 조건 충족 시 사전 공지 없이 삭제될 수 있습니다.

  • 5회 이상의 마이너 버전 업데이트
    • Gamebase Version Format - XX.YY.ZZ
      • XX : Major
      • YY : Minor
      • ZZ : Hotfix
  • 최소 5개월 경과
TOP