# 手动集成

> 手动集成 Tapjoy Android SDK，包括下载 .aar 文件，将其添加到项目的 libs 文件夹中，并更新 Gradle 依赖项以包含 Tapjoy 和 Google Play 服务。

## 下载 SDK##download-sdk

为了手动集成 SDK，第一步是[下载 Android SDK](https://sdk.tapjoy.com/releases/14.8.0/TapjoySDK_Android_v14.8.0.zip) 本身。

## 将 SDK 添加到您的项目中##add-the-sdk-to-your-project

解压缩 SDK 后，您将发现有文档、库和 TapjoyEasyApp。

1. 将 `tapjoyconnectlibrary.aar` 文件复制到项目的 /lib 文件夹（如果没有该文件夹，请先创建该文件夹）
2. 将 Tapjoy 添加到应用程序的 build.gradle：

```java
  dependencies {
    implementation files('libs/tapjoyconnectlibrary.aar')
  }
```

3. 将 Google Play 服务添加到 build.gradle：

```java
repositories {
  maven {
    url 'https://maven.google.com/'
    name 'Google'
  }
}
```

```java
dependencies {
  implementation 'com.google.android.gms:play-services-ads-identifier:17.1.0'
}
```

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

需要以下权限：

* `ACCESS_WIFI_STATE`（可选）

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

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

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

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

如需了解更多信息，请参阅[有关 Advertising ID（广告 ID）的 Play Console 帮助文档](https://support.google.com/googleplay/android-developer/answer/6048248)。

#### JAR 集成##jar-integration

如果使用 JAR 选项而不是 AAR，还需要以下权限和活动。

* `INTERNET`
* `ACCESS_NETWORK_STATE`

```java
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
```

要使用 Tapjoy 当前 SDK 版本的完整功能，请将以下活动添加到 `AndroidManifest.xml` 文件的 Application 代码块中：

```java
 <activity
    android:name="com.tapjoy.TJAdUnitActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
    android:theme="@style/TranslucentTheme"
    android:enableOnBackInvokedCallback="true"
    android:hardwareAccelerated="true"
    tools:ignore="UnusedAttribute" />
<activity
    android:name="com.tapjoy.TJWebViewActivity"
    android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
    android:theme="@style/TranslucentTheme"
    android:enableOnBackInvokedCallback="true"
    android:hardwareAccelerated="true"
    tools:ignore="UnusedAttribute" />
```

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

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

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

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

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

发行商两个最常见和有用的连接标志是 **ENABLE\_LOGGING** 和 **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)。

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

在 Tapjoy 后台中，如果单击顶部导航栏的“**Analytics**（分析）”，然后单击左侧导航栏中的“Real-time（实时）”选项卡，则会在运行应用程序后不久显示应用程序的活动。
