Migrate to Version 6.4+
Please follow the below guide to migrate from the HyprMX SDK 6.x to 6.4+.
HyprMX SDK 6.4+ contains a revamp to our public API, streamlining our SDK's initialization and providing more focused callbacks and delegates. Additionally, we now provide modernized asynchronous APIs that you can opt into, and have removed the main thread requirement from all of our public methods.
SDK Migration
The HyprMX iOS SDK 6.x can be migrated to 6.4+ through CocoaPods or by Manual Migration.
CocoaPods
To migrate the HyprMX SDK with CocoaPods, update the pod to 6.4.3
in your Podfile:
pod 'HyprMX', '6.4.3'
Run pod install
from the terminal in the directory containing your Podfile.
Manual Migration
To manually migrate the framework, follow the steps below.
Download the SDK here and unzip the file.
Right-click on HyprMX.xcframework in your project navigator and select Show in Finder.

Drag and drop the new 6.4+ HyprMX.xcframework (available in the zip) into the folder that contains the 6.3 HyprMX.xcframework and replace the old one.

Fixing Your Broken Build
See below for migrations related to HyprMX SDK 6.4+.
Migrating HyprMX.initialize
The new SDK initializer now only requires a distributorId
, and takes a completion closure or returns a Result depending on the API chosen:
switch await HyprMX.initialize(distributor: distributorId) {
case .success:
// successful init logic
case .failure(let error):
print(error)
// failed init logic
}
Other parameters that used to be provided to the initialization API now have new setters. These parameters can now be set after initialization when the information is available. As a result, you will need to migrate the following parameters:
consentStatus
ageRestrictedUser
userID
Follow the steps below to migrate the parameters.
Migrating the consentStatus
parameter
consentStatus
parameterHyprMX.setConsentStatus(CONSENT_GIVEN)
// OR
HyprMX.setConsentStatus(CONSENT_DECLINED)
Migrating the ageRestrictedUser
parameter
ageRestrictedUser
parameterHyprMX.setAgeRestrictedUser(true)
Migrating the userID
parameter
userID
parameterOur API no longer accepts user ID.
HyprMXInitializationDelegate
HyprMXInitializationDelegate has been replaced with async Result
or completion closure. To migrate existing code:
Remove any references to HyprMXInitializationDelegate
from your project.
When success
is true, call your existing initializationDidComplete
method or logic.
When success
is false, call your existing initializationFailed
method or logic.
switch await HyprMX.initialize(distributor: distributorId) {
case .success:
// initializationDidComplete logic
case .failure(let error):
print(error)
// initializationFailed logic
}
Migrating HyprMXPlacement.isAdAvailable
If used in any Swift source files, remove trailing parenthesis from placementInstance.isAdAvailable
Migrating HyprMXPlacement.loadAd
loadAd
doesn't use a delegate in HyprMX SDK 6.4+. Instead, it returns results via async result or completion based callbacks. To migrate existing code:
When success
is true, invoke your former onAdAvailable
implementation.
When success
is false, invoke your former onAdNotAvailable
implementation.
let success = await placement.loadAd()
if success {
// ad available logic
} else {
// not available logic
}
Migrating HyprMXPlacementDelegate
HyprMXPlacementDelegate has been renamed to HyprMXPlacementShowDelegate. The SDK takes the delegate as a parameter in showAd, and stops using that delegate instance after calling adDidClose. To migrate existing code:
Rename references to HyprMXPlacementDelegate
to HyprMXPlacementShowDelegate
class MyPlacementDelegate: NSObject, HyprMXPlacementShowDelegate {
Pass the show delegate as the second parameter to showAd
placement.showAd(from: viewController, delegate: showDelegate)
If you need callbacks to adExpired
then implement the HyprMXPlacementExpiredDelegate
class MyPlacementDelegate: NSObject, HyprMXPlacementShowDelegate,
HyprMXPlacementExpiredDelegate {
And set the expired delegate on your placement:
placement.expiredDelegate = placementDelegate
If your project implemented HyprMXPlacementDelegate
in Swift, then it needs a few adjustments:
Remove
for
fromadWillstart
:
//func adWillStart(for placement: HyprMXPlacement) {
func adWillStart(placement: HyprMXPlacement) {
Remove
for
anddidFinishAd
fromadDidClose
and replaceAny!
withBool
//func adDidClose(for placement: HyprMXPlacement, didFinishAd finished: Any!) {
func adDidClose(placement: HyprMXPlacement, finished: Bool) {
Remove
adDisplayError(for placement: HyprMXPlacement, error hyprMXError: HyprMXError)
Remove
Error
and the underscore fromadDisplayError(_ error: Any!, placement: HyprMXPlacement)
//func adDisplayError(_ error: Any!, placement: HyprMXPlacement)
func adDisplay(error: NSError, placement: HyprMXPlacement)
Remove
for
fromadDidReward
and replace the twoAny!
types withString?
andInt
//func adDidReward(for placement: HyprMXPlacement, rewardName: Any!, rewardValue: Any!)
func adDidReward(placement: HyprMXPlacement, rewardName: String?, rewardValue: Int)
Remove
for
fromadExpired
//func adExpired(for placement: HyprMXPlacement)
func adExpired(placement: HyprMXPlacement)
HyprMXBannerView.loadAd
loadAd
doesn't use a delegate in HyprMX SDK 6.4+. Instead, it returns results via async or completion based paths. To migrate existing code:
When success
is true, invoke your adDidLoad
implementation
When success
is false, invoke your adFailedToLoad:error:
implementation
let success = await bannerView.loadAd()
if success {
// adDidLoad logic
} else {
// adFailed logic
}
That's it! You're done with the migration.
Last updated