Skip to main content

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

Podfile
pod 'CloudXMetaAdapter'
pod install --repo-update

Manual

  1. Download CloudXMetaAdapter-v{version}.xcframework.zip from Releases
  2. 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:
Info.plist
<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+)

Info.plist
<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 SDK 6.21.0 SceneDelegate Crash

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

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