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.2
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.2"

// 释放资源
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 初始化配置,structSendable)。init 为 private,必须通过 create(...) 工厂方法构造。

create 参数

参数类型必填默认值说明
appIdString应用 ID
appKeyStringRSA 公钥,原样传入
channelString"AppStore"渠道标识
subChannelString""子渠道
isDebugBoolfalse调试模式
wxAppIdString?nil微信 AppId
privacyConfigUjuPrivacyConfigUjuPrivacyConfig()隐私授权配置
personalizationUjuPersonalizedConfigUjuPersonalizedConfig()个性化推荐配置
presetStrategyFileNameString?nil预置策略文件名
regionUjuAdRegion.domestic服务区域
rsaPublicKeyString""RSA 公钥(PEM),用于服务端通信加密
loggerBackendUjuLoggerBackend.nsLog日志后端类型(.nsLog / .osLog / .fileLog / .hybrid)
debugBidRequestBoolfalse是否输出 BidRequest JSON 调试日志(仅 isDebug=true 时生效)
crashReportingEnabledBooltrue是否启用崩溃上报
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广告尺寸,仅模板渲染(横幅/原生)生效
userIdString?nil用户 ID,激励视频常用
customData[String: String]?nil自定义数据
bidFloorDouble0.0底价(元,CPM),由聚合平台(如 ToBid)传入,普通集成方无需设置

UjuPrivacyConfig

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

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

UjuPersonalizedConfig

个性化推荐配置,structSendable)。所有字段默认 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
descTagInt0描述视图 tag
sourceTagInt0来源视图 tag
imageTagInt0主图视图 tag
mediaViewTagInt0媒体视图 tag(视频广告)
iconTagInt0图标视图 tag
callToActionTagInt0行动号召按钮 tag
logoTagInt0广告标识 tag
clickViewTags[Int][]额外可点击视图 tag 列表
dislikeTagInt0不感兴趣按钮 tag

AdViewSize

广告尺寸配置,structSendable),单位为像素,仅对横幅与原生模板广告生效。

字段类型说明
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 onLoadSuccessplacementId 参数,onLoadError 有 2 个参数)。

FeedAdObjectListener

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

方法签名说明
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 初始化失败

相关链接