Cocos2d-x

Quick Start

์ตœ์‹  ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ

๋ณธ ๊ฐ€์ด๋“œ๋Š” Cocos2d-x 3.17.2 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์„ฑ

  • ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋‚ด์˜ Plugins ํด๋”์— SDK์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  1. ) android : android build์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  2. ) ios : ios build์— ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  3. ) navergamesdk : cocos2d-xํ”„๋กœ์ ํŠธ์™€ android, ios ๋“ฑ ๊ฐ ํ”Œํผ์— ์—ฐ๊ฒฐ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

2. ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

  • ๊ท€ ์‚ฌ์˜ Cocos2d-xํ”„๋กœ์ ํŠธ์™€ SDK ์—ฐ๋™์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Plugins๋‚ด์˜ navergamesdkํด๋”๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ท€ ์‚ฌ์˜ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ Classes ํด๋”๋‚ด์— ๋ณต์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ ๊ท€ ์‚ฌ์˜ ํ”„๋กœ์ ํŠธ์—์„œ android ํ˜น์€ ios ํ”Œ๋ž˜ํผ ํ•˜๋‚˜๋งŒ ์ถœ์‹œํ•˜์‹ค ์˜ˆ์ •์ด๋ผ๋ฉด platform ํ•˜๋‹จ์˜ android ํ˜น ios ํด๋” ์ค‘์— ํ•ด๋‹นํ•˜๋Š” ํด๋”๋งŒ ๋‚จ๊ธฐ์‹œ๊ณ  ์ง€์šฐ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

2-1. NaverGameSDK.h

  • ํ•ด๋‹น ํŒŒ์ผ ์•ˆ์—๋Š” sdk ์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ์šฉ

๊ท€ ์‚ฌ์˜ ํ”„๋กœ์ ํŠธ๋‚ด์—์„œ sdk๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ณณ์— ํ—ค๋”ํŒŒ์ผ์„ include์‹œํ‚ต๋‹ˆ๋‹ค. (์ƒ˜ํ”Œํ”„๋กœ์ ํŠธ์—์„œ๋Š” HelloWorldScene.h์— ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค)

#include "NaverGameSDK.h"
  • NaverGameSDK.h๋ฅผ ์ฐพ์ง€๋ชปํ•œ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค๋ฉด rootProject/CmakeLists.txt์— ํ—ค๋”ํŒŒ์ผ์„ ํ•˜๋‹จ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์ถ”๊ฐ€์‹œ์ผœ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ—ค๋”ํŒŒ์ผ๊ณผ cppํŒŒ์ผ์„ ๋“ฑ๋กํ•˜์—ฌ์ค๋‹ˆ๋‹ค.
navergamesdk ํด๋”๋ฅผ ๋“ฑ๋กํ•˜์—ฌ์ค๋‹ˆ๋‹ค.

3-1. SDK ์ดˆ๊ธฐํ™”

SDK๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ดˆ๊ธฐํ™” ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ณ  init() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

nng::NaverGameSDK::init("UKvNABLDsyEJusJGsXL2", "rK4suc_Qd0", "naver_game_4developer");

3-2. SDK ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก

SDK์—์„œ ๋ณด๋‚ด๋Š” ๊ฐ์ข… ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›๊ธฐ์œ„ํ•ด์„œ๋Š” ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.

//๋ฆฌ์Šค๋„ˆ๋Š” NaverGameSDK.h ์— ์„ ์–ธ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
nng::NaverGameSDK::setSdkListener(this);

