Skip to content

iOS API 参考 ​

本文档是优聚智汇 iOS SDK 的 API 参考手册,涵盖全部公共枚举与核心类的完整签名。所有内容均基于 SDK 源码验证,供开发者在集成过程中查阅。

阅读建议

枚举参考 ​

AdFormat ​

广告格式枚举,描述 SDK 支持的 5 种广告类型。

枚举值数值含义
.splash0开屏广告
.banner1横幅广告
.native2原生/信息流广告
.reward3激励视频
.interstitial4插屏广告

FeedType ​

信息流广告子类型枚举,标识渲染模式。通过 UjuAdObject.getFeedType() 获取。

枚举值数值含义
.express0模板渲染(SDK 提供模板,当前版本未启用)
.banner1横幅模板(横幅广告固定返回此值)
.native2自渲染(业务方提供视图,原生广告固定返回此值)
swift
let feedType = adObject.getFeedType()
switch feedType {
case .native:
    // 自渲染,需调用 getAdData() 获取物料并自行绑定视图
case .banner:
    // 横幅模板
default:
    break
}

当前版本渲染模式

当前版本中,原生广告 getFeedType() 固定返回 .native(自渲染),横幅广告固定返回 .banner。.express 模板渲染模式将在后续版本支持。

AdMediaType ​

自渲染广告的媒体素材类型。

枚举值数值含义
.singleImage1单图素材
.multiImage2多图素材(组图)
.video3视频素材

AdBidType ​

广告竞价类型,标识广告位的竞价模式。

枚举值数值含义
.normal0普通模式(无竞价,瀑布流直跑)
.adx1ADX 模式(优聚自有 ADX API)
.c2s2客户端到服务端竞价(C2S)
.s2s3服务端到服务端竞价(S2S)

AdPlatformType ​

广告平台标识枚举,用于标识广告来源的 ADN 平台。

枚举值数值平台名称说明
.csj1穿山甲字节跳动穿山甲(Pangle)
.ylh2优量汇腾讯优量汇(GDT)
.bd3百度百度百青藤
.ks4快手快手广告
.vivo13VIVOVIVO 广告平台
.oppo14OPPOOPPO 广告平台
.adx100ADX优聚内部 ADX(平台 ID 统一为 100)

ADX 自有广告源

ADX 自有广告源已内置在核心库中,无需额外注册。通过 UjuAdInfo.platformId 获取到的 ADX 广告平台 ID 统一为 100。

UjuAdInitStatus ​

SDK 初始化状态枚举,可通过 UjuAdCore.shared.getInitializeState() 获取。

枚举值数值含义
.idle0空闲状态(未启动)
.initializing1初始化中(start 已调用,流程执行中)
.initialized2初始化完成(可调用广告 API)
.failed3初始化失败(需重新调用 start)

UjuAdRegion ​

服务区域枚举,集成方仅需选择区域,各服务 host 由 SDK 内部自动推导。

枚举值含义
.domestic国内
.singapore海外(新加坡)

公共 API 参考 ​

UjuAdCore ​

SDK 全局入口,final class 单例(UjuAdCore.shared),标注 @unchecked Sendable。负责 SDK 初始化、启动、状态查询与资源释放。

方法列表 ​

方法签名返回值说明
initialize(_ application: AnyObject?, config: UjuAdInitConfig)Void第一阶段初始化,同步保存配置,不采集隐私
start(_ listener: BaseInitListener?)Void第二阶段启动,采集设备信息并拉取策略,完成后回调 listener
isSdkInitialized()Bool是否已完成 initialize(第一阶段)
getInitializeState()UjuAdInitStatus获取 SDK 初始化状态枚举
getVersion()String获取 SDK 版本号(当前 3.4.8)
getAppId()String获取当前应用 ID
getRegion()UjuAdRegion获取服务区域
getIDFA()String获取 IDFA(未授权返回空串)
getIDFV()String获取 IDFV
requestAttAuthorization(completion:)Void请求 ATT 授权
requestLocation(completion:)Void一次性定位请求
setIDFA(_:)Void开发者主动注入 IDFA
setUserInfo(_:)Void注入用户信息
setLocation(_:)Void注入位置信息
updateChannel(channel:subChannel:)Void更新渠道与子渠道
registerAdapterFactory(_:)Bool注册单个适配器工厂
destroy()Void释放 SDK 资源
swift
// 第一阶段:initialize(同步,不采集隐私)
UjuAdCore.shared.initialize(application, config: config)

