# 更新ガイド

> Unity の更新ガイドに従って、非推奨になったメソッドを削除し、更新された代替手段を採用して統合の問題を回避することで、Tapjoy SDK のバージョン間で安全にアップグレードできます。

このガイドでは、Tapjoy 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* を呼び出す前に、エントリーポイントを設定できます。これは、プレースメントがアプリのどこに表示されるかを示します。複数のプリセット値から 1 つを選択できます。

```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); 
```