3-3. SDK ์ง€์› Funtion ์‚ดํŽด๋ณด๊ธฐ

  1. ํ™ˆ ๋ฐฐ๋„ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    nng::NaverGameSDK::startHomeBanner();
  2. ์ ๊ฒ€ ๋ฐฐ๋„ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    nng::NaverGameSDK::startSorryBanner();
  3. ํŠน์ • ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    nng::NaverGameSDK::startBoard(boardId);
  4. ํŠน์ • ๊ธ€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    ๋“ฑ๋ก๋œ ๊ธ€์˜ ๋ฒˆํ˜ธ๋กœ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์˜ˆ์•ฝ๋…ธ์ถœ์„ ํ†ตํ•ด์„œ ๋“ฑ๋กํ•œ ์˜ˆ์•ฝ ๊ฒŒ์‹œ๊ธ€์˜ ๊ฒฝ์šฐ์—๋Š” ์˜ˆ์•ฝ๊ธ€์˜ ๋ฒˆํ˜ธ๋ฅผ FeedId ์— ์ž…๋ ฅํ•˜๊ณ  IsTempFeedId ๋ฅผ True ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    nng::NaverGameSDK::startFeed(feedId, isTempFeedId);
  5. sdk ์ข…๋ฃŒ์‹œํ‚ค๊ธฐ

    nng::NaverGameSDK::stopSdk
  6. ๊ตญ๊ฐ€์ฝ”๋“œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

    ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์˜ countryCode๋ฅผ ์–ป์–ด์˜ต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ init() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ์ดํ›„์— ํ˜ธ์ถœํ•ด์•ผ ์ •์ƒ์ ์ธ ๊ฐ’์„ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    nng::NaverGameSDK::getCountryCode();

    countryCode๋Š” ๋‘ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ตญ๊ฐ€์ฝ”๋“œ(ISO 3166-1 alpha-2)์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋‚ด์—์„œ ๊ตญ๊ฐ€๋ณ„ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์ฃผ์š” ๊ตญ๊ฐ€์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ ์ด์™ธ์˜ ๊ตญ๊ฐ€ ์ฝ”๋“œ๋Š” ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

    ๊ตญ๊ฐ€์ฝ”๋“œ

    ๊ตญ๊ฐ€

    CN

    ์ค‘๊ตญ

    JP

    ์ผ๋ณธ

    KR

    ๋Œ€ํ•œ๋ฏผ๊ตญ

    TH

    ํƒœ๊ตญ

    US

    ๋ฏธ๊ตญ

์•„๋ž˜๋Š” ์ƒ˜ํ”Œํ”„๋กœ์ ํŠธ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.์ฐธ๊ณ ํ•˜์—ฌ ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • Cocos2d-x 3.17.2

  • Android Studio 4.2

  • Gradle 4.9 (proj.android/gradle/wrapper/gradle-wrapper.properties)

  • Ndk 16.1.4479499

  • Cmake 3.10.2.4988404 (with Ninja 1.10.2)

1. Cocos2d-x์™€ Android๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ธŒ๋ฆฟ์ง€ ํŒŒ์ผ(์ฝ”๋“œ)์„ ์ถ”๊ฐ€ํ•˜๊ธฐ

์ƒ˜ํ”Œํ”„๋กœ์ ํŠธ๋‚ด์˜ Plugins ํด๋”์ž…๋‹ˆ๋‹ค

Pluginsํด๋”๋‚ด์˜ android ํด๋” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

  1. ) com... ํด๋” ์•ˆ ๋์— android์—์„œ cocosํ”„๋กœ์ ํŠธ์™€ ๋ธŒ๋ฆฟ์ง€์—ญํ• ์„ํ•˜๋Š” NNGSdk.java ํŒŒ์ผ์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  2. ) navergame-sdk-gradle-x.x.x.aar ์€ Navergame sdk ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค.

์ƒ˜ํ”Œํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

1-1. navergame-sdk-gradle-x.x.x.aar

Naver Game SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • rootProject/proj.android/app/libs ํด๋”์— ๋ถ™์—ฌ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. libsํด๋”๊ฐ€์—†์œผ๋ฉด ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

1-2. NNGSdk.java

Android์—์„œ Cocos2d-xํ”„๋กœ์ ํŠธ์™€ SDK๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ธŒ๋ฆฟ์ง€์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

  • rootProject/proj.android/app/src ํด๋”์— ๋ถ™์—ฌ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. com..์œผ๋กœ์‹œ์ž‘๋˜๋Š” ํด๋” ์ „์ฒด๋ฅผ ๋ถ™์—ฌ๋„ฃ์–ด์ฃผ์„ธ์š”.

1-3. NaverGameSDK.cpp

Cocos2d-x์—์„œ Androidํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ธŒ๋ฆฟ์ง€์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

  • rootProject/Classes/navergamesdk/platform/android/NaverGameSDK.cpp ํŒŒ์ผ์ด ์žˆ๋‚˜ ํ™•์ธํ•˜๊ณ  ์—†์œผ๋ฉด Pluginsํด๋”์—์„œ ์ฐพ์•„ ๋ถ™์—ฌ๋„ฃ์–ด์ฃผ์„ธ์š”.

  • cocos2d-x ๋ฒ„์ „์— ๋”ฐ๋ผ JniHelper๊ฐ€ ๋‹ค๋ฅธ์ด๋ฆ„์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฒ„์ „์ด ๋‹ค๋ฅผ๊ฒฝ์šฐ ํ™•์ธํ•ด๋ณด์„ธ์š”

