# 更新指南

> 按照 Unity 更新指南移除已弃用的方法并采用更新的替代方法以防止集成问题，从而在 Tapjoy SDK 版本之间进行安全升级。

本指南介绍从一个 Tapjoy SDK 版本更新到另一个版本时所需的步骤，建议您执行所有步骤以防止出现任何问题或冲突。

## 14.3.0##14.3.0

此版本修改了 connect 调用的工作方式。以前如下所示：

```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 开始，connect 调用如以下示例所示：

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

我们向 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

在调用\_请求连接\_之前，可以设置入口点。该设置用于指定广告位将在应用中的显示位置。您可以从多个预设值中选择一个值。

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