# 수동 연동

> .aar 파일을 다운로드하고 프로젝트의 libs 폴더에 추가하고 탭조이와 Google Play 서비스로 Gradle 종속성을 업데이트하여 탭조이 Android SDK를 수동으로 연동할 수 있습니다.

## SDK 다운로드##download-sdk

수동으로 SDK를 연동하려면 첫 단계로 [Android SDK를 다운로드](https://sdk.tapjoy.com/releases/14.8.0/TapjoySDK_Android_v14.8.0.zip)합니다.

## 프로젝트에 SDK 추가##add-the-sdk-to-your-project

SDK 압축을 풀면 문서, 라이브러리, TapjoyEasyApp을 확인할 수 있습니다.

1. 프로젝트의 /lib 폴더에 `tapjoyconnectlibrary.aar` 파일을 복사합니다. 폴더가 없으면 먼저 폴더를 생성합니다.
2. 애플리케이션의 build.gradle에 탭조이를 추가합니다.

```java
  dependencies {
    implementation files('libs/tapjoyconnectlibrary.aar')
  }
```

3. build.gradle에 Google Play 서비스를 추가합니다.

```java
repositories {
  maven {
    url 'https://maven.google.com/'
    name 'Google'
  }
}
```

```java
dependencies {
  implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
}
```

### 앱 권한 및 활동 추가##add-app-permissions-and-activities

다음 권한이 필요합니다.

* `ACCESS_WIFI_STATE`(선택 사항)

#### AD\_ID 및 Google Play 가족 프로그램##ad\_id-and-the-google-play-families-program

`play-services-ads` v17.1.0에는 Google Play 가족 프로그램의 구성원을 제거해야 하는 `AD_ID` 권한이 포함되어 있습니다.

매니페스트에 다음 요소를 추가하여 권한을 제외할 수 있습니다.

```java
  <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
```

자세한 내용은 [광고 ID에 관한 Play Console 도움말 기술 자료](https://support.google.com/googleplay/android-developer/answer/6048248)를 참고하십시오.

#### JAR 연동##jar-integration

AAR 대신 JAR 옵션을 사용하는 경우 다음 권한과 활동도 필요합니다.

* `INTERNET`
* `ACCESS_NETWORK_STATE`

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

현재 SDK 버전에서 탭조이의 모든 기능을 사용하려면 애플리케이션 블록의 `AndroidManifest.xml` 파일에 다음 활동을 추가합니다.

```java
 <activity
    android:name="com.tapjoy.TJAdUnitActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
    android:theme="@style/TranslucentTheme"
    android:enableOnBackInvokedCallback="true"
    android:hardwareAccelerated="true"
    tools:ignore="UnusedAttribute" />
<activity
    android:name="com.tapjoy.TJWebViewActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
    android:theme="@style/TranslucentTheme"
    android:enableOnBackInvokedCallback="true"
    android:hardwareAccelerated="true"
    tools:ignore="UnusedAttribute" />
```

또한 앱의 매니페스트 활동에 동일한 configChanges를 추가해야 합니다.

```java
android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
```

이 시점에서 애플리케이션을 컴파일하고 실행하여 앱의 모든 사항이 계속 작동하는지 확인하는 것이 좋습니다. 실제로 애플리케이션의 코드에는 아무 작업도 하지 않았으므로 애플리케이션의 작동 방식에 오류나 변경 사항이 없어야 합니다.

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

다음 단계로, 애플리케이션에 탭조이 연결 코드를 추가합니다. 이 코드의 키 비트는 애플리케이션에서 Offerwall SDK를 ‘활성화’합니다.

> **Note:**
>
> 탭조이 연결 호출이 제대로 구현되지 않으면 탭조이의 제품이나 기능이 작동하지 않으므로 이 연결 호출은 매우 중요합니다.

탭조이 연결 호출을 구현하려면 연동하려는 애플리케이션에 Offerwall SDK 키가 있어야 합니다. 이 키를 찾으려면 Tapjoy 대시보드에서 애플리케이션으로 이동하여 상단 내비게이션 바에서 'Settings' 버튼을 클릭합니다. ‘App Settings’로 이동하면 페이지 하단에 SDK 키가 표시됩니다.

이제 코드를 작성해 봅니다. 활동에 탭조이 임포트:

```java
  import com.tapjoy.Tapjoy
```

그런 다음 주요 활동의 `onCreate()` 메서드에서 다음과 같이 탭조이에 연결합니다.

```java
  Hashtable<String, Object> connectFlags = new Hashtable<String, Object>();
  connectFlags.put(TapjoyConnectFlag.TJC_OPTION_LOGGING_LEVEL, TJLogLevel.DEBUG); // Disable this in production builds
  connectFlags.put(TapjoyConnectFlag.USER_ID, "USER_ID_GOES_HERE"); // Important for self-managed currency

  Tapjoy.connect(getApplicationContext(), "SDK_KEY_GOES_HERE", connectFlags, new TJConnectListener() {
        @Override
        public void onConnectSuccess() {
          
        }
        @Override
        public void onConnectWarning(int code, String message) {
          
        }
        @Override
        public void onConnectFailure() {
          
        }
   });
```

이 코드에서는 탭조이에 연결(성공, 실패, 경고 콜백 수신)하고 2개의 ‘연결 플래그’(로깅, 사용자 ID)를 설정합니다. `onConnectSuccess`는 SDK가 탭조이 서버에 성공적으로 연결되었음을 나타냅니다. 성공적으로 연결되었지만 블로킹 이외 문제가 발생하면 `onConnectWarning`이 먼저 작동합니다. 현재 이 기능은 ConnectFlags에서 전송된 경우에만 UserId 관련 문제를 감지합니다. 서버에 연결할 수 없으면 `onConnectFailure`가 작동합니다.

퍼블리셔의 가장 일반적이고 유용한 2가지 연결 플래그는 **ENABLE\_LOGGING**과 **USER\_ID**입니다.

디버그 빌드에서는 로깅 플래그를 사용하지만, 프로덕션용 빌드 시에는 이를 비활성화하는 것이 중요합니다.

자체 관리형 재화를 사용할 때 **USER\_ID** 플래그 설정은 필수입니다. 연결 시 설정하면 플레이스먼트가 호출되기 전에 설정되어 잠재적인 보상 문제를 방지할 수 있으므로 중요합니다.

퍼블리셔가 운영체제에서 제공하는 다양한 Android 식별자를 탭조이에서 사용하는 방식을 제어하는 데 도움이 되는 몇 가지 연결 플래그는 다음과 같습니다.

| 플래그                            | 설명                                                                                                                                                       | 참고                                                                             |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `ALLOW_LEGACY_ID_FALLBACK`     | 이 플래그가 설정되어 있으면 Offerwall SDK는 광고 ID를 사용할 수 없는 경우 광고 목적으로 영구 ID를 사용합니다.                                                                                  | 이는 SDK 버전 12.2.1 이상에서 지원됩니다.                                                   |
| `DISABLE_ADVERTISING_ID_CHECK` | 기본적으로 탭조이의 Android SDK는 Google 광고 식별자가 있는지 확인하며, 이를 찾지 못하면 초기화를 수행하지 못합니다. 이 플래그를 설정하면 Offerwall SDK가 Google 광고 식별자가 없더라도 초기화할 수 있도록 이 확인을 비활성화할 수 있습니다. | 이는 Google Play가 아닌 앱 스토어에서 릴리스할 빌드를 만들 때와 같이 앱에 Google Play 서비스가 없는 경우에 유용합니다. |

모든 연결 플래그에 관한 설명은 [Java SDK 레퍼런스](https://ltv.tapjoy.com/sdk/api/java/com/tapjoy/TapjoyConnectFlag.html)를 참고하십시오.

이제 애플리케이션을 컴파일하고 실행합니다.

Tapjoy 대시보드의 상단 내비게이션에서 **애널리틱스를** 선택하고 왼쪽 내비게이션에서 "Real-time" 탭을 선택하면 애플리케이션 실행 직후에 애플리케이션의 활동이 표시됩니다.
