For CloudX dashboard mapping and Meta-side ID setup, see the Meta Audience Network bidder guide. This page covers iOS-specific integration details only.
Installation
CocoaPods
pod 'CloudXMetaAdapter', '~> 3.4.5'
pod install --repo-update
Manual
- Download
CloudXMetaAdapter-v{version}.xcframework.zip from Releases
- Unzip and drag
CloudXMetaAdapter.xcframework into your Xcode project
- Add
FBAudienceNetwork (>= 6.15.1, < 7.0) manually.
Info.plist Configuration
SKAdNetwork IDs (Required for iOS 14.5+)
Both Meta SKAdNetwork IDs are required for Meta to make bids:
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
</array>
App Tracking Transparency (iOS 14+)
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
Project Configuration
Linker Flags: Add -ObjC to Other Linker Flags in Build Settings.
Bitcode: Meta SDK does not support Bitcode. Set Enable Bitcode to NO.
Meta Audience Network SDK 6.21.0 has an internal bug that causes crashes when used in apps with SceneDelegate (iOS 13+ scene-based lifecycle).
The Problem
The crash occurs during banner ad display with the following error:
*** -[NSProxy doesNotRecognizeSelector:observeScreenOrientationChanges:] called!
This is an internal Meta SDK bug where their FBDisplayAdController creates an NSProxy for orientation observation that isn’t properly configured.
Solution: Remove SceneDelegate
The only reliable fix is to use the old-style AppDelegate-only pattern (without SceneDelegate).
Step 1: Remove SceneDelegate files
Delete SceneDelegate.h and SceneDelegate.m from your project.
Step 2: Remove UIApplicationSceneManifest from Info.plist
Remove the entire UIApplicationSceneManifest section from your Info.plist.
Step 3: Add required keys to Info.plist
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
Step 4: Update AppDelegate
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[YourRootViewController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
Xcode Warning
After removing SceneDelegate, you’ll see this warning:
CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle.
This warning is expected and does not affect functionality.
Support
For support, contact mobile@cloudx.io