# 업데이트 가이드

> 탭조이 SDK 버전 간 안전하게 업그레이드하려면 Unity 업데이트 가이드를 따라 사용 중단된 메서드를 제거하고 업데이트된 대체 방법을 채택하여 통합 문제를 방지합니다.

이 가이드에서는 하나의 탭조이 SDK 버전에서 다른 버전으로 업데이트할 때 필요한 단계를 설명합니다. 모든 단계를 수행하여 문제나 충돌이 발생하는 것을 방지합니다.

## 14.3.0##14.3.0

이번 버전에서 연결 호출 방식이 변경되었습니다. 이전에는 다음과 같은 모습이 보였습니다.

```javascript
try {
    let sdkKey = Platform.OS === 'ios' ? 'ios-sdk-key' : 'android-sdk-key'
    let flags: object = {TJC_OPTION_USER_ID: 'userId'};
    await Tapjoy.connect(sdkKey, flags);
} catch (error: any) {
    let errorString = `Tapjoy SDK failed to connect. code: ${error.code}, message: ${error.message}`;
}
```

14.3.0부터는 다음 예제와 유사하게 연결합니다.

```javascript
try {
 let sdkKey = Platform.OS === 'ios' ? 'ios-sdk-key' : 'android-sdk-key'
 let flags: object = { TJC_OPTION_USER_ID: 'userId' };
 await Tapjoy.connect(sdkKey, flags, (event: TapjoyEvent) => {
     // Handle Warning
   },
 );

 // Handle Success
} catch (error: any) {
 // Handle Failure
}
```

## 13.4.0##13.4.0

새로운 `connectWarning` 콜백이 추가되었습니다. 연결 중에 블로킹 이외 문제가 발생할 때 작동하며, 이후 `connectSuccess`가 작동합니다. 현재 이 기능은 ConnectFlags에서 전송된 경우에만 UserId 관련 문제를 감지합니다.

```javascript
import {
  NativeEventEmitter,
  NativeModules,
} from 'react-native';

const TJ = NativeModules.TapjoyReactNativeSdk;
      const TapjoyEmitter = new NativeEventEmitter(TJ);
      const TapjoyEventType = 'Tapjoy';
      const subscription = TapjoyEmitter.addListener(
        TapjoyEventType,
        (event: TapjoyEvent) => {
          if (event.name === TJConnect.TJC_CONNECT_WARNING) {
            subscription.remove();
            setStatusLabelText(
              `Tapjoy SDK connected with Warning: ErrorCode: ${event.code} ${event.message} `
            );
          }
        }
      );
```

사용자 태그에 대한지원도 추가되었습니다

```javascript
Tapjoy.addUserTag('');
Tapjoy.removeUserTag('');
Tapjoy.clearUserTags();
```

## 13.2.0##13.2.0

### Connect##connect

오류 코드와 메시지 파라미터를 connectFailure 콜백에 추가했습니다. 이전 콜백은 이제 사용 중단되었지만 여전히 작동합니다.

```javascript
try {
  await Tapjoy.connect(sdkKey, flags);
} catch (error: any) {
  let errorString = `Tapjoy SDK failed to connect. code: ${error.code}, message: ${error.message}`;
} 
```

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

이제 게임의 레벨 개수를 설정할 수 있습니다. 연결 전이나 후에 설정할 수 있습니다.

```javascript
Tapjoy.setMaxLevel(10); 
```

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

이제 현재 앱을 사용하는 사용자 유형을 설정할 수 있습니다. 연결 전후나 세션 중에 설정할 수 있습니다.

```javascript
Tapjoy.setUserSegment(TJSegment.VIP);
Tapjoy.setUserSegment(TJSegment.Payer);
Tapjoy.setUserSegment(TJSegment.NonPayer);
Tapjoy.setUserSegment(TJSegment.Unknown);
```

### 엔트리 포인트##entry-point

\_request connect\_를 호출하기 전에 엔트리 포인트를 설정할 수 있습니다. 이는 앱에서 플레이스먼트가 표시되는 위치를 설명합니다. 여러 프리셋 값 중 하나를 선택할 수 있습니다.

```javascript
let placement = new TJPlacement("myPlacement");
placement.setEntryPoint(TJEntryPoint.TJEntryPointMainMenu);
placement.requestContent(); 

// Available values
TJEntryPointUnknown
TJEntryPointOther
TJEntryPointMainMenu
TJEntryPointHud
TJEntryPointExit
TJEntryPointFail
TJEntryPointComplete
TJEntryPointInbox
TJEntryPointInit
TJEntryPointStore
```

### 재화##currency

* get, spend, earn에서는 이제 음수 값을 사용할 수 없습니다.
* 자체 관리형 재화가 관리형 재화 API를 호출하면 오류가 반환됩니다.

이제 플레이스먼트를 생성하기 전에 사용자 잔액을 설정할 수 있습니다. *requestContent* 이전에 설정해야 합니다.

```javascript
let placement = new TJPlacement('placementName');
try {
  await placement?.setCurrencyBalance('1234', 100);
} catch (e: any) {
  let code = e.code;
  let message = e.message;
}
```

사용자가 각 플레이스먼트에서 목표를 달성하는 데 필요한 재화를 설정할 수도 있습니다.

```javascript
let placement = new TJPlacement('placementName');
try {
await offerwallPlacement?.setRequiredAmount(100, '100');
} catch (e: any) {
  let code = e.code;
  let message = e.message;
} 
```

### 사용자 개인정보 보호##user-privacy

다른 플랫폼과 일치하도록 인터페이스가 업데이트되었습니다. Android `optOutAdvertisingId` 인터페이스에 대한 지원도 추가되었습니다.

```javascript
let privacyPolicy = new TJPrivacyPolicy();
privacyPolicy.setSubjectToGDPRStatus(TJStatus.True);
privacyPolicy.setBelowConsentAgeStatus(TJStatus.False);
privacyPolicy.setUserConsentStatus(TJStatus.Unknown);
privacyPolicy.setUSPrivacy('1---');
privacyPolicy.optOutAdvertisingID(false); 
```
