ChartboostMediationAdapterReference 5.1.0.0.0

ChartboostMediationAdapterReference 5.1.0.0.0

Helium ServiceHaoxin LiKendall RogersAlex RiceDaniel BarrosKelly Dun 维护。



  • Chartboost

Chartboost Mediation 参考适配器

Chartboost Mediation 参考适配器展示了与 Chartboost Mediation SDK 的集成,仅用于参考和测试。

最低要求

插件 版本
Chartboost Mediation SDK 5.0.0+
Cocoapods 1.11.3+
iOS 13.0+
Xcode 15.0+

集成

在您的 Podfile 中添加以下条目

pod 'ChartboostMediationAdapterReference'

Chartboost Mediation 自定义适配器实现指南

重要

Chartboost Mediation 不提供官方支持自定义适配器。有关官方适配器的列表,请访问此网站:https://adapters.chartboost.com

  1. 创建一个新类,使其符合 Chartboost Mediation 的 PartnerAdapter 协议。

  2. 实现 var partnerSDKVersion: String { get } 以返回合作伙伴 SDK 的版本号。大多数适配器从合作伙伴 SDK 的 API 中获取此信息,因此即使在 SDK 版本已更改的情况下,适配器也始终报告正确的版本。

  3. 实现 var adapterVersion: String { get } 以返回 Mediation 适配器的版本号。适配器版本格式为 <Chartboost Mediation 主版本号>.<合作伙伴主版本号>.<合作伙伴次要版本号>.<合作伙伴修复版本号>.<合作伙伴构建版本号>.<适配器构建版本号>
    <合作伙伴构建版本号> 是可选的,并且大多数合作伙伴都省略了它。例如,如果此适配器与 Chartboost Mediation SDK 4.x 和合作伙伴 SDK 1.2.3.[4] 兼容,并且这是其首次发布,那么 adapterVersion 是 4.1.2.3.[4].0。

  4. 实现 var partnerID: String { get },该代码中包含 Chartboost Mediation SDK 可以用来引用当前合作伙伴的内部标识符。必须与 Chartboost Mediation 仪表板上使用的值匹配。

  5. 实现 var partnerDisplayName: String { get },该代码以易读的合作伙伴名称。

  6. 实现 func setGDPR(applies: Bool?, status: GDPRConsentStatus)
    func setCCPA(hasGivenConsent: Bool, privacyString: String),
    func setCOPPA(isChildDirected: Bool)
    这些将接收来自 Chartboost Mediation SDK 的隐私设置并将其应用到合作伙伴 SDK 中。
    它们总是在 Chartboost Mediation 初始化适配器时启动时调用。它们也将在出版商在 Mediation SDK 上更新隐私设置时调用。
    请注意,这些隐私方法只有在 setUp() 之后才会调用。如果您的 SDK 需要在初始化时传入隐私设置,您需要在启动时设置一个安全的默认值。在这种情况下,请考虑在收到隐私设置时将它们保存到磁盘,以便在下次启动时应用它们。每次您更新 SDK 的隐私设置时,请使用 PartnerLogEvent.privacyUpdated(setting: String, value: Any?) 来记录更改。

  7. 实现 init(storage: PartnerAdapterStorage)。对于大多数适配器而言,这是一个空操作,但如果需要防止相同的放置ID被加载两次,请保存对storage的引用,该引用提供了MediationSDK当前已加载的您的网络中广告的可见性。关于如何检查此存储以确定重复项,请参考引用适配器中makeAd的实现示例。

  8. 实现 func setUp(with configuration: PartnerConfiguration, completion: @escaping (Error?) -> Void)以初始化合作伙伴SDK并执行任何必要的设置以请求和提供服务广告。在初始化您的SDK之前调用PartnerLogEvent.setUpStarted()。如果操作成功,记录PartnerLogEvent.setUpSucceded和调用completion(nil)。否则,记录PartnerLogEvent.setUpFailed(Error)和调用completion(Error)。如果该方法调用超时,即使您稍后报告了成功的init,MediationSDK也会考虑您的适配器未初始化。

  9. 实现 func fetchBidderInformation(request: PreBidRequest, completion: @escaping ([String: String]?) -> Void)。如果您支持竞价,返回包含可竞价代币字符串的completion([String: String])。此字典中使用的键取决于您的网络中的竞价如何与我们后端集成。通常,Chartboost仅将这些标签传递给竞价服务器,因此这里应用的是您的RTB规范。例如,如果您的服务器期望在名为 'token' 的字段中接收竞价信息,则应使用'token'。
    在获取/生成代币时,使用以下三个PartnerLogEvent来记录执行过程
    fetchBidderInfoStarted(PreBidRequest)
    fetchBidderInfoSucceeded(PreBidRequest)
    fetchBidderInfoFailed(PreBidRequest, error: Error)
    如果您的SDK不支持竞价,则只需调用completion(nil)

  10. 实现至少一个包装您广告实例的类。它必须遵守PartnerAd协议

    • var adapter: PartnerAdapter { get }
      创建广告的适配器的引用。
    • var request: PartnerAdLoadRequest { get }
      关联的广告加载请求。
    • var delegate: PartnerAdDelegate? { get }
      生命周期事件代理。
    • var inlineView: UIView? { get }
      显示横幅广告的视图。不用于其他广告类型。
    • func load(with viewController: UIViewController?, completion: @escaping (Error?) -> Void)
      从您的网络SDK实例化一个广告。如果您的SDK期望从竞价响应中接收 ADM 来构建广告,它将在 request.adm 中。对于非竞价广告,放置ID将在 request.partnerPlacement 中可用。在加载后调用完成调用以指示成功或失败。
    • func show(with viewController: UIViewController, completion: @escaping (Error?) -> Void)
      显示已加载的广告,然后调用显示完成闭包。从不用于横幅广告。
    • func invalidate() throws
      在SDK在处置广告之前调用。有一个无操作默认实现,并且大多数适配器不需要实现自己的实现,因为它们的广告不需要进行特殊清理。

    大多数适配器实现多个广告类型(例如, [YourNetwork]BannerAd、[YourNetwork]InterstitialAd等)。在这种情况下,您可以将有PartnerAd要求的一些东西移动到父类中,以减少代码重复。在这个库中,您可以查看如何 ReferenceAdapterAd 持有 init 函数以及一些在子类间不同的属性。

    每个PartnerAd还需要存储Chartboost MediaSDK将通过makeAd传递给PartnerAdDelegate,并调用以下代理方法来报告您的广告生命周期事件

    • func didTrackImpression(_ ad: PartnerAd, details: PartnerDetails)
      当合作伙伴SDK为当前显示的广告注册印象时调用。
    • func didClick(_ ad: PartnerAd, details: PartnerDetails)
      在用户点击操作后,调用该函数以执行合作伙伴广告被点击时的操作。
    • func didReward(_ ad: PartnerAd, details: PartnerDetails)
      在观看视频广告并获得奖励时调用该函数。
    • func didDismiss(_ ad: PartnerAd, details: PartnerDetails, error: Error?)
      当用户执行操作导致合作伙伴广告被关闭时,调用该函数。
    • func didExpire(_ ad: PartnerAd, details: PartnerDetails)
      当合作伙伴 SDK 确定合作伙伴广告已到期时,调用该函数。
  11. 实现 func makeAd(request: PartnerAdLoadRequest, delegate: PartnerAdDelegate) throws -> PartnerAd,返回遵循 PartnerAd 的对象。如果你正在编写适用于 Chartboost Mediation 4.x 的适配器,并且你的适配器支持自适应横幅或奖励激励视频,你需要在 default 子句中检查这些,以保持向后兼容性。

default:
    if request.format.rawValue == "rewarded_interstitial" {
        return YourAdapterRewardedInterstitialAd(adapter: self, request: request, delegate: delegate)
    } else if request.format.rawValue == "adaptive_banner" {
        return YourAdapterAdapterBannerAd(adapter: self, request: request, delegate: delegate)
    } else {
        throw error(.loadFailureUnsupportedAdFormat)
    }
  1. 在 Chartboost Mediation 网络仪表板上,添加你的完整适配器类名,以便你的中介适配器和合作伙伴 SDK 可以被初始化并用于广告服务。

  2. 如果你的 SDK 具有出版商需要访问的配置功能,请通过一个名为 [YourNetwork]AdapterConfiguration 的类提供,该类公开属性或方法。

贡献

我们致力于完全透明的开发过程,并非常欣赏任何贡献。我们的团队定期监视和调查所有提交,以将其包括在我们的官方适配器版本中。

有关如何贡献的更多信息,请参阅我们的 CONTRIBUTING 文件。

许可证

有关更多信息,请参阅我们的 LICENSE 文件。