Advanced Settings

Begin by following the instructions in the basic integration article, and then the instructions for any of the ad formats you want to integrate (interstitial or rewarded adsbanner adsMREC ads). This article contains supplementary information and assumes you have completed basic integration.

 

GDPR Recommended Implementation Instructions

As of May 25, 2019, the General Data Protection Regulation (GDPR) will be enforced in the European Union. To comply with GDPR, developers have two options.

  • Option 1 (recommended): Publisher controls the GDPR consent process at the user level, then communicates the user’s choice to Vungle. To do this, developers can collect the user’s consent using their own mechanism, and then use Vungle APIs to update or query the user’s consent status. Refer to the sample code below for details.
  • Option 2: Allow Vungle to handle the requirements. Vungle will display a consent dialog before playing an ad for a European user, and will remember the user’s consent or rejection for subsequent ads.

To use Vungle APIs to update or query the user’s consent status (as recommended in Option 1), use these functions for Vungle SDK v6.3.2 and higher:

Objective-CSwift
// This function sets the consent status that will be recorded in Vungle SDK. Accepted values: 'VungleConsentAccepted' or 'VungleConsentDenied'. It also sets the consent message version. This value is an arbitrary string, and can be used to identify the version of the consent message presented to the user.

// To set the user's consent status to opted in:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentAccepted consentMessageVersion:@"Some Consent Message Version"];

// To set the user's consent status to opted out:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentDenied consentMessageVersion:@"Some Consent Message Version"];

// To find out what the user's current consent status is: 
// (Check against enum values: 'VungleConsentAccepted' or 'VungleConsentDenied'.)

[[VungleSDK sharedSDK] getCurrentConsentStatus];

// To find out which version of the consent message was shown to the user:
// This method returns an NSString value.
[[VungleSDK sharedSDK] getConsentMessageVersion];

VungleConsentStatus is an enum with two states:

  • VungleConsentAccepted
  • VungleConsentDenied

The SDK also has an initial state of 'unknown', which prompts the user to opt in or opt out of user data collection. Note that this prompt only occurs on IP addresses originating from Europe.

Because Vungle SDK v6.2.0 cannot pass the consent message version, use the following APIs:

// This function sets the consent status that will be recorded in Vungle SDK. Accepted values: 'VungleConsentAccepted' or 'VungleConsentDenied'.
// To set the user's consent status to opted in:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentAccepted]

// To set the user's consent status to opted out:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentDenied];

// To find out what the user's current consent status is:
// (Check against enum values: 'VungleConsentAccepted' or 'VungleConsentDenied'.)
[[VungleSDK sharedSDK] getCurrentConsentStatus];

CCPA Recommended Implementation Instructions

As of July 1, 2020, California Consumer Privacy Act (CCPA) will be enforced and publishers must updated to iOS SDK 6.7.0 to comply with CCPA The [VungleSDK updateCCPAStatus] method takes the user’s CCPA consent status to notify us when a user has OPTED_OUT .  Additionally, [VungleSDK getCCPAStatus] method returns current CCPA status for the user.

Objective-C
//OPT_IN
[self.sdk updateCCPAStatus:VungleCCPAAccepted];
//OPT_OUT
[self.sdk updateCCPAStatus:VungleCCPADenied];

Restrict Use of IDFV

Starting with Vungle SDK v6.4.3, you can prevent passing the IDFV from the device to the SDK.

Sample code:

[VungleSDK setPublishIDFV:NO];
if (![sdk startWithAppId:appID error:&error]) {
  if (error) {
    NSLog(@"Error encountered starting the VungleSDK: %@", error);
  }
}

Receive Delegate Callbacks

You can receive callbacks from the SDK with VungleSDKDelegate. The callback methods in the delegate notify the app about SDK events.

You can attach and detach your delegate with the following:

Objective-CSwift
// Attach
[[VungleSDK sharedSDK] setDelegate:yourDelegateInstance];
// Detach
[[VungleSDK sharedSDK] setDelegate:nil];

Note: To avoid memory leaks, remember to clear the registered delegate when it's no longer needed.

The following method is called when the SDK has initialized successfully:

- (void)vungleSDKDidInitialize;

The following method is called when the SDK is about to play a video ad. This is a great place to pause gameplay, sound effects, animations, etc.

- (void)vungleWillShowAdForPlacementID:(nullable NSString *)placementID;

The following method is called when the SDK has just begun to play a video ad:

- (void)vungleDidShowAdForPlacementID:(nullable NSString *)placementID;

The following method is called when the SDK is about to close an ad. This is a great place to reward your user and resume gameplay, sound effects, animations, etc.

