The device volume, controlled through volume buttons or OS-level
volume slider, determines the volume for device audio output.
However, apps can independently adjust volume levels relative to
the device volume to tailor the audio experience. You can report
the relative app volume to the Google Mobile Ads SDK by setting
the applicationVolume property. Valid ad volume values range
from 0.0 (silent) to 1.0 (current device volume). Here's an example
of how to report the relative app volume to the SDK:

Objective-C

To inform the Google Mobile Ads SDK that the app volume has been
muted, set the applicationMuted property, as shown below:

Swift

GADMobileAds.sharedInstance().applicationMuted = true

Objective-C

[GADMobileAds sharedInstance].applicationMuted = YES;

Unmuting the app volume reverts it to its previously set level.
By default, the app volume for the Google Mobile Ads SDK is set to 1
(the current device volume).

Note: Video ads that are ineligible to be shown with muted audio
are not returned for ad requests made when the app volume is
reported as muted or set to a value of 0. This may restrict a
subset of the broader video ads pool from serving.

Changing audio session

Audio sessions allow you to express to the system your intentions
for your app's audio behavior. Additional information on audio
sessions can be found in Apple's Audio Session Programming
Guide.
The available options for managing the Google Mobile Ads SDK audio is via the
audioVideoManager
property.

If you don't use audio in your app, you don't need to use these APIs. The Google
Mobile Ads SDK will automatically manage the audio session category when it
plays audio. If you do play audio in your app and you want tighter control of
how and when Google Mobile Ads SDK plays audio, these APIs can help.

On the audio video manager, you can set the audioSessionIsApplicationManaged
property to YES if you want to take responsibility for managing the audio
session category yourself.

If you will manage the audio session category, you should implement
GADAudioVideoManagerDelegate
and set the delegate property
on the audio video manager to be notified of ads video and audio playback
events. You should then change the audio session category to the relevant
category as per Apple's Audio Session Programming Guide linked above.

Note: By default, the Mobile Ads SDK will set the audio session category to
AVAudioSessionCategoryAmbient when playing ads muted. If you prefer to have
your app use AVAudioSessionCategoryOptionDuckOthers
in this scenario, you must implement the GADAudioVideoManagerDelegate protocol
and set the audio video manager audioSessionIsApplicationManaged to YES.

Here is a simplified code sample which shows the recommended approach if your
app plays music, using above APIs.

In-app purchase reporting

To help grow your in-app purchase revenue
and maximize the total revenue generated by your app,
the Mobile Ads SDK now automatically collects
general in-app purchase (IAP) information
(such as item purchase price and currency).
Now,
you won't have to implement extra logic to track IAP conversions yourself.
If you're an AdMob developer,
we recommend that you leverage this new functionality
to enjoy the benefits of AdMob's smart monetization offerings.
This IAP reporting setting must always be enabled
if you are running in-app purchase house ads (currently in limited beta).
This is necessary for IAP house ad conversions to be reported.

In our latest SDK release,
in-app purchase reporting is enabled by default.
If you'd like,
however,
you can disable it by using
the disableAutomatedInAppPurchaseReporting method
(unless you are running IAP house ads, as noted above).
The best moment to call this method is when the app launches:

Objective-C

Crash reporting

The Mobile Ads SDK inspects exceptions that occur in an iOS app
and records them if they are caused by the SDK.
These exceptions are collected so we can prevent them in future SDK versions.

In our latest SDK release,
crash reporting is enabled by default.
If you don't want SDK-related exceptions to be recorded,
you can disable this feature by calling
the disableSDKCrashReporting method.
The best place to call this method is when the app launches: