# 업데이트 가이드

> SDK 버전 간에 안전하게 업그레이드하려면 Unity 플러그인 업데이트 가이드에 나와 있는 단계를 따릅니다.

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

## 14.2.0##14.2.0

* 지원 중단된 TJPlacement didClick 콜백의 모든 사용을 제거합니다. 다음 메이저 버전에서 제거되며 더 이상 아무 기능도 하지 않습니다.
* 지원 중단된 getSupportUrl 메서드의 모든 사용을 제거합니다. 다음 메이저 버전에서 제거되며 더 이상 아무 기능도 하지 않습니다.

## 14.0.0##14.0.0

* 지원 중단된 `Tapjoy.TrackPurchase` 메서드의 사용을 새로운 `Tapjoy.TrackPurchase(string currencyCode, double productPrice)` 메서드로 대체합니다.

## 13.4.0##13.4.0

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

```csharp
Tapjoy.OnConnectWarning += HandleConnectWarning;

void HandleConnectWarning(int code, string message)
{
    
}
```

## 13.2.0##13.2.0

### Connect##connect

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

```csharp
void Start() {	
    // Connect Delegates	
    Tapjoy.OnConnectSuccess += HandleConnectSuccess;	
    Tapjoy.OnConnectFailed += HandleConnectFailed;
	// Deprecated since 13.2.0	
    Tapjoy.OnConnectFailure += HandleConnectFailure;
    }
void OnDisable(){	
    // Connect Delegates	
    Tapjoy.OnConnectSuccess -= HandleConnectSuccess;	
    Tapjoy.OnConnectFailed -= HandleConnectFailed;
	// Deprecated since 13.2.0	
    Tapjoy.OnConnectFailure -= HandleConnectFailure;
    }
public void HandleConnectFailed(int code, string message){

}
// Deprecated since 13.2.0public void HandleConnectFailure(){
} 
```

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

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

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

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

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

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

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

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

```csharp
TJPlacement placement = TJPlacement.CreatePlacement("placementName");
placement.SetEntryPoint(TJEntryPoint.COMPLETE); 

// Available values
TJEntryPoint.UNKNOWN
TJEntryPoint.OTHER
TJEntryPoint.MAIN_MENU
TJEntryPoint.HUD
TJEntryPoint.EXIT
TJEntryPoint.FAIL
TJEntryPoint.COMPLETE
TJEntryPoint.INBOX
TJEntryPoint.INIT
TJEntryPoint.STORE 
```

### 재화##currency

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

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

```csharp
TJPlacement placement = TJPlacement.CreatePlacement("placementName");
placement.SetCurrencyBalance("[CURRENCY_ID]", 100);

// Callbacks

void OnEnable() 
{	
    TJPlacement.OnSetCurrencyBalanceSuccess += HandleSetCurrencyBalanceSuccess;	
    TJPlacement.OnSetCurrencyBalanceFailure += HandleSetCurrencyBalanceFailure;	
}

void OnDisable() 
{	
    TJPlacement.OnSetCurrencyBalanceSuccess -= HandleSetCurrencyBalanceSuccess;	
    TJPlacement.OnSetCurrencyBalanceFailure -= HandleSetCurrencyBalanceFailure;
}

public void HandleSetCurrencyBalanceSuccess(TJPlacement placement) 
{

}

public void HandleSetCurrencyBalanceFailure(TJPlacement placement, int code, string error)
{

}
```

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

```csharp
TJPlacement placement = TJPlacement.CreatePlacement("placementName");
placement.SetRequiredAmount("[CURRENCY_ID]", 200); 

// Callbacks

void OnEnable() 
{	
    TJPlacement.OnSetCurrencyAmountRequiredSuccess += HandleSetRequiredAmountSuccess;	
    TJPlacement.OnSetCurrencyAmountRequiredFailure += HandleSetRequiredAmountFailure;}

void OnDisable() 
{	
    TJPlacement.OnSetCurrencyAmountRequiredSuccess -= HandleSetRequiredAmountSuccess;	
    TJPlacement.OnSetCurrencyAmountRequiredFailure -= HandleSetRequiredAmountFailure;
}

public void HandleSetCurrencyBalanceSuccess(TJPlacement placement)
{

}

public void HandleSetCurrencyBalanceFailure(TJPlacement placement, int code, string error)
{

}

public void HandleSetRequiredAmountSuccess(TJPlacement placement)
{

}
public void HandleSetRequiredAmountFailure(TJPlacement placement, int code, string error)
{

}
```

## 12.8.1##12.8.1

업데이트하기 전에 `Assets > Plugins > Android`에서 탭조이와 Google Play 서비스 파일을 전부 삭제합니다.

이제 Offerwall SDK는 EDM(External Dependency Manager)이 Maven을 사용하여 관리합니다. EDM은 Tapjoy Unity 플러그인의 일부로 포함되며 Android를 지원하는 데 필요합니다.

### 커스텀 Gradle 템플릿##custom-gradle-templates

커스텀 Gradle 템플릿을 사용하는 경우 Jetifier를 활성화해야 합니다.

사용 중인 Unity 에디터 버전의 옵션인 경우 커스텀 Gradle 프로퍼티 파일도 사용해야 합니다.

## 12.8.0##12.8.0

업데이트하기 전에 `Assets > iOS`에서 Resources 폴더와 Tapjoy.framework를 삭제합니다.

이제 Offerwall SDK는 EDM(External Dependency Manager)이 CocoaPods를 사용하여 관리합니다. EDM은 Tapjoy Unity 플러그인의 일부로 포함되며 iOS를 지원하는 데 필요합니다. CocoaPods 버전이 1.9.0 이상이고 Xcode 버전이 11.0 이상이어야 합니다.