As of 6.7.0Deprecated
- (void)vungleWillCloseAdForPlacementID:(nonnull NSString *)placementID;

The following method is called when the SDK has closed an ad.

As of 6.7.0Deprecated
- (void)vungleDidCloseAdForPlacementID:(nonnull NSString *)placementID;

The following method is called when the SDK has changed ad availability status. The isAdPlayable Boolean denotes the new playability of a specific placementID. (Refer to the Check Ad Availability for a Placement section.)

- (void)vungleAdPlayabilityUpdate:(BOOL)isAdPlayable placementID:(nullable NSString *)placementID error:(nullable NSError *)error;

The following method is called when the user clicks the Vungle ad. At this point, it is recommended to track click event.

- (void)vungleTrackClickForPlacementID:(nullable NSString *)placementID;

The following method is called when the user taps the Vungle ad which will cause them to leave the current application (e.g the ad action opens the iTunes store, Mobile Safari, etc).

- (void)vungleWillLeaveApplicationForPlacementID:(nullable NSString *)placementID;

The following method is called when the user should be rewarded for watching a Rewarded Video ad. At this point, it's recommended to reward the user.

- (void)vungleRewardUserForPlacementID:(nullable NSString *)placementID;

The following method is called when the SDK fails to initialize. If this happens, restart the Vungle SDK.

- (void)vungleSDKFailedToInitializeWithError:(NSError *)error;

The following method is called when the ad is first rendered on device. Please use this callback to track impressions.

-(void)vungleAdViewedForPlacement:(NSString *)placementID;

Deprecated as of 6.7.0

VungleViewInfo includes the following properties for you to check a result of ad play:

Deprecated
/**
Deprecated as of 6.7.0
**/
@interface VungleViewInfo : NSObject
//Represents a BOOL whether or not the video can be considered a completed view.
@property (nonatomic, readonly) NSNumber *completedView;
//The time in seconds that the user watched the video.
@property (nonatomic, readonly) NSNumber *playTime;
//Represents a BOOL whether or not the user clicked the download button.
@property (nonatomic, readonly) NSNumber *didDownload;
@end

Memory Settings

Starting with Vungle SDK v6.4.3, you can prevent the SDK from downloading, requesting ads, or even initializing, if the storage of your iPhone falls below a predefined threshold. If this happens, you will get an error similar to the following:

Error while starting VungleSDK There is not enough file system size on a device to initialize VungleSDK.

These are the option keys available:

Option Keys

Default Value / Type

Description

vungleMinimumFileSystemSizeForInit

Integer, value in MB, default value is 50

Sets the required minimum available free storage space to allow the SDK to initialize

vungleMinimumFileSystemSizeForAdRequest

Integer, value in MB, default value is 50

Sets the required minimum available free storage space to enable you to request an ad

Sample code:

[[NSUserDefaults standardUserDefaults] setInteger:200 forKey:@"vungleMinimumFileSystemSizeForInit"];
[[NSUserDefaults standardUserDefaults] setInteger:200 forKey:@"vungleMinimumFileSystemSizeForAdRequest"];
//After setting the desired values above, synchronize
[[NSUserDefaults standardUserDefaults] synchronize];

Debug

Use this property to get SDK information:

- (NSDictionary *)debugInfo;

Use the following method for the SDK to output logs:

- (void)setLoggingEnabled:(BOOL)enable;

VungleSDKLogger Protocol

@protocol VungleSDKLogger 
- (void)vungleSDKLog:(NSString*)message;
@end

The VungleSDK singleton sends logging events to any attached class following the VungleSDKLogger protocol. The log event contains the NSString value that is also printed to console (if logging has been enabled). To attach your logger, use the following:

Objective-CSwift
[[VungleSDK sharedSDK] attachLogger:yourLoggerInstance];

As we stated above, it's important to clear out attached loggers from the Vungle SDK. To detach your logger, use the following:

Objective-CSwift
[[VungleSDK sharedSDK] detachLogger:yourLoggerInstance];

Check the Initialization State

Some of the resources allocated to the Vungle SDK can be terminated by the OS if system resources are running low or if too much context switching is occurring. To ensure smooth operation of SDK, we recommend checking the SDK initialization state before invoking the SDK API. Invoke isInitialized before calling any SDK API and reinitialize the SDK if isInitialized returns NO.

if ([self.sdk isInitialized] == NO) {
   [self initVungleSDK];
}
Powered by Creativity Driven by Performance Sign Up Here

Questions?

Need further assistance, feel free to reach out to us, we’re here to help!

Was this article helpful?