# 集成适用于 iOS 的广告品质 SDK

> 将广告品质 SDK 集成到 iOS app 中以监控和分析广告效果，并使用 app 密钥对其进行初始化。

Ad Quality 有助于监控和控制用户看到的广告内容，确保内容与应用程序的目标保持一致并增强用户体验。在投放吸引受众的相关广告的同时，最大限度发挥收入潜力。

> **Note:**
>
> 从版本 8.9.0 开始，Ad 品质 集成到 LevelPlay SDK 中，并在实现 LevelPlay 时自动初始化。如果未在构建中实现 LevelPlay，或使用早于 8.9.0 的 LevelPlay SDK 版本，则适用以下概述的步骤。

## 先决条件##prerequisites

按照我们的[分步指南](/grow/levelplay/platform/get-started/create-account.md)，在 LevelPlay 平台中配置应用程序

## 步骤 1：将广告品质 SDK 导入 app##step-1:-import-the-ad-quality-sdk-to-your-app

### CocoaPods##cocoapods

[CocoaPods](http://cocoapods.org/) 是 Objective-C 和 Swift 的依赖项管理器；它可以自动执行并简化 SDK 集成过程。请参阅 CocoaPods [入门](http://guides.cocoapods.org/using/getting-started.html)和[使用 CocoaPods](http://guides.cocoapods.org/using/using-cocoapods.html)指南以了解更多信息。

要将 SDK 与 Cocoapods 集成，请在 pod 文件中输入以下行：

```text
pod 'IronSourceAdQualitySDK','9.3.1'
```

## 步骤 2：初始化 SDK##step-2:-initialize-the-sdk

1. 使用 ironSource app 密钥初始化广告品质 SDK，该密钥可在 Unity LevelPlay 平台中找到。
2. 将以下代码添加到app程序的主线程中，或与其他广告网络 SDK 位于同一线程中，以初始化 Ad 品质 SDK：

将以下代码添加到主 ViewController 的 viewDidLoad 方法中：

```text
#import "IronSourceAdQuality.h"
 
@implementation ViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Initialize 
    [[IronSourceAdQuality getInstance] initializeWithAppKey:appKey]; 
} 
@end
```

## 步骤 3（可选）：高级 SDK 初始化##step-3-(optional):-advanced-sdk-initialization

> **Note:**
>
> 要使用以下配置，请在初始化 LevelPlay SDK 之前初始化广告品质 SDK。

自定义集成设置，从而使用以下特殊配置获得更多功能：

1. 用户 ID：使用您自己的用户 ID，而不是 Ad 品质 中的默认 ID
2. 测试模式：测试 Ad Quality SDK 集成（默认值为 false）
3. 日志级别：选择要调试代码问题的日志级别（默认值为 INFO）

使用以下代码，通过构建器创建配置对象。

```text
ISAdQualityConfig *adQualityConfig = [ISAdQualityConfig config];
```

### 用户 ID##user-id

Ad Quality SDK 提供了两个选项来配置您的用户 ID：

1. 使用您自己的用户 ID，并在初始化之前或期间添加它们：

```text
adQualityConfig.userId = userId;
// The default user id is Ad Quality internal id.
// The user id cannot be null and must be between 2 and 100 characters, otherwise it will be blocked.
```

2. 在初始化 Ad 品质 SDK 后更默认用户 ID，因为 ID 的情况稍后设置。

```text
[[IronSourceAdQuality getInstance] changeUserId:userId];
// The default user id is Ad Quality internal id.
// The user id cannot be null and must be between 2 and 100 characters, otherwise it will be blocked.
```

### **测试模式**##**test-mode**

```text
adQualityConfig.testMode = YES;
// The default is NO - set to true only to test your Ad Quality integration
```

### **日志级别**##**log-level**

```text
adQualityConfig.logLevel = IS_AD_QUALITY_LOG_LEVEL_INFO;
// There are 5 different log levels:
// IS_AD_QUALITY_LOG_LEVEL_ERROR,
// IS_AD_QUALITY_LOG_LEVEL_WARNING,
// IS_AD_QUALITY_LOG_LEVEL_INFO,
// IS_AD_QUALITY_LOG_LEVEL_DEBUG,
// IS_AD_QUALITY_LOG_LEVEL_VERBOSE
// The default is IS_AD_QUALITY_LOG_LEVEL_INFO

[[IronSourceAdQuality getInstance] initializeWithAppKey:appKey andConfig:adQualityConfig];
```

## 步骤 4（可选）：配置 SDK 回调事件##step-4-(optional):-configure-sdk-callback-events

> **Note:**
>
> 如果使用 LevelPlay，请确保先初始化 Ad Quality，以便使用以下功能。

您的回调应在单独的类中实现，并且与 Ad Quality SDK 初始化的位置相同。

ISAdQualityInitDelegate：

```text
#import "IronSourceAdQuality.h"

@interface ViewController ()：NSObject<ISAdQualityInitDelegate>
@end

@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  ISAdQualityConfig *config = [ISAdQualityConfig config];
  [config setAdQualityInitDelegate:self];

  // Initialize
  [[IronSourceAdQuality getInstance] initializeWithAppKey:appKey
  andConfig:config];
}
- (void)adQualitySdkInitSuccess {
   NSLog(@"adQualitySdkInitSuccess");
}
- (void)adQualitySdkInitFailed:(ISAdQualityInitError) 报错 withMessage:(NSString *)message {
   NSLog(@"adQualitySdkInitFailed %u message: %@", error, message);
}

@end
```

> **Note:**
>
> 初始化 Ad Quality SDK 所需的时间取决于集成到应用中的广告网络 SDK 的数量。网络连接问题也可能导致延时。初始化平均需要 3 到 4 秒。

## 步骤 5（可选）：将广告展示级别的广告收入上报给 Ad Quality SDK##step-5-(optional):-report-impression-level-ad-revenue-to-ad-quality-sdk

> **Note:**
>
> 如果使用 LevelPlay，请确保先初始化 Ad Quality，以便使用以下功能

> **Note:**
>
> 该功能仅支持全屏广告服务。对于 LevelPlay、MAX 和 DT FairBid，此数据会自动收集

广告品质 SDK 7.2.0+ 支持展示级别广告收入报告：

要在 Ad Quality SDK 中上报广告展示级别的广告收入，请将以下代码片段添加到 SDK 集成中。

> **Important:**
>
> 应在广告展示时调用 `sendCustomMediationRevenue` 方法，在广告生命周期之外调用此方法将没有影响

```text
 ISAdQualityCustomMediationRevenue *customMediationRevenue = [[ISAdQualityCustomMediationRevenue alloc] init];
   customMediationRevenue.mediationNetwork = IS_AD_QUALITY_MEDIATION_NETWORK_SELF_MEDIATED;
   customMediationRevenue.adType = IS_AD_QUALITY_AD_TYPE_REWARDED;
   customMediationRevenue.placement = "placement";
   customMediationRevenue.revenue = 0.12;
   [[IronSourceAdQuality getInstance] sendCustomMediationRevenue:customMediationRevenue];
```

如果使用 AdMob 聚合，请按照以下步骤操作：

1. 要求 AdMob 客户经理[启用 AdMob 广告展示级别 LTV (iLTV)](https://support.google.com/admob/answer/11322405)
2. 验证您在 [Android](https://developers.google.com/admob/android/quick-start) 或 [iOS](https://developers.google.com/admob/ios/quick-start) 上使用的是 GMA SDK 8.12.0 或更高版本，并且该版本支持 iLTV
3. 将以下代码片段添加到 Ad Quality SDK 集成中：

```text
GADRewardedAd* rewardAd;
[GADRewardedAd loadWithAdUnitID：@"AD_UNIT_ID"
request:request
completionHandler：^(GADRewardedAd *ad, NSError *报错) {
   if (error) {
     NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
     return;
   }
   self.rewardedAd = ad;
   self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull adValue){
   ISAdQualityCustomMediationRevenue *customMediationRevenue = [[ISAdQualityCustomMediationRevenue alloc] init];
   customMediationRevenue.mediationNetwork = IS_AD_QUALITY_MEDIATION_NETWORK_ADMOB;
   customMediationRevenue.adType = IS_AD_QUALITY_AD_TYPE_REWARDED;
   customMediationRevenue.placement = [rewardedAd adUnitID];
   customMediationRevenue.revenue = adValue.value.doubleValue;
   [[IronSourceAdQuality getInstance] sendCustomMediationRevenue:customMediationRevenue];
  }
}];
```
