# 快速入门

> 按照快速入门指南在 Android 上初始化 Tapjoy。

## SDK 集成##sdk-integration

### Maven（推荐）##maven-(recommended)

Maven 允许在应用程序的 build.gradle 文件中添加几行代码来集成 Offerwall。
要使用 Tapjoy，请将以下代码添加到 build.gradle 文件中：

```java
    repositories {
      maven {
        name "Tapjoy's maven repo"
        url 'https://sdk.tapjoy.com/'
      }
      maven {
        name 'Google'
        url 'https://maven.google.com/'
      }
    }

    dependencies {
      implementation 'com.tapjoy:tapjoy-android-sdk:14.4.0'
    }
```

### 添加应用权限和活动##add-app-permissions-and-activities

需要以下权限：

* `ACCESS_WIFI_STATE`（可选）

还需要将同样的 configChanges 添加到应用的清单活动中：

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

此时，最好编译并运行应用程序，以确保应用中的所有一切仍然正常。由于我们实际上没有对应用程序的代码执行任何操作，因此应用程序的运行情况不应有任何错误或变化。

#### AD\_ID 和 Google Play 家庭计划##ad\_id-and-the-google-play-families-program

Tapjoy 12.9.0 包含 `play-services-ads` v17.1.0。此版本的 `play-services-ads` 包含对于 Google Play 家庭计划成员来说必须移除的 `AD_ID` 权限。

您可以通过向清单中添加以下元素来排除该权限：

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

如需了解更多详细信息，请点击[此处](https://support.google.com/googleplay/android-developer/answer/6048248?hl=en-GB)。

## 连接到 Tapjoy##connect-to-tapjoy

下一步是将 Tapjoy connect 代码添加到您的应用程序中。这段关键代码将在应用程序中“激活”Offerwall SDK。

> **Note:**
>
> Tapjoy connect 调用极其重要，因为如果未能正确实现，Tapjoy 的所有产品或功能都将无法使用。

为了实现 Tapjoy connect 调用，需要为要集成的应用程序提供 Offerwall SDK 密钥。要查找此密钥，请在 Tapjoy 后台中导航到您的应用程序，然后选择顶部导航栏上的“Settings（设置）”按钮。导航到“App Settings（应用设置）”，然后在页面底部找到 SDK 密钥。

现在可以编写一些代码。将 Tapjoy 导入到您的活动中：

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

然后，在主活动的 `onCreate()` 方法中连接到 Tapjoy：

```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(getContext().getApplicationContext(), "SDK_KEY_GOES_HERE", connectFlags, new TJConnectListener() {
    @Override
    public void onConnectSuccess() {
        
    }
    @Override
    public void onConnectWarning(int code, String message) {
        
    }
    @Override
    public void onConnectFailure(int code, String message) {
        
    }    
}); 
```

在此代码中，您可以看到我们连接到 Tapjoy（监听成功、失败和警告回调），并配置了两个“连接标志”（日志记录和用户 ID）。`onConnectSuccess` 表示 SDK 已成功连接到 Tapjoy 服务器。如果我们成功连接但存在非阻塞问题，`onConnectWarning` 将首先触发。目前，此功能仅用于检测在 ConnectFlags 中发送的 UserId 的相关问题。如果我们无法成功连接到服务器，`onConnectFailure` 将触发。

发行商两个最常见和有用的连接标志是 **TJC\_OPTION\_LOGGING\_LEVEL** 和 **USER\_ID**。

您将在调试构建中使用日志记录标志，但务必在生产构建中禁用该标志，这一点非常重要。

使用自管货币时，设置 **USER\_ID** 标志至关重要。在连接时设置该标志非常重要，因为这将确保在调用任何广告位之前设置了该标志，从而防止潜在的奖励问题。

还有其他一些连接标志可用于帮助发行商控制 Tapjoy 如何使用操作系统提供的各种 Android 标识符：

| 标志                             | 描述                                                                                                                       | 注意                                                              |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- |
| `ALLOW_LEGACY_ID_FALLBACK`     | 如果设置了此标志，当广告 ID 不可用时，Offerwall SDK 会将持久 ID 用于广告目的。                                                                       | 在 SDK 12.2.1 及更高版本中可用。                                          |
| `DISABLE_ADVERTISING_ID_CHECK` | 默认情况下，Tapjoy 的 Android SDK 会检查是否存在 Google 广告标识符，如果没有找到，初始化将失败。设置此标志可以禁用这一检查，使 Offerwall SDK 即使在没有 Google 广告标识符的情况下也能初始化。 | 当应用中不存在 Google Play 服务时（例如，在非 Google Play 应用商店中构建发布版本时），此选项很有用。 |

如需查看所有连接标志的说明，请参阅 [Java SDK 参考](https://ltv.tapjoy.com/sdk/api/java/com/tapjoy/TapjoyConnectFlag.html)。

现在编译并运行您的应用程序。

### 最大用户等级##max-user-level

您可以告诉 Tapjoy 您的游戏中有多少关卡。此值可以在调用 connect 之前或之后设置。

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

### 用户细分段##user-segment

您可以通过调用 `setUserSegment` 将用户标识为某个细分段的一部分。此设置可以在调用 connect 之前或之后进行。

```java
Tapjoy.setUserSegment(TJSegment.VIP);
Tapjoy.setUserSegment(TJSegment.PAYER);
Tapjoy.setUserSegment(TJSegment.NON_PAYER);
Tapjoy.setUserSegment(TJSegment.UNKNOWN); 
```
