# 빠른 시작

> SDK 연동을 활성화하려면 탭조이 Unity 플러그인을 프로젝트로 임포트합니다. 빠른 시작 설명은 .unitypackage 임포트, SDK 키 설정, 필수 Tapjoy GameObject 추가에 대한 내용을 안내합니다.

## SDK 연동##sdk-integration

앱과 통합하기 위한 첫 번째 단계는 [Unity SDK를 다운로드](https://sdk.tapjoy.com/releases/14.8.0/TapjoyUnityPlugin_v14.8.0.zip)하는 것입니다.

탭조이 유니티 플러그인 zip 파일에는 간편한 임포트를 위한 Unity 패키지 파일과, 탭조이 업그레이드를 위해 파일을 직접 드래그 앤 드롭하는 방식을 선호하는 사용자를 위한 원본 파일이 포함되어 있습니다. `TapjoyUnityPlugin_vVERSION.unitypackage`를 임포트하려면 다음 단계를 수행합니다.

1. Unity 프로젝트를 엽니다.
2. **Assets** > **Import Package** > **Custom Package**로 이동합니다.
3. `TapjoyUnityPlugin_vVERSION.unitypackage` 파일을 가리킵니다.
4. 충돌이 있는지 확인하는 임포트 파일 목록 검토
5. 파일을 수락하려면 **Import**를 선택합니다.

> **Note:**
>
> 12.8.0 버전부터 오퍼월 SDK는 외부 종속성 관리자를 통해 Cocoapods로 관리됩니다. CocoaPods 버전이 1.9.0 이상이고 Xcode 버전이 11.0 이상이어야 합니다.

### Unity 5.4 이상에서 업데이트##updating-on-unity-5.4-or-higher

연동을 업데이트 중이며 Unity 5.4 이상을 사용 중인 경우, iOS 빌드에 포함되도록 표시된 Google Play Services 라이브러리와 관련된 오류를 수정할 수 있는 'fix' 버튼이 표시됩니다.

Google Play 서비스가 Android 빌드에만 포함되도록 하려면 **Fix**를 선택합니다. Unity 5.4 이전 버전을 사용하는 경우 google-play-services\_lib가 Android 빌드에만 포함되도록 수동으로 설정해야 합니다. 새로운 연동에는 이 수정이 필요하지 않으며 이 버튼이 표시되지 않습니다.

### 앱 권한 추가(Android용)##add-app-permissions-(for-android)

`ACCESS_WIFI_STATE` 권한은 필요에 따라 매니페스트에 포함될 수 있습니다.

```java
<manifest ...>
  ...
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  ...
</manifest>
```

## 탭조이에 연결##connect-to-tapjoy

탭조이 창에서 탭조이 설정을 시작할 수 있습니다. `Window > Tapjoy`로 이동하여 탭조이 창을 엽니다.

![게임에서 Unity Offerwall 창의 예시입니다.](/api/media?file=/grow/media/images/tapjoy_window_screenshot.png)

탭조이 창에서 다음을 설정할 수 있습니다.

* Android 및 iOS용 SDK 키 설정
* Android 마켓의 스토어 이름을 추가합니다(예: Google 또는 Amazon).
* 광고 ID, 영구 ID 및 IDFA 사용 활성화 또는 비활성화
  * **광고 ID 비활성화**: 이 체크박스는 Android의 **DISABLE\_ADVERTISING\_ID\_CHECK** 연결 플래그와 동일한 효과를 가집니다. 기본적으로 탭조이의 Android SDK는 Google 광고 식별자가 있는지 확인하며, 이를 찾지 못하면 초기화를 수행하지 못합니다. 이 박스를 선택하면 Offerwall SDK가 Google 광고 식별자가 없더라도 초기화할 수 있도록 이 확인을 비활성화할 수 있습니다. 이는 Google Play가 아닌 앱 스토어에서 릴리스할 빌드를 만들 때와 같이 앱에 Google Play 서비스가 없는 경우에 유용합니다.
  * **영구 ID 비활성화**: 이 체크박스는 Android에서 **DISABLE\_PERSISTENT\_IDS** 연결 플래그와 동일한 효과를 가집니다. 오퍼월 SDK는 광고 식별자가 사용할 수 없는 경우([Play 콘솔 기술 자료의 광고 ID 항목](https://support.google.com/googleplay/android-developer/answer/6048248)에서 권장하는 옵션)를 대비해 대체 광고 식별자로 활용하기 위해 지속적 식별자(예: MAC 주소 및 Android 식별자)를 탭조이 서버로 전송합니다. 이 플래그가 설정된 경우, SDK 내에서 광고 식별자를 사용할 수 없는 경우에만 광고주 트래킹 목적으로 지속적 식별자가 탭조이 서버로 전송됩니다.
  * **DISABLE\_ANDROID\_ID\_AS\_ANALYTICS\_ID** 연결 플래그와 동등한 체크박스가 없습니다. (이 플래그가 설정된 경우, 탭조이가 분석 목적으로 사용하는 ID는 Android ID의 복사본이 아닌 무작위로 생성된 문자열입니다. 이 플래그 설정을 이전 버전과 다르게 변경한 빌드를 배포하면, 기존 사용자 중 일부가 탭조이 분석 툴에서 신규 사용자로 인식될 수 있습니다.) 이 플래그를 설정하려면 [탭조이 Unity 매뉴얼 연결](#manual-connect)을 사용하여 **DISABLE\_ANDROID\_ID\_AS\_ANALYTICS\_ID** 플래그를 추가해야 합니다.
* 로깅 레벨을 설정합니다.

연동 상태를 확인할 수도 있습니다. 여기에는 GCM 수신기 설정 및 설치 유입 경로 수신기 설정이 포함됩니다.

오퍼월 SDK가 작동하려면 TapjoyComponent가 부착된 TapjoyUnity GameObject가 필요합니다. 에디터 창에는 이 GameObject를 자동으로 추가하고 설정해주는 'Fix' 버튼이 표시됩니다. 게임에서 가장 먼저 나타나는 첫 번째 씬에만 탭조이 GameObject를 추가합니다.

탭조이 설정을 마치면 애플리케이션을 빌드하고 실행할 수 있습니다.

### 최대 사용자 레벨##max-user-level

게임의 레벨 수를 탭조이에 제공할 수 있습니다. 이 값은 연결을 호출하기 전이나 후에 설정 가능합니다.

```csharp
Tapjoy.SetMaxLevel(10); 
```

### 사용자 세그먼트##user-segment

`setUserSegment`를 호출하여 사용자를 세그먼트의 일부로 식별할 수 있습니다. 이는 연결 호출 전이나 후에 설정할 수 있습니다.

```csharp
Tapjoy.SetUserSegment(TJSegment.VIP);
Tapjoy.SetUserSegment(TJSegment.Payer);
Tapjoy.SetUserSegment(TJSegment.NonPayer);
Tapjoy.SetUserSegment(TJSegment.Unknown); 
```

### 수동 연결##manual-connect

Unity SDK를 사용하면 코드를 통해 연결 단계를 제어할 수 있습니다. 기본적으로 SDK는 연결을 처리합니다. 수동으로 조작하려면 먼저 Tapjoy 설정 창(Window > Tapjoy)에서 'Auto-Connect' 옵션을 선택 해제합니다.

이 옵션을 선택 해제하면 SDK가 더 이상 연결을 자동으로 처리하지 않습니다. 코드로 연결을 처리해야 합니다. 이 동작은 네이티브 SDK와 마찬가지입니다.

애플리케이션이 처음 시작되면 `Connect`를 호출하여 SDK를 탭조이 서버에 연결해야 합니다. Connect 함수에는 두 가지 버전이 있습니다. 첫 번째 Connect 형식에서는 SDK 키를 문자열로 사용합니다. 애플리케이션이 다중 플랫폼인 경우 플랫폼별로 올바른 SDK 키를 제공해야 합니다.

```csharp
#if UNITY_ANDROID
		Tapjoy.Connect("your_android_sdk_key");
#elif UNITY_IOS
		Tapjoy.Connect("your_ios_sdk_key");
#endif
```

Connect의 다른 버전에서는 두 번째 파라미터인 문자열/문자열 값의 딕셔너리를 사용합니다. 이 딕셔너리는 connectFlags이며 네이티브 SDK와 동일하게 동작합니다.

```csharp
Dictionary<string,string> connectFlags = new Dictionary<string,string>();
connectFlags.Add("TJC_OPTION_USER_ID", "<USER_ID_HERE>");

#if UNITY_ANDROID
  Tapjoy.Connect("your_android_sdk_key", connectFlags);
#elif UNITY_IOS
  Tapjoy.Connect("your_ios_sdk_key", connectFlags);
#endif
```

프로그래밍 방식으로 로깅 레벨을 가져와 설정할 수도 있습니다.

```csharp
// Set logging level
Tapjoy.SetLoggingLevel(LoggingLevel.Debug);

// Get logging level
LoggingLevel loggingLevel = Tapjoy.GetLoggingLevel();
```

SDK를 사용하여 다른 작업(예: 광고 로드)을 수행하기 전에 SDK 연결이 완료되어야 합니다. 연결 이벤트에 의해 트리거되는 두 개의 이벤트 델리게이트, OnConnectSuccess와 OnConnectFailure가 있습니다. 델리게이트 함수를 선언하여 연결 이벤트를 수신합니다. onConnectSuccess가 실행되면 다른 SDK 함수를 사용할 수 있습니다.

SDK가 연결되지 않으면 파라미터 없이 Connect()를 호출하여 연결을 다시 시도할 수 있습니다. 그러면 SDK가 마지막으로 연결하려고 시도한 SDK 키를 사용하여 연결을 재시도합니다.

### 콜백##callbacks

SDK가 실행되었으니, 이제 베스트 프랙티스를 위한 코딩을 잠시 살펴볼 차례입니다. 오퍼월 SDK가 광고를 요청하거나 트래킹 데이터를 전송하기 전에, Unity 서버에 성공적으로 연결되어야 합니다. SDK가 성공적으로 연결되면 실행되는 델리게이트 함수 `OnConnectSuccess`가 표시됩니다. 광고 요청이나 데이터 트래킹과 같은 다른 기능을 사용하기 전에 SDK가 성공적으로 연결될 때까지 기다리십시오. 연결 중에 블로킹 이외 문제가 발생하면(또는 `connectSuccess` 이후에도) `OnConnectWarning` 콜백이 작동합니다. 현재 이 기능은 ConnectFlags로 전송된 UserId 관련 문제만 감지합니다. `OnConnectFailure`는 오류 발생 및 SDK 연결 실패를 나타냅니다.

```csharp
Tapjoy.OnConnectSuccess += HandleConnectSuccess;
...

public void HandleConnectSuccess() {
    Debug.Log ("Connect Success");

    // Now that we are connected we can start preloading our placements
    TJPlacement p = TJPlacement.CreatePlacement("my_placement");
    p.RequestContent();
}

Tapjoy.OnConnectWarning += HandleConnectWarning;
...

void HandleConnectWarning(int code, string message)
{
    
}

Tapjoy.OnConnectFailed += HandleConnectFailed
...

public void HandleConnectFailed(int code, string message){

}
```

부울 `Tapjoy.isConnected`를 확인하여 SDK 연결 상태를 확인할 수도 있습니다.