// 第二阶段:start 并监听回调
UjuAdCore.shared.start(listener)

// 判断是否已完成 initialize
if UjuAdCore.shared.isSdkInitialized() { /* 可调用 start */ }

// 获取版本号
UjuAdCore.shared.getVersion()  // "3.4.8"

// 释放资源
UjuAdCore.shared.destroy()

两阶段初始化

initialize() 仅保存配置,不执行任何耗时操作;start() 才会真正采集设备信息、拉取策略并初始化适配器。必须先 initialize,再 start。

UjuAdObject ​

统一广告对象,final class,通过静态工厂方法创建(被 #if canImport(UIKit) 守卫,iOS-only),承载广告的加载、展示、销毁等生命周期。

工厂方法(静态) ​

方法签名说明
getSplashObject(_ vc: UIViewController, config: UjuAdConfig) -> UjuAdObject创建开屏广告对象
getRewardObject(_ vc: UIViewController, config: UjuAdConfig) -> UjuAdObject创建激励视频广告对象
getInterstitialObject(_ vc: UIViewController, config: UjuAdConfig) -> UjuAdObject创建插屏广告对象
getBannerObject(_ vc: UIViewController, config: UjuAdConfig) -> UjuAdObject创建横幅广告对象
getNativeObject(_ vc: UIViewController, config: UjuAdConfig) -> UjuAdObject创建原生广告对象

实例方法 ​

方法签名返回值说明
setAdObjectListener(_:)Void设置广告监听器,类型需与广告类型匹配
load()Void加载广告,触发竞价与请求流程
show(_ vc: UIViewController)Void展示广告(无容器),适用于开屏/激励/插屏
show(_ vc: UIViewController, container: UIView)Void展示广告(需容器),适用于横幅/原生
isReady()Bool判断广告是否就绪可展示
destroy()Void销毁广告对象,释放资源
getAdInfo()UjuAdInfo?获取广告信息(价格、平台等),未加载返回 nil
getFeedType()FeedType?获取信息流渲染类型(原生固定返回 .native,横幅固定返回 .banner)
getAdData()NativeAdData?获取自渲染原生物料数据(仅原生自渲染有效)
registerViewForInteraction(vc:adView:container:binder:)Void注册自渲染视图,绑定点击交互与物料(仅原生自渲染)

无 pause/resume 方法

UjuAdObject 没有 pause() 和 resume() 方法。如需暂停展示,请调用 destroy() 销毁后重新创建对象。

UjuAdInitConfig ​

SDK 初始化配置,struct(Sendable)。init 为 private,必须通过 create(...) 工厂方法构造。

create 参数 ​

参数类型必填默认值说明
appIdString是—应用 ID
appKeyString是—RSA 公钥,原样传入
channelString否"AppStore"渠道标识
subChannelString否""子渠道
isDebugBool否false调试模式
wxAppIdString?否nil微信 AppId
privacyConfigUjuPrivacyConfig否UjuPrivacyConfig()隐私授权配置
personalizationUjuPersonalizedConfig否UjuPersonalizedConfig()个性化推荐配置
presetStrategyFileNameString?否nil预置策略文件名
regionUjuAdRegion否.domestic服务区域
rsaPublicKeyString否""RSA 公钥(PEM),用于服务端通信加密
loggerBackendUjuLoggerBackend否.nsLog日志后端类型(.nsLog / .osLog / .fileLog / .hybrid)
debugBidRequestBool否false是否输出 BidRequest JSON 调试日志(仅 isDebug=true 时生效)
crashReportingEnabledBool否true是否启用崩溃上报
swift
let config = UjuAdInitConfig.create(
    appId: "YOUR_APP_ID",
    appKey: "YOUR_APP_KEY",
    channel: "AppStore",
    isDebug: true,
    region: .domestic,
    rsaPublicKey: "YOUR_RSA_PUBLIC_KEY"
)

UjuAdConfig ​

广告请求配置,struct,每次创建广告对象时传入,直接 init 构造。

字段类型必填默认值说明
placementIdString是—广告位 ID
scenarioKeyString?否nil场景标识,用于统计
adViewSizeAdViewSize?否nil横幅 / 原生期望尺寸(逻辑点)。3.4.6 起作为竞价 slot 尺寸与预算源模版加载尺寸(宽度不超过宿主窗口当前宽度);nil 时按宿主窗口当前宽度推导
userIdString?否nil用户 ID,激励视频常用
customData[String: String]?否nil自定义数据
bidFloorDouble否0.0底价(元,CPM),由聚合平台(如 ToBid)传入,普通集成方无需设置

UjuPrivacyConfig ​

隐私授权配置,struct(Sendable)。所有字段默认 false(最严格隐私合规),业务方需显式开启。

字段类型默认值说明
canUseIDFABoolfalse是否允许使用 IDFA(需 ATT 授权)
canUseIDFVBoolfalse是否允许使用 IDFV
canUseLocationBoolfalse是否允许使用地理位置
canUseImeiBoolfalse是否允许使用 IMEI(iOS 通常不允许,字段保留兼容)
canUseOaidBoolfalse是否允许使用 OAID(iOS 无对应,字段保留兼容)
canUseMacBoolfalse是否允许使用 MAC 地址(iOS 通常不允许,字段保留兼容)

UjuPersonalizedConfig ​

个性化推荐配置,struct(Sendable)。所有字段默认 false(最严格合规),业务方需显式开启。

字段类型默认值说明
personalizedRecommendBoolfalse是否允许个性化推荐
programmaticRecommendedBoolfalse是否允许程序化推荐

UjuAdInfo ​

广告信息模型,struct。通过 UjuAdObject.getAdInfo() 获取。

字段类型说明
ecpmDouble广告价格(eCPM)
placementIdString广告位 ID
soltIdString广告位槽位 ID(注意:源码拼写为 soltId)
platformIdInt平台 ID,对应 AdPlatformType 的数值
adFormatAdFormat广告格式
originalDoubleDataDouble?原始 eCPM(未转换)
loadIdString加载实例 ID

字段拼写注意

UjuAdInfo 中的槽位 ID 字段拼写为 soltId(非 slotId),这是源码中的实际拼写,使用时请保持一致。

NativeAdData ​

原生广告自渲染物料数据,struct。通过 UjuAdObject.getAdData() 获取,所有字段均为可选。

字段类型说明
titleString?广告标题
descString?广告描述
sourceString?广告来源
callToActionString?行动号召文案(如「立即下载」)
imageUrlString?单图 URL
imageUrlList[String]?多图 URL 列表
iconUrlString?图标 URL

NativeAdViewBinder ​

原生广告视图绑定器,struct,采用 view.tag 模式。仅 titleTag 必填,其余默认 0/[] 表示不绑定。

字段类型必填默认值说明
titleTagInt是—标题视图 tag
descTagInt否0描述视图 tag
sourceTagInt否0来源视图 tag
imageTagInt否0主图视图 tag
mediaViewTagInt否0媒体视图 tag(视频广告)
iconTagInt否0图标视图 tag
callToActionTagInt否0行动号召按钮 tag
logoTagInt否0广告标识 tag
clickViewTags[Int]否[]额外可点击视图 tag 列表
dislikeTagInt否0不感兴趣按钮 tag

AdViewSize ​

广告尺寸配置,struct(Sendable),单位为逻辑点(pt,与 UIView 尺寸同单位),仅对横幅与原生模板广告生效。3.4.6 起设置后 SDK 以此作为竞价 slot 尺寸与各预算源模版加载尺寸(宽度不超过宿主窗口当前宽度);未设置时按宿主窗口当前宽度推导,折叠屏折叠 / 展开后随窗口变化。

字段类型说明
widthCGFloat宽度(逻辑点)
heightCGFloat高度(逻辑点)

预设尺寸(静态属性) ​

预设属性宽 × 高描述
AdViewSize.bannerSize320x50320 × 50标准 Banner
AdViewSize.bannerSize320x100320 × 100大号 Banner
AdViewSize.bannerSize320x75320 × 75智能 Banner
AdViewSize.nativeSize600x200600 × 200Native 自渲染
AdViewSize.nativeSize690x388690 × 388Native 信息流卡片
swift
// 使用预设
let size = AdViewSize.bannerSize320x50

// 自定义尺寸
let custom = AdViewSize(width: 300, height: 250)

Listener 接口 ​

SDK 提供一组监听器协议,按广告类型区分。所有广告监听器均继承自 BaseAdObjectListener,方法均有默认空实现,调用方可只实现关心的回调。

继承关系 ​

BaseAdObjectListener
├── FeedAdObjectListener            (横幅 / 原生信息流)
├── SplashAdObjectListener          (开屏)
├── InterstitialAdObjectListener    (插屏)
└── RewardAdObjectListener          (激励视频)

BaseInitListener                    (SDK 初始化,独立接口)

BaseAdObjectListener ​

所有广告对象监听器的基类协议(AnyObject)。

方法签名说明
onLoadSuccess()广告加载成功(无参数)
onLoadError(error: UjuException)广告加载失败(1 个参数)
onAdShow()广告展示
onAdClicked()广告被点击
onAdClosed()广告关闭
onAdError(error: UjuException)广告展示阶段错误(1 个参数)

参数数量

iOS 的 onLoadSuccess() 无参数,onLoadError(error:) 与 onAdError(error:) 均为 1 个参数(error)。与 Android 不同(Android onLoadSuccess 有 placementId 参数,onLoadError 有 2 个参数)。

FeedAdObjectListener ​

横幅与原生信息流监听器,继承 BaseAdObjectListener。

方法签名说明
onAdSizeChanged(width: CGFloat, height: CGFloat)广告视图尺寸变化(3.4.6 新增,主线程)。容器宽度变化(折叠屏折叠 / 展开、分屏、旋转)后广告按新宽度重排、高度随之改变时回调;初次渲染不回调。列表类宿主可据此刷新行高
onLpClosed()落地页关闭

SplashAdObjectListener ​

开屏广告监听器,继承 BaseAdObjectListener。

方法签名说明
onAdDismissed()开屏被关闭(用户跳过或倒计时结束)

InterstitialAdObjectListener ​

插屏广告监听器,继承 BaseAdObjectListener。

方法签名说明
onAdPlayComplete()插屏播放完成

RewardAdObjectListener ​

激励视频监听器,继承 BaseAdObjectListener。

方法签名说明
onAdRewardArrived()发放奖励(无参数)
onAdPlayComplete()视频播放完成
onAdSkippedVideo()用户跳过视频

onAdRewardArrived 无参数

onAdRewardArrived() 没有任何参数。如需自定义奖励信息,请在服务端通过 S2S 回调验证。

BaseInitListener ​

SDK 初始化监听器,独立接口(AnyObject, Sendable),回调在 MainActor(主线程)。

方法签名说明
onInitSuccess()SDK 初始化成功
onInitFailed(error: UjuException)SDK 初始化失败

相关链接 ​