全局设置

GADMobileAds 类提供了全局设置,用于控制移动广告 SDK 收集的特定信息。

相同应用密钥

Google 移动广告 SDK 8.3.0 版引入了相同应用密钥,可以利用从用户正在使用的应用中收集的数据,帮助您投放更具相关性、个性化程度更高的广告。

相同应用密钥默认处于启用状态,但您可以通过以下 API 将其停用。

Swift

@import GoogleMobileAds

// Disables the same app key.
GADMobileAds.sharedInstance().requestConfiguration.setSameAppKeyEnabled(false)

Objective-C

@import GoogleMobileAds;

// Disables the same app key.
[GADMobileAds.sharedInstance.requestConfiguration setSameAppKeyEnabled:NO];

视频广告音量控制

如果您的应用有自己的音量控制,例如自定义的音乐或音效音量,那么向 Google 移动广告 SDK 报告应用的音量后,视频广告会遵循相关的应用音量设置。这可确保用户收到符合预期的视频广告音量。

设备音量由音量按钮或操作系统级的音量滑块控制,以此确定设备的音频输出音量。但是,应用可相对于该设备音量独立调节自己的音量水平,从而定制音频体验。您可以通过设置 applicationVolume 属性向 Google 移动广告 SDK 报告应用的相对音量。广告音量的有效值范围为 0.0(静音)至 1.0(当前设备音量)。以下示例展示了如何将相对的应用音量报告给 SDK:

Swift

func viewDidLoad() {
  super.viewDidLoad()
  // Set app volume to be half of the current device volume.
  GADMobileAds.sharedInstance().applicationVolume = 0.5
  ...
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  // Set app volume to be half of the current device volume.
  GADMobileAds.sharedInstance.applicationVolume = 0.5;
  ...
}

要向 Google 移动广告 SDK 通知应用已静音,请按如下所示设置 applicationMuted 属性:

Swift

GADMobileAds.sharedInstance().applicationMuted = true

Objective-C

GADMobileAds.sharedInstance.applicationMuted = YES;

默认情况下,applicationVolume 设置为 1(当前设备音量),applicationMuted 设置为 NO

更改音频会话

通过使用音频会话,您可以向系统告知自己的应用音频行为要求。如需了解音频会话的更多信息,请参阅 Apple 的音频会话编程指南。您可以通过 audioVideoManager 属性获取管理 Google 移动广告 SDK 音频的各种可用选项。

如果您不在应用中使用音频,则无需使用这些 API。Google 移动广告 SDK 会在播放音频时自动管理音频会话类别。如果您要在应用中播放音频,并希望更严格地控制 Google 移动广告 SDK 播放音频的方式和时间,则这些 API 可为您提供帮助。

如果您想自己负责管理音频会话的类别,则可以在音视频管理器上将 audioSessionIsApplicationManaged 属性设置为 YES

如果您要管理音频会话的类别,则应实现 GADAudioVideoManagerDelegate 并在音视频管理器上设置 delegate 属性,以便接收广告视频和音频播放事件的通知。然后,您应该根据前述“Apple 的音频会话编程指南”中的规定,将音频会话类别更改为相关类别。

以下是一个简化的代码示例,显示了上述 API 在应用播放音乐条件下的推荐使用做法。

Swift

func setUp() {
    GADMobileAds.sharedInstance().audioVideoManager.delegate = self
    GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = false
}
func myAppWillStartPlayingMusic() {
    // Mutes all Google video ads.
    GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = true
    GADMobileAds.sharedInstance().applicationMuted = true
}
func myAppDidStopPlayingMusic() {
    // Un-mutes all of our video ads.
    GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = false
    GADMobileAds.sharedInstance().applicationMuted = false
}

// MARK: - GADAudioVideoManagerDelegate
func audioVideoManagerWillPlayAudio(_ audioVideoManager: GADAudioVideoManager) {
    // The mobile ads SDK is notifying your app that it will play audio. You
    // could optionally pause music depending on your apps design.
    MyAppObject.sharedInstance().pauseAllMusic()
}

func audioVideoManagerDidStopPlayingAudio(_ audioVideoManager: GADAudioVideoManager) {
    // The mobile ads SDK is notifying your app that it has stopped playing
    // audio. Depending on your design, you could resume music here.
    MyAppObject.sharedInstance().resumeAllMusic()
}

Objective-C

- (void)setUp {
  GADMobileAds.sharedInstance.audioVideoManager.delegate = self;
  GADMobileAds.sharedInstance.audioVideoManager.audioSessionIsApplicationManaged = NO;
}

- (void)myAppWillStartPlayingMusic {
  // Mutes all Google video ads.
  GADMobileAds.sharedInstance.audioVideoManager.audioSessionIsApplicationManaged = YES;
  GADMobileAds.sharedInstance.applicationMuted = YES;
}
- (void)myAppDidStopPlayingMusic {
  // Un-mutes all of our video ads.
  GADMobileAds.sharedInstance.audioVideoManager.audioSessionIsApplicationManaged = NO;
  GADMobileAds.sharedInstance.applicationMuted = NO;
}

#pragma mark - GADAudioVideoManagerDelegate

- (void)audioVideoManagerWillPlayAudio:(GADAudioVideoManager *)audioVideoManager {
  // The mobile ads SDK is notifying your app that it will play audio. You
  // could optionally pause music depending on your apps design.
  [MyAppObject.sharedInstance pauseAllMusic];
}

- (void)audioVideoManagerDidStopPlayingAudio:(GADAudioVideoManager *)audioVideoManager {
    // The mobile ads SDK is notifying your app that it has stopped playing
    // audio. Depending on your design, you could resume music here.
  [MyAppObject.sharedInstance resumeAllMusic];
}

崩溃报告

移动广告 SDK 会检查 iOS 应用中发生的异常,并会记录 SDK 所引发的异常。我们会收集这些异常,以便在将来的 SDK 版本中加以避免。

崩溃报告默认处于启用状态。 如果您不想记录与 SDK 有关的异常,则可以通过调用 disableSDKCrashReporting 方法停用此功能。此方法的最佳调用时机是在应用启动时:

Swift

AppDelegate.swift

func application(application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
  GADMobileAds.disableSDKCrashReporting()
  return true
}

Objective-C

AppDelegate.m
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GADMobileAds disableSDKCrashReporting];
  return YES;
}