# APS 集成(legacy)

> 通过设置广告位、在 LevelPlay 平台上配置 APS 并将 APS 适配器添加到构建中来整合 Amazon Publisher 服务(APS)。

> **Important:**
>
> 以下文档涉及非 Unity 开发、拥有或运营的产品或服务（“第三方产品”）。
> 这些信息可能已过时或不完整，仅为方便您参考才提供。
> 您对任何第三方产品的使用均受产品自身条款的约束。
> Unity 对这些产品不提供任何担保，也不对因使用这些产品而造成的任何损害或损失负责，包括与第三方供应商提供的内容、广告或材料有关的问题。

> **Note:**
>
> 本指南适用于旧版 LevelPlay SDK 版本 (8.0.0+)。有关 9.0.0 及更高版本的最新文档，请参阅 [APS 集成](aps-v9)。

> **Note:**
>
> 要查看此聚合网络的适配器更改日志，请参阅[iOS 聚合网络](/grow/levelplay/sdk/ios/mediation-networks.md.md#integrate-network-adapters)。

## 先决条件

Amazon 发布者服务 (APS) 是一个仅限邀请的计划。要集成 APS，您需要集成和初始化 LevelPlay SDK 和 APS SDK。确保执行以下详细说明的完整集成流程，以便在应用程序中显示 APS 广告服务。

## 步骤 1.创建 APS 帐户

1. 联系 APS 以设置app程序的帐户。要创建 APS 帐户，请访问 [APS 网站](https://aps.amazon.com/aps/contact-us/)，选择 **联系我们** 并提出申请。
2. 如果您的 APS 请求获得批准，您将收到一个邀请链接，用于在 APS 中注册和创建帐户。
3. 在 LevelPlay 中设置 APS 之前，必须完成上述步骤。 

## 步骤 2.在 APS 网络中设置席位

1. 从 apps 菜单中选择正确的应用程序并选择 **setup**
2. 选择 **IronSource LevelPlay** 作为 Monetization 服务设置菜单
3. 添加字段并为每个字段定义：
   1. Name（名称）
   2. 广告大小
   3. 价格点（自动/手动）
4. 完成添加所有字段并获取凭据：
   1. 获取 app ID
   2. 下载价格点 CSV 文件

## 步骤 3.激活 APS 网络

在 ironSource 平台中，访问 SDK Networks 设置以将 APS 参数配置为 LevelPlay 帐户。

1. 获得上述凭据后，登录 LevelPlay 帐户，然后选择 **Monetize** > **Setup** > **SDK** ****Networks****
2. 从 **Available Networks** 的表中选择 APS，然后选择 **Activate**。

![选择 APS 并选择 Activate](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.45.52.png)

3. 从广告网络列表中选择 APS，然后选择 **Setup**。

![选择 APS 并选择 Setup](/api/media?file=/grow/media/images/Screen-Shot-2021-12-30-at-8.47.04.png)

4. 输入您的 APS app ID 并按原样上传 CSV 文件。

![输入 app ID 并上传 CSV](/api/media?file=/grow/media/images/Screen-Shot-2021-12-29-at-22.46.02.png)

## 步骤 4.将 APS 适配器添加到构建中##step-4.-add-the-aps-adapter-to-your-build

### Cocoapods##cocoapods

要将 APS SDK 与 Cocoapods 集成，请在 pod 文件中输入以下行，即可开始使用！

```objective-c
pod 'IronSourceAPSAdapter','4.3.20.0'
```

## 步骤 5。更新 SKAdNetworkItems 和 Info.plist##step-5.-update-skadnetworkitems-and-info.plist

务必使用以下代码将 APS **SKAdNetworkItems** 定义为 Info.plist：

```xml
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
</array>
```

## 步骤 6。**Init APS SDK**##step-6.-**init-aps-sdk**

APS 网络要求初始化 ironSource 和 APS SDK 以显示 APS 广告服务。 

在打开应用程序后以及在初始化 LevelPlay SDK 之前，立即初始化 APS SDK。使用 APS 设置的步骤 2 中定义的 APS app ID。 

```objective-c
#import <DTBiOSSDK/DTBiOSSDK.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { }
  [[DTBAds sharedInstance] setAppKey: @"APS_app_id"];
  return YES;
}
```

> **Note:**
>
> 从 APS iOS SDK 5.0.0+ 开始，**DTBAdLoader** 对象接受一个名为 **DTBAdNetworkInfo** 的新参数。请注意以下示例中的实现差异。

### 加载横幅/MREC 广告服务##load-banner/mrec-ads

1. 在每个 IronSource 广告单元加载之前调用宽度为 320 或 728 的 APS 横幅广告请求。创建加载广告请求时使用 Slot UUID。
   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:height andSlotUUID:slotUID]; 
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

   * APS iOS SDK 低于 5.0.1：

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:height andSlotUUID:slotUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];

     ```

      
2. 如果成功加载了 APS 广告，请与 ironSource 共享广告数据。这应该包括以下参数：

   1. 出价信息：显示 Amazon 广告所需的信息
   2. Price Point 编码：从 APS 返回的获胜广告价格
   3. UUID：插槽唯一标识符
   4. Width：横幅宽度
   5. Height：横幅高度

   ```objective-c
   - (void)onSuccess：(DTBAdResponse *)adResponse{ 
     
       NSString* amznPricePoint = [adResponse amznSlots];
       NSDictionary* mediationHints = [adResponse mediationHints];
       
       NSNumber* width = [NSNumber numberWithInt:adSize.width];
       SNumber* height = [NSNumber numberWithInt:adSize.height];
           
       NSDictionary* bannerData = @{@"uuid":slotUUID, @"width":width, @"height":height, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
       NSDictionary* apsData = @{IS_BANNER:bannerData};
           
       [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
   }
   ```

   如果 APS 未返回填充，请调用 LevelPlay 的加载横幅方法。
3. 加载 ironSource 横幅广告。在[此处](/grow/levelplay/sdk/ios/banner-integration.md)了解更多信息。

> **Note:**
>
> 如果选择使用 ironSource 的自动刷新机制，请确保在每次展示后调用 APS 加载广告服务。  这将确保 APS 横幅广告也能参与下一次拍卖。如果不想维护此逻辑，请取消刷新机制，并在销毁前一个广告后手动加载每个广告。

### 加载插页式广告服务##load-interstitial-ads

1. 在每次加载 ironSource 广告单元之前调用 APS 插页式广告请求。创建加载广告请求时使用 Slot UUID。
   APS iOS SDK 5.0.1+:

   ```objective-c
   DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:slotUUID]; 
   DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
   DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
   [adLoader setSizes:size, nil]; 
   [adLoader loadAd:self];
   ```

   APS iOS SDK 低于 5.0.1：

   ```objective-c
   DTBAdSize *size = [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:slotUUID];
   DTBAdLoader *adLoader = [DTBAdLoader new];
   [adLoader setSizes:size, nil];
   [adLoader loadAd:self];
   ```

   LevelPlay 从 APS 适配器 4.3.3 开始支持 APS 插页式视频广告服务。要加载插页式视频，请调用以下方法：

   如果 app 处于纵向模式：

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 低于 5.0.1：

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

   如果 app 处于横向模式：

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 低于 5.0.1：

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

2. 如果成功加载了 APS 广告，请与 ironSource 共享广告数据。这应该包括以下参数：
   1. 出价信息：显示 Amazon 广告所需的信息
   2. Price Point 编码：从 APS 返回的获胜广告价格
   3. UUID：插槽唯一标识符

      ```objective-c
      - (void)onSuccess：(DTBAdResponse *)adResponse{ //svt on onSuccess
          
          NSString* amznPricePoint = [adResponse amznSlots];
          NSDictionary* mediationHints = [adResponse mediationHints];
          NSDictionary* isData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
          NSDictionary* apsData = @{IS_INTERSTITIAL:isData};
              
          [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
      }
      ```

      如果 APS 未返回填充，则调用 LevelPlay 的加载 Interstitial 方法。

3. 加载 ironSource 插页式广告。在[此处](/grow/levelplay/sdk/ios/interstitial-integration.md)了解更多信息。

### 奖励广告##rewarded-ads

APS 集成因您在 app 中实现的奖励广告服务运营模式而异。 

1. 手动加载模式：这是与 APS 集成的推荐设置。这将要求您在每次加载奖励广告之前调用 APS 广告请求。
2. 奖励广告服务默认模式（自动）：使用 LevelPlay 默认模式显示奖励广告服务时，需要在初始化 LevelPlay SDK 和初始化 APS SDK 之前加载第一个 APS 广告。此外，我们建议在每次显示之前调用下一个 APS 加载请求，从而影响下一个瀑布流请求。

### 加载奖励广告服务##load-rewarded-ads

1. 在每次加载 IronSource 广告单元之前（或在展示之前，在自动模式下）调用 APS 奖励广告请求。创建加载广告请求时使用 Slot UUID。****如果 app 处于纵向模式：****

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 低于 5.0.1：

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:320 height:480 andSlotUUID:slotUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

   如果 app 处于横向模式：

   * APS iOS SDK 5.0.1+:

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUID];
     DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName:DTBADNETWORK_Unity_levelPLAY];
     DTBAdLoader *loader = [[DTBAdLoader alloc]initWithAdNetworkInfo:adNetworkInfo];
     [adLoader setSizes:size, nil]; 
     [adLoader loadAd:self];
     ```

      
   * APS iOS SDK 低于 5.0.1：

     ```objective-c
     DTBAdSize *大小 = [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:480 height:320 andSlotUUID:slotUID];
     DTBAdLoader *adLoader = [DTBAdLoader new];
     [adLoader setSizes:size, nil];
     [adLoader loadAd:self];
     ```

2. 如果成功加载了 APS 广告，请与 ironSource 共享广告数据。这应该包括以下参数：
   1. 聚合提示：显示 Amazon 广告所需的信息
   2. Price Point 编码：从 APS 返回的获胜广告价格
   3. UUID：插槽唯一标识符

```objective-c
- (void)onSuccess：(DTBAdResponse *)adResponse{
    
    NSString* amznPricePoint = [adResponse amznSlots];
    NSDictionary* mediationHints = [adResponse mediationHints];
    NSDictionary* rvData = @{@"uuid":slotUUID, @"pricePointEncoded":amznPricePoint, @"mediationHints":mediationHints};
    NSDictionary* apsData = @{IS_REWARDED_VIDEO:rvData};
        
    [IronSource setNetworkDataWithNetworkKey:@"APS" andNetworkData:apsData];
}
```

如果 APS 未返回填充，请调用 LevelPlay 的加载奖励方法。

您现在可以在应用程序中交付 APS 需求。

## 后续步骤##next-steps

要通过 LevelPlay 利用其他广告网络，请集成网络[适配器](/grow/levelplay/sdk/ios/mediation-networks.md)并按照我们的集成指南进行操作。
