iOS Setup Guide

This HyprMX SDK is designed to present interstitial, rewarded, and banner advertisements in your application.

SDK Integration

The SDK can be integrated using CocoaPods, or by Manual Installation.

CocoaPods

To integrate the HyprMX SDK with CocoaPods, add the following to your Podfile:

pod 'HyprMX', '6.0.0'

Note: HyprMX 6.0.0+ supports Cocoapods 1.10+

Manual Installation

Add HyprMX SDK to your Xcode Project

To manually add HyprMX.xcframework to your Xcode project:

  • Drag and drop the HyprMX.xcframework (available in the SDK zip) into your Xcode project, making sure that the files are copied and verify target membership.

  • Select your Project File and the Target. In the "General" tab, drag the HyprMX.xcframework from the File Explorer into the "Frameworks, Libraries, and Embedded Content" section.

  • Set the Embed setting to "Embed & Sign".

Xcode Project Setup

Application Transport Security

Apple has put on hold their efforts to enforce ATS (App Transport Security) settings, so many developers are simply turning it off. In order to do so, add the App Transport Security dictionary key below to your Info.plist.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

If you prefer to enable ATS, you must add the three App Transport Security dictionary keys below to your Info.plist to ensure that HyprMX operates properly.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>

Configuring Privacy Controls

iOS requires that the use of a user's camera, calendar, photo library, IDFA, etc. be declared by advertisers in the plist. Add all of the following entries to your app's plist.

<key>NSCameraUsageDescription</key>
<string>${PRODUCT_NAME} requests write access to the Camera</string>
<key>NSCalendarsUsageDescription</key>
<string>${PRODUCT_NAME} requests access to the Calendar</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>${PRODUCT_NAME} requests access to the Photo Library</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>${PRODUCT_NAME} requests write access to the Photo Library</string>
<key>NSUserTrackingUsageDescription</key>
<string>${PRODUCT_NAME} would like to show you personalized ads</string>

SKAdNetwork Identifier

HyprMX SDK 5.4.0+ supports Apple's new SKAdNetwork for Attribution. To add the HyprMX SKAdNetwork ID to your info.plist:

<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nu4557a4je.skadnetwork</string>
</dict>
...
</array>

Note: SKAdNetwork Id's are case sensitive. For more information about SKAdNetwork please refer to Apple's documentation.

Initializing HyprMX

Note: All calls to HyprMX must be done from the main thread.

First, import the HyprMX Mobile SDK.

Swift
Objective-C
Swift
import HyprMX
Objective-C
@import HyprMX;

To get initialization callbacks, you need to implement the HyprMXInitializationDelegate.

Swift
Objective-C
Swift
class YourHyprInitializationDelegateImplementation: <superclass>, HyprMXInitializationDelegate {
func initializationDidComplete() {
}
func initializationFailed() {
}
}
Objective-C
@implementation YourHyprInitializationDelegateImplementation
- (void)initializationDidComplete {
}
- (void)initializationFailed {
}
@end

HyprMX holds a weak reference to the initialization delegate, so you must be sure to retain the delegate.

Initialize HyprMX as done below. As a best practice, initialize HyprMX as soon as possible (i.e. when your application is loading) so we can begin preloading ads.

The initializer includes a consentStatus parameter for jurisdictions that require passing consent collected by your app. The initializer takes a HyprConsentStatus value:

  • CONSENT_STATUS_UNKNOWN

  • CONSENT_GIVEN

  • CONSENT_DECLINED

Swift
Objective-C
Swift
lazy var hyprDelegate = YourHyprInitializationDelegateImplementation()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let distributorId = "Your Distributor ID"
let userId = "Your User's ID"
HyprMX.initialize(withDistributorId: distributorId,
userId: userId,
consentStatus: <HyprConsentStatus>, // If you don't have consent status for the user, set this to CONSENT_STATUS_UNKNOWN
initializationDelegate: hyprDelegate)
return true
}
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.hyprDelegate = [YourHyprInitializationDelegateImplementation new];
NSString *distributorId = @"Your Distributor ID";
NSString *userId = @"Your User's ID";
[HyprMX initializeWithDistributorId:distributorId
userId:userId
consentStatus: // If you don't have consent status for the user, set this to CONSENT_STATUS_UNKNOWN
initializationDelegate:self.hyprDelegate];
return YES;
}

The value for distributorId is assigned to your app by HyprMX. If you have not received this ID, please reach out to your HyprMX account manager.

The user ID is a unique identifier supplied by your application and must be static for each user across sessions. Your user ID should not contain any personally identifiable information such as an email address, screen name, or Apple's Advertising Identifier (IDFA). If you don't have a static identifier, you can use the code snippet below for generating a unique user ID using NSProcessInfo. To change the user ID, you must re-initialize HyprMX.

Swift
Objective-C
Swift
let userIdStorageKey = "hyprMarketplaceUserId"
var userId = ""
if let storedUserId = UserDefaults.standard.object(forKey: userIdStorageKey) as? String {
userId = storedUserId
} else {
userId = ProcessInfo.processInfo.globallyUniqueString
UserDefaults.standard.set(userId, forKey: userIdStorageKey)
}
Objective-C
NSString *userIdStorageKey = @"hyprMarketplaceUserId";
NSString *userId = [[NSUserDefaults standardUserDefaults] objectForKey:userIdStorageKey];
if (!userId) {
userId = [[NSProcessInfo processInfo] globallyUniqueString];
[[NSUserDefaults standardUserDefaults] setObject:userId forKey:userIdStorageKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
// initialize HyprMX with userId

HyprMX also provides a separate setter for consent status. Use this when a user's consent status changes.

Swift
Objective-C
Swift
HyprMX.setConsentStatus(<HyprConsentStatus>)
Objective-C
[HyprMX setConsentStatus:<HyprConsentStatus>];

After receiving the initializationDidComplete message, you are ready to show ads.

You are now ready to load and display ads in your application. See our Rewarded Ads, Interstitial Ads, and Banner Ads guides to add these ad types to your app.