CloudX Meta Adapter
Meta Audience Network adapter for CloudX iOS SDK.
Requirements
- iOS 13.0+
- Xcode 16.0+ (Meta Audience Network SDK 6.21.x)
- Swift 6.0+
Installation
CocoaPods
pod install --repo-update
Manual
- Download
CloudXMetaAdapter-v{version}.xcframework.zip from Releases
- Unzip and drag
CloudXMetaAdapter.xcframework into your Xcode project
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