SantaSDK 1.0.3

SantaSDK 1.0.3

Santa 维护。



SantaSDK 1.0.3

  • Motiv Intelligence

目录

版本历史

  • 版本 1.0.0

开始之前

  • Santa SDK 推荐在响应广告请求并在实际展示之间(曝光缓存时间)控制在10分钟以内(IAB 推荐)。
  • 如果广告响应后展示时间比这个时间长,则可能会因为广告活动而无效。

SDK 信息

SantaSDK是用Xcode 15.1,iOS 12.0版本构建的。

开始使用

应用程序设置

Santa SDK for CocoaPods 添加方法

CocoaPods 安装指南

Pod Install

构建Podfile

pod init

vi Podfile

修改Podfile

target 'MyApp' do
  use_frameworks!
  
  pod 'SantaSDK'
end

安装Podfile

pod install

Info.plist 设置

描述
隐私 - 跟踪使用描述 例如:为了提供个性化广告,将使用设备识别数据。 使用该功能的应用访问设备追踪数据的原因
隐私 - 总是位置和使用时位置使用描述 例如:为了提供个性化广告,将使用用户的位置数据。 使用该功能的应用需要始终访问用户位置信息的原因
隐私 - 使用时位置使用描述 例如:为了提供个性化广告,将使用用户的位置数据。 使用该功能的应用需要在使用时访问用户位置信息的原因
隐私 - 位置默认精度降低 例如:是或否 是否使用精确位置信息的值

文章应用

应用注册

create app

单元ID发出

create unit

横幅广告

详细内容请参考横幅广告样本。

1. 声明用于请求广告的变量

// 광고 인스턴스  
var adView : STAdView?

// 광고가 표시될 뷰
var adViewContainer : UIView!

2. 创建广告实例

/**
 * @param adUnitId - 광고 유닛 ID
 * @param size - 원하는 광고 크기입니다.
 */
STAdView(adUnitId: String?, size: CGSize?)

示例)

// 광고 인스턴스 생성
self.adView = STAdView(adUnitId: "adUnitId", size: self.adViewContainer.frame.size)

if let adView = self.adView {
    // 대리자 전달
    adView.delegate = self
    
    // 광고 포맷 선택 (adFormat: [SantaSDK.STAdFormat]?)
    adView.adFormat = [.HTML]
}

3. 向广告位置添加广告视图

self.adViewContainer.addSubview(adView)

// 광고 뷰에 레이아웃 적용
self.setAutoLayout(view: self.adViewContainer, adView: adView)

4. 请求广告

self.adView.loadAd()

横幅广告 Protocol (STAdViewDelegate Protocol Reference)

// 광고를 성공적으로로드하면 전송됩니다.
func adViewDidLoadAd(_ view: STAdView?)

// 광고로드에 실패 할 때 전송됩니다.
func adViewDidFailToLoadAd(_ view: STAdView?)

// 콘텐츠를로드하려고 할 때 전송됩니다.
func willLoadViewForAd(_ view: STAdView?)

// 모달 콘텐츠를 닫았을 때 전송되어 애플리케이션에 제어권을 반환합니다.
func didLoadViewForAd(_ view: STAdView?)

// 사용자가 광고를 탭하여 애플리케이션에서 나 가려고 할 때 전송됩니다.
func willLeaveApplicationFromAd(_ view: STAdView?)

全屏广告

详细内容请参考全屏广告样本。

1. 声明用于请求全屏广告的变量

// 전면 광고 인스턴스  
var interstitial: STInterstitialAdView?

2. 调用创建全屏广告实例的函数

/**
 * @param adUnitId - 광고 유닛 ID
 */
STInterstitialAdView.interstitialAdControllerForAdUnitId(_ adUnitId: String) -> STInterstitialAdView

示例)

// 전면 광고 인스턴스 생성
self.interstitial = STInterstitialAdView.interstitialAdControllerForAdUnitId(adUnitId)

if let interstitial = interstitial {
    // 대리자 전달
    interstitial.delegate = self
    
    // 광고 포맷 선택 (adFormat: [SantaSDK.STAdFormat]?)
    interstitial.adFormat = [.HTML]
}

3. 请求全屏广告

self.interstitial.loadAd()

4. 显示全屏广告

/**
 * @param controller 전면 광고를 표시하는 데 사용해야하는 UIViewController입니다.
 */
STInterstitialAdView.showFromViewController(_ controller: UIViewController? = nil)

示例)

self.interstitial?.showFromViewController(self)

全屏广告 Protocol (STInterstitialAdViewDelegate Protocol Reference)

  // 전면 광고를 성공적으로로드하면 전송됩니다.
  func interstitialDidLoadAd(_ interstitial: STInterstitialAdView?)

  // 광고를로드하지 못할 때 전송됩니다.
  func interstitialDidFailToLoadAd(_ interstitial: STInterstitialAdView?)

  // 전면 광고가 화면에 표시되기 직전에 전송됩니다.
  func interstitialWillAppear(_ interstitial: STInterstitialAdView?)

  // 전면 광고가 화면에 표시된 후에 전송됩니다.
  func interstitialDidAppear(_ interstitial: STInterstitialAdView?)
  
  // 전면 광고가 화면에 표시되지 못할때
  func interstitialDidFailToShow(_ interstitial: STInterstitialAdView?)

  // 전면 광고가 화면에서 닫히기 직전에 전송됩니다.
  func interstitialWillDisappear(_ interstitial: STInterstitialAdView?)

  // 전면 광고가 화면에서 해제 된 후 전송되어 애플리케이션에 제어권이 반환됩니다.
  func interstitialDidDisappear(_ interstitial: STInterstitialAdView?)

  // 로드된 전면 광고를 더 이상 표시 할 수 없을 때 전송됩니다.
  func interstitialDidExpire(_ interstitial: STInterstitialAdView?)

  // 사용자가 전면 광고를 탭하고 광고가 타겟 작업을 수행하려고 할 때 전송됩니다.
  func interstitialDidReceiveTapEvent(_ interstitial: STInterstitialAdView?)