#include "NaverGameSDK.h"
#include "platform/android/jni/JniHelper.h"

using namespace cocos2d;

namespace nng {
    static bool getStaticMethod(JniMethodInfo &methodinfo, const char *methodName, const char *paramCode) {
        static const char* kCafeSdkClass = "com/navercorp/nng/cocos2dx/sample/NNGSdk";
        return JniHelper::getStaticMethodInfo(methodinfo, kCafeSdkClass, methodName, paramCode);
    }

    static NaverGameSDKListener* sdkListener = nullptr;

    void NaverGameSDK::setSdkListener(NaverGameSDKListener* listener) {
        sdkListener = listener;
    }

    void NaverGameSDK::init(std::string clientId, std::string clientSecret, std::string loungeId) {
        JniMethodInfo t;
        if (getStaticMethod(t, "init","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V")) {
            jstring _clientId = t.env->NewStringUTF(clientId.c_str());
            jstring _clientSecret = t.env->NewStringUTF(clientSecret.c_str());
            jstring _loungeId = t.env->NewStringUTF(loungeId.c_str());

            t.env->CallStaticVoidMethod(t.classID, t.methodID, _clientId, _clientSecret, _loungeId);

            t.env->DeleteLocalRef(_clientId);
            t.env->DeleteLocalRef(_clientSecret);
            t.env->DeleteLocalRef(_loungeId);
            t.env->DeleteLocalRef(t.classID);
        }
    }

    .
    .
    .

    extern "C" {
        JNIEXPORT void JNICALL
        Java_com_navercorp_nng_cocos2dx_sample_NNGSdk_onSdkStarted(JNIEnv* env, jclass thiz) {
            if (sdkListener == nullptr) return;
            sdkListener->onSdkStarted();
        }

        .
        .
        .
    }
}   /* namespace nng */
  • kCafeSdkClass = "com/navercorp/nng/cocos2dx/sample/NNGSdk";

    • NNGSdk.java ํŒŒ์ผ์˜ ์œ„์น˜๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ NNGSdk.java์˜ ์œ„์น˜๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค๋ฉด ํ•ด๋‹น ์œ„์น˜์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜์—ฌ์ฃผ์‹ญ์‹œ์˜ค.

  • Java_com_navercorp_nng_cocos2dx_sample_NNGSdk_Funtion๋„ค์ž„

    • NNGSDK.java ํŒŒ์ผ์˜ ์œ„์น˜๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ NNGSdk.java์˜ ์œ„์น˜๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค๋ฉด ํ•ด๋‹น ์œ„์น˜์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜์—ฌ์ฃผ์‹ญ์‹œ์˜ค.

2. ์•ˆ๋“œ๋กœ์ด๋“œ๋กœ ๋นŒ๋“œํ•˜๊ธฐ์œ„ํ•œ ์„ค์ •

1-1. AndroidManifest.xml

  • rootProject/proj.android/app/AndroidManifest.xml ํŒŒ์ผ ์•ˆ์— SDK์—์„œ ํ•„์š”ํ•œ ๊ถŒํ•œ ์ถ”๊ฐ€ํ•˜์—ฌ์ค๋‹ˆ๋‹ค.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

1-2. build.gradle

  • rootProject/proj.android/app/build.gradle ํŒŒ์ผ ์•ˆ์— SDK์™€ SDK์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ์ค๋‹ˆ๋‹ค

dependencies {
    implementation project(':libcocos2dx')
    /**
     * Navergame sdk์™€ ํ•„์š”ํ•œ libraries
     */
     
    implementation files('libs/navergame-sdk-gradle-x.x.x.aar')
    implementation "com.naver.nid:naveridlogin-android-sdk:4.2.6" // naveridlogin
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.7.20"      // Kotlin
    implementation "androidx.viewpager2:viewpager2:1.0.0"           // Viewpager2
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"   //swiperefreshlayout
    implementation "com.github.bumptech.glide:glide:3.7.0"          // Glide
    implementation "com.squareup.retrofit2:retrofit:2.9.0"          // Retrofit2
    implementation "com.squareup.retrofit2:converter-gson:2.9.0"
}

1-3. ndk ๋ฐ cmake ์„ค์น˜

  • Android Studio ์ด์šฉ๋ฐฉ๋ฒ•

    • Android Studio -> Preferences -> ๊ฒ€์ƒ‰์— sdk ๊ฒ€์ƒ‰ ํ›„ sdk tools ํƒญ์—์„œ ndk์™€ cmake๋ฅผ ๋‹ค์šด๋ฐ›์•„์ค๋‹ˆ๋‹ค. (Show Package Details ์ฒดํฌํ•˜์„ธ์š”.)

cocos-3.17.2๋ฒ„์ „ ๊ธฐ์ค€์œผ๋กœ ndk-16.1.4479499, cmake-3.10.2.4988404 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1-4. ndk, cmake ์ ์šฉ

  • rootProject/proj.android/local.propertiesํŒŒ์ผ์— ndk, cmake ์„ค์น˜ํŒŒ์ผ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ค๋‹ˆ๋‹ค.

3. ์•ˆ๋“œ๋กœ์ด๋“œ๋กœ ๋นŒ๋“œํ•˜๊ธฐ

Cocos2d-xํ”„๋กœ์ ํŠธ ์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค.

  • cmake

  • ndk

์ •ํ™•ํ•œ ๋„ค์ด๋ฐ์€ cocos2d-x๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅผ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ™•์ธ๋ฐ”๋ž๋‹ˆ๋‹ค. 3.17.2๋ฒ„์ „ ๊ธฐ์ค€์œผ๋กœ๋Š” build.gradle ํŒŒ์ผ์•ˆ์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.17.2๋ฒ„์ „ ๊ธฐ์ค€์œผ๋กœ 'ndk-build' ์™€ 'cmake' ์ž…๋‹ˆ๋‹ค.

3-0. ๋นŒ๋“œ ํƒ€์ž… ์ ์šฉ ๋ฐฉ๋ฒ•

rootProject/proj.android/gradle.properties ํŒŒ์ผ ๋‚ด์˜ PROP_BUILD_TYPE ํ”„๋กœํผํ‹ฐ์—์„œ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • cmake๋กœ ๋นŒ๋“œํ•˜์‹œ๋ ค๋ฉด PROP_BUILD_TYPE=cmake ๋กœ ์„ค์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

3-1. CMAKE๋กœ ๋นŒ๋“œํ•˜๊ธฐ

3-2. NDK๋กœ ๋นŒ๋“œํ•˜๊ธฐ

  • rootProject/proj.android/gradle.properties ๋‚ด PROP_BUILD_TYPE=ndk-build ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • rootProject/proj.android/app/jni/Android.mk์— SDK์— ํ•„์š”ํ•œ ํŒŒ์ผ ๋ฐ ํด๋”๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

  • rootProject/proj.andorid/local.properties์— ndk์„ค์น˜ํŒŒ์ผํŒจ์Šค๊ฐ€ ์ž˜ ์ž…๋ ฅ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ๋ฒ„ํŠผ ํด๋ฆญ!

iOS ํ”„๋กœ์ ํŠธ์— Navergame SDK ์ ์šฉํ•˜๊ธฐ

๋„ค์ด๋ฒ„ ๊ฒŒ์ž„ iOS SDK๋Š” iOS 12.0 ๋ฒ„์ „๋ถ€ํ„ฐ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ด๋ฒ„ ๊ฒŒ์ž„ SDK๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด XCode์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • TARGETS ํ•ญ๋ชฉ ์ค‘ ์‹คํ–‰๋  ์•ฑ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • Build Setting ํƒญ์„ ์„ ํƒํ•˜๊ณ  Linking ํ•ญ๋ชฉ์—์„œ Other Linker Flags๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

    • Basic ๋˜๋Š” Customized๋ชจ๋“œ ์ธ ๊ฒฝ์šฐ Other Linker Flag๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ All ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ์šฐ์ƒ๋‹จ์— ์œ„์น˜ํ•œ ๊ฒ€์ƒ‰์ฐฝ์— Other Linker Flag๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Other Linker Flags์— -ObjC ์˜ต์…˜๊ณผ -lc++ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • Info.plist์— ์•„๋ž˜์˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ํš๋“ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    • Privacy - Camera Usage Description

    • Privacy - Photo Library Usage Description

  • TARGETS ํ•ญ๋ชฉ ์ค‘ ์‹คํ–‰๋  ์•ฑ์„ ์„ ํƒํ•˜๊ณ  Infoํƒญ์˜ URL Types ํ•ญ๋ชฉ์— Identifier ๊ฐ’๊ณผ URL Schemes๊ฐ’์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • Identifier ๊ฐ’์€ ํ•ด๋‹น TARGET์˜ General ํƒญ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • URL Schemes ๊ฐ’์—๋Š” ๋„ค์ด๋ฒ„ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋“ฑ๋กํ•  ๋•Œ ์ž…๋ ฅํ•œ URL Scheme ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Last updated

Was this helpful?