Links

iOS Setup Guide

The HyprMX SDK is designed to present rewarded, interstitial, and banner ads in your application. To integrate the SDK, follow the steps below. If you're upgrading an existing SDK, please refer to the Upgrade Guide.

SDK Integration

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

CocoaPods

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. To integrate the HyprMX SDK with CocoaPods, add the following to your Podfile:
pod 'HyprMX', '6.0.3'
Note: HyprMX 6.0.0+ supports Cocoapods 1.10+

Manual Installation

To manually install the framework, follow the steps below.
1. Download the SDK here and unzip the file.
2. Drag and drop the HyprMX.xcframework (available in the zip) into your Xcode project. Make sure that the files are copied and verify the target membership.
Add HyprMX SDK to your Xcode Project
3. 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.
4. Set the Embed setting to "Embed & Sign".

Xcode Project Setup

Application Transport Security

We recommend that ATS (App Transport Security) settings are turned off as Apple has put on hold their efforts to enforce the policy. 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.

Exporting

When archiving your application for the App Store, Xcode will prompt with an option to Manage Version and Build Numbers:
It is not recommended to select this option since this can modify info.plist files of your third party libraries.

Initializing HyprMX

All calls to HyprMX must be done from the main thread.
Follow the steps below to initialize HyprMX.
1. Import the HyprMX Mobile SDK.
Swift
Objective-C
import HyprMX
@import HyprMX;
2. Implement HyprMXInitializationDelegate if you want to get initialization callbacks. HyprMX holds a weak reference to the initialization delegate, so you must be sure to retain the delegate.
Swift
Objective-C
class YourHyprInitializationDelegateImplementation: <superclass>, HyprMXInitializationDelegate {
func initializationDidComplete() {
print("Initialization of HyprMX Completed Successfully")
}
func initializationFailed() {
print("Initilization of HyprMX Failed")
}
}
@implementation YourHyprInitializationDelegateImplementation
- (void)initializationDidComplete {
NSLog(@"Initilization of HyprMX Completed Successfully");
}
- (void)initializationFailed {
NSLog(@"Initilization of HyprMX Failed");
}
@end
3. Initialize HyprMX as instructed below. As a best practice, initialize HyprMX as soon as possible (i.e. when your application is loading) so we can begin preloading ads.
Swift
Objective-C
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
}
- (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;
}
consentStatus
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
distributorId
The value for distributorId is assigned to your application by HyprMX. If you have not received this ID, please reach out to your HyprMX account manager.
userId
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
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)
}
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 method for setting Consent. Use this when a user's consent status changes.
Swift
Objective-C
HyprMX.setConsentStatus(<HyprConsentStatus>)
[HyprMX setConsentStatus:<HyprConsentStatus>];
After receiving the initializationDidComplete message, 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 application.
Last modified 17d ago