集成
CloudX iOS SDK 的 Meta Audience Network 适配器。支持 Banner、MREC、Interstitial、Rewarded、Native、Native Banner 和 Native MREC。
有关 CloudX 控制台映射和 Meta 侧 ID 设置,请参阅 Meta Audience Network 竞价方指南。本页仅说明 iOS 特定的集成细节。
安装
CocoaPods
pod 'CloudXMetaAdapter', '~> 6.22.0.0'pod install --repo-update手动安装
- 从 Releases 下载
CloudXMetaAdapter.xcframework.zip - 解压并将
CloudXMetaAdapter.xcframework拖入您的 Xcode 项目 - 手动添加
FBAudienceNetwork(= 6.22.0)。
Info.plist 配置
SKAdNetwork IDs(iOS 14.5+ 必需)
Meta 进行竞价需要两个 Meta SKAdNetwork ID:
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
</array>应用追踪透明度(iOS 14+)
<key>NSUserTrackingUsageDescription</key>
<string>此标识符将用于向您投放个性化广告。</string>项目配置
链接器标志: 在 Build Settings 中将 -ObjC 添加到 Other Linker Flags。
Bitcode: Meta SDK 不支持 Bitcode。将 Enable Bitcode 设置为 NO。
原生广告
展示跟踪要求
Meta 要求特定素材完成渲染并在屏幕上可见后才会计入展示,具体取决于 Meta placement 格式:
| Meta placement 格式 | 必需素材 | 必需视图 |
|---|---|---|
| Native | 媒体视图 | FBMediaView |
| Native Banner | 应用图标 | UIImageView |
完整的素材渲染要求请参阅 Meta 的 Native Ads 和 Native Banner Ads 指南。
Meta placement 与 CloudX 广告单元的映射
| Meta placement 格式 | CloudX 广告单元 | CloudX API | 必需素材由谁渲染 |
|---|---|---|---|
| Native | Native | createNativeAdLoader(adUnitIdentifier:) | 您的布局,通过绑定器的媒体容器 |
| Native | MREC(300×250) | createMREC(adUnitId:) | CloudX 提供的布局 |
| Native Banner | Banner(320×50) | createBanner(adUnitId:) | CloudX 提供的布局 |
对于独立 Meta Native 广告,请使用视图绑定器的 mediaContentViewTag 绑定可见的媒体容器。CloudX 会将 Meta 的 FBMediaView 附加到该容器。如果 Meta Native Banner 素材可能投放到您的 Native 广告单元,请同时使用 iconImageViewTag 绑定图标 UIImageView —— Meta 会将 Native Banner 展示注册到图标视图上。完整布局和加载流程请参阅原生广告。
通过 CLXBannerAdView 投放的 Native Banner 和 MREC 素材使用 CloudX 提供的布局,因此发布商代码不需要原生绑定器。
兼容性
| 适配器版本 | 广告网络 SDK | 最低 CloudXCore |
|---|---|---|
6.22.0.0 | Meta Audience Network 6.22.0 | 3.5.0 |
6.21.1.0 | Meta Audience Network 6.21.1 | 3.5.0 |
6.21.0.0 | Meta Audience Network 6.21.0 | 3.5.0 |
当服务端下发的 CloudX 配置包含该广告网络需求时,SDK 会自动发现该适配器。无需手动注册适配器。
已知问题
本节仅列出当前存在的问题。已解决的条目会移入适配器更新日志。
Meta SDK 6.21.0 在使用 SceneDelegate 的应用中崩溃
影响范围: 使用基于场景的生命周期(iOS 13+ SceneDelegate)的应用中的 Meta Audience Network SDK 6.21.0。
症状: 横幅广告展示期间崩溃:
*** -[NSProxy doesNotRecognizeSelector:observeScreenOrientationChanges:] called!
这是一个 Meta SDK 内部 bug:其 FBDisplayAdController 创建的 NSProxy 未正确配置方向观察。
解决方法: 使用旧式的仅 AppDelegate 模式(不使用 SceneDelegate)。这是唯一可靠的修复方案。
- 从项目中删除
SceneDelegate.h和SceneDelegate.m。 - 从
Info.plist中移除整个UIApplicationSceneManifest部分。 - 向
Info.plist添加必需的键:
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>- 更新
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;
}class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = YourRootViewController()
window?.makeKeyAndVisible()
return true
}
}移除 SceneDelegate 后,Xcode 会输出 CLIENT OF UIKIT REQUIRES UPDATE: This process does not adopt UIScene lifecycle. 警告。此警告是预期行为,不会影响功能。
支持
如需支持,请联系 support@cloudx.io