全局设置

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

视频广告音量控制

如果您的应用有自己的音量控制,例如自定义的音乐或音效音量,那么向 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;
  ...
}

对于开屏广告、横幅广告、插页式广告、激励广告和插页式激励广告格式,您可以通过设置 applicationMuted 属性告知 Google 移动广告 SDK 应用已静音:

Swift

GADMobileAds.sharedInstance().applicationMuted = true

Objective-C

GADMobileAds.sharedInstance.applicationMuted = YES;

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

原生广告

如需了解如何控制静音设置,请参阅 GADVideoOptions。对于原生广告,不支持自定义音量控制。

音频会话

通过音频会话,您可以向系统表达您对应用音频行为的意图。如需详细了解音频会话,请参阅 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
}

// 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;
}

#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];
}

崩溃报告

Google 移动广告 SDK 会检查 iOS 应用中发生的异常,如果异常是由该 SDK 引起的,则会进行记录。这些异常将在未来的 SDK 版本中得到解决。

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

Swift

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.disableSDKCrashReporting()
    return true
  }
}

Objective-C

@import GoogleMobileAds;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  [GADMobileAds disableSDKCrashReporting];
  return YES;
}

@end

如果您的应用有特殊要求,您可以设置可选的 NSUserDefaults gad_has_consent_for_cookies。如果 gad_has_consent_for_cookies 偏好设置设为零,Google 移动广告 SDK 会启用 受限广告 (LTD)

Swift

UserDefaults.standard.set(0, forKey: "gad_has_consent_for_cookies")

Objective-C

NSUserDefaults.standardUserDefaults().setObject(Int(0),
    forKey: "gad_has_consent_for_cookies");