原生广告

详细内容请参考原生广告样本。

1. 声明原生广告视图类

根据原生协议,使用UIView类构建需要的项目。
详细内容请参考示例代码。

原生广告视图 Protocol (STNativeAdRenderingDelegate Protocol Reference)

// 메인 텍스트에 사용하고있는 UILabel을 반환합니다.
func nativeMainTextLabel() -> UILabel?

// 제목 텍스트에 사용중인 UILabel을 반환합니다.
func nativeTitleTextLabel() -> UILabel?

// 아이콘 이미지에 사용중인 UIImageView를 반환합니다.
func nativeIconImageView() -> UIImageView?

// 메인 이미지에 사용중인 UIImageView를 반환합니다.
func nativeMainImageView() -> UIImageView?

// 비디오에 사용하는 UIView를 반환합니다. (동영상 광고를 게재할 때만 이를 구현하면 됩니다.)
func nativeVideoView() -> UIView?

// 클릭 유도 문안 (cta) 텍스트에 사용중인 UILabel을 반환합니다.
func nativeCallToActionTextLabel() -> UILabel?

// 개인 정보 아이콘에 대해 뷰가 사용중인 UIImageView를 반환합니다.
func nativePrivacyInformationIconImageView() -> UIImageView?

示例)

class NativeView: UIView {
    var titleLabel: UILabel!
    var mainTextLabel: UILabel!
    var iconImageView: UIImageView!
    var mainImageView: UIImageView!
    var mainVideoView: UIView!
    var privacyInformationIconImageView: UIImageView!
    var ctaLabel: UILabel!
}

2. 声明原生广告实例变量

// 네이티브 광고 인스턴스 선언  
var nativeAd: STNativeAd?

// 네이티브 광고가 표시될 뷰 선언
var adViewContainer : UIView!

3. 原生广告请求预处理

STNativeAdManager.initNativeAdWithAdUnitIdentifier(_ identifier: String, _ adViewClass: AnyClass?)

示例)

STNativeAdManager.initNativeAdWithAdUnitIdentifier(adUnitId, NativeView.self)

// 광고 포맷 선택 (adFormat: [SantaSDK.STAdFormat]?)
STNativeAdManager.adFormat([.NATIVE])

4. 请求并显示原生广告

STNativeAdManager.startWithCompletionHandler { (request, response, error) in
    if error != nil {
        // 에러 처리
    } else {
        self.nativeAd = response
        self.nativeAd?.delegate = self
        
        // 네이티브 광고 표시
        self.displayAd()
    }
}

func displayAd() {
    // 기존에 표시되던 View들을 제거
    adViewContainer.subviews.forEach { subview in
        subview.removeFromSuperview()
    }
    
    // 광고 위치에 네이티브 광고 뷰 추가 
    if let adView = nativeAd?.retrieveAdViewWithError(nil) {
        adViewContainer.addSubview(adView)
        setAutoLayout2(view: adViewContainer, adView: adView)
    }
}

混合广告

有关详细信息,请参阅混合广告示例。

1. 声明用于请求广告的变量

// WebView로 전달될 데이터 매니저 인스턴스  
var adTagManager: STAdTagManager?

// 광고가 표시될 웹뷰
var webView: WKWebView!

2. 准备广告请求所需数据

/**
 * @param adUnitId - 광고 유닛 ID
 * @param size - 원하는 광고 크기입니다.
 */
adTagManager = STAdTagManager()

// 광고식별자 요청은 광고 요청 전에 완료되야합니다.
adTagManager?.requestTrackingAuthorization() { _ in
    // 위치 - 사용자 승인 요청
    self.adTagManager?.requestLocation()
}

3. 在WebView页面加载前注入数据

WKNavigationDelegate {
    
    // MARK: Javascript 주입 방법 - 페이지 로딩 전에 데이터를 주입 시킨다
    // 웹 컨텐츠를 수신하기 시작할때 데이터 바인딩
    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        // 기본 데이터 외 문서에 추가할 데이터
        let source = self.adTagManager?.makeSource(["custom_key" : "custom_value"]) ?? ""
        
        // json 형태로 데이터 주입
        webView.evaluateJavaScript("window.santa_sdk=\(source);", completionHandler: { result, error in
            if error != nil {
                print("ERROR : \(String(describing: error))")
            } else {
                // 성공
            }
        })
    }

}

WKNavigationDelegate 协议

// 웹 컨텐츠를 수신하기 시작할때
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!)

添加广告实例选项

  • 根据需要,可以为广告实例添加其他设置。
    • testing:是否进行测试广告请求。
    • location:设置位置信息。显示相关度更高的广告。
    • keywords:设置自定义元数据。
    • coppa:根据美国儿童在线隐私保护法,如果将用户设置为13岁以下,则限制个人信息以供广告竞价处理。(IP、设备ID、地理信息等)
    • rewarded:设置是否提供地面奖励。