Skip to content

adiscope/Adiscope-iOS-Sample

Repository files navigation

Adiscope for iOS Integration

GitHub package.json version GitHub package.json version GitHub package.json version GitHub package.json version GitHub package.json version

  • 지원 환경 : iOS 13.0 + / iPadOS 13.0 + / Xcode 16.0 +
Networks Version
Ad Network iOS Version
AdMob 12.14.0
Amazon 5.3.3
AppLovin 13.5.1
BidMachine 3.5.1
Bigo 5.0.0
Chartboost 9.11.0
DT Exchange 8.4.3
InMobi 11.0.0
ironSource 9.2.0.0
Liftoff(Vungle) 7.6.3
Line 2.9.20251119
Meta(Fan) 6.20.1
Mintegral(Mobvista) 8.0.4
Moloco 4.2.0
Ogury 5.1.1
Pangle 7.8.5.5
PubMatic 4.11.0
TnkPub 1.24
Unity Ads 4.16.5

Contents


Installation

1. CocoaPods

  • CocoaPods는 Cocoa Projects의 Dependency를 관리할 수 있음

A. CocoaPods Install

gem install cocoapods
  • 명령어를 사용하여 설치 진행

B. Podfile

  • CocoaPods의 Xcode Project내에 Podfile에서 기술
# source 'https://github.com/CocoaPods/Specs.git' // 제한망 or install error시 추가
platform :ios, '13.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Adiscope', '5.2.3'
end
네트워크 개별 선택 추가 방법
# source 'https://github.com/CocoaPods/Specs.git' // 제한망 or install error시 추가
platform :ios, '13.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Adiscope/LuckyEvent', '5.2.3'
    pod 'Adiscope/AdManager', '5.2.0'
    pod 'Adiscope/AdMob', '5.2.0'
    pod 'Adiscope/ChartBoost', '5.2.0'
    pod 'Adiscope/Pangle', '5.2.0'
    pod 'Adiscope/TnkPub', '5.2.0'
    pod 'Adiscope/Vungle', '5.2.0'
    pod 'Adiscope/MaxMediaAdManager', '5.2.0'
    pod 'Adiscope/MaxMediaAdMob', '5.2.0'
    pod 'Adiscope/MaxMediaAmazon', '5.2.0'
    pod 'Adiscope/MaxMediaBidMachine', '5.2.0'
    pod 'Adiscope/MaxMediaBigo', '5.2.0'
    pod 'Adiscope/MaxMediaChartBoost', '5.2.0'
    pod 'Adiscope/MaxMediaDTExchange', '5.2.0'
    pod 'Adiscope/MaxMediaFan', '5.2.0'
    pod 'Adiscope/MaxMediaInMobi', '5.2.0'
    pod 'Adiscope/MaxMediaIronSource', '5.2.0'
    pod 'Adiscope/MaxMediaLine', '5.2.0'
    pod 'Adiscope/MaxMediaMobVista', '5.2.0'
    pod 'Adiscope/MaxMediaMoloco', '5.2.0'
    pod 'Adiscope/MaxMediaOgury', '5.2.0'
    pod 'Adiscope/MaxMediaPangle', '5.2.0'
    pod 'Adiscope/MaxMediaPubMatic', '5.2.0'
    pod 'Adiscope/MaxMediaUnityAds', '5.2.0'
    pod 'Adiscope/MaxMediaVungle', '5.2.0'
end
  • Version이 상이할 경우 Initialize시 Log를 통해 확인 가능
    AdapterChecked

C. Pod Install

pod install --repo-update
  • 다음의 명령어를 실행해서 Library를 Xcode Project로 추가
  • Xcode Project에 포함시키기 위해서 Xcode 재실행


2. SPM(Swift Package Manager)

3. Manual Installation

Setup Xcode

1. info.plist 수정

A. [필수] AdiscopeMediaId, AdiscopeMediaSecret 추가

<key>AdiscopeMediaId</key>
<string></string>
<key>AdiscopeMediaSecret</key>
<string></string>

B. [필수] App Tracking Permission 추가

<key>NSUserTrackingUsageDescription</key>
<string></string>
  • ex : Some ad content may require access to the user tracking.

C. [필수] SKAdNetwork 추가

  • Xcode 12.0 이상이면 SKAdNetwork Download File 내용 추가 (Download)
  • 2026년 3월 9일에 마지막으로 파일 내용 추가
<dict>
    <key>SKAdNetworkItems</key>
    <array>
	<dict>
	    <key>SKAdNetworkIdentifier</key>
	    <string></string>
	</dict>
    </array>
</dict>

D. (선택) liftoff 사용 시 AdNetworkIdentifiers 추가

  • liftoff 사용하면서 AdAttributionKit 17.4+ 이면 AdNetwork Download File 내용 추가 (Download)
  • 2026년 3월 9일에 마지막으로 파일 내용 추가
<dict>
    <key>AdNetworkIdentifiers</key>
    <array>
	    <string></string>
    </array>
</dict>

E. (선택) Admob 또는 Max의 Admob 사용 시 추가

  • "GADIsAdManagerApp" 설정 및 GADApplicationIdentifier의 Key 설정
<key>GADIsAdManagerApp</key>
<true/>
<key>GADApplicationIdentifier</key>
<string></string>




2. AppDelegate 추가

A. Max의 InMobi 사용 시 추가

  • window 추가
var window: UIWindow?




3. Privacy Manifest 정책 적용

  • 2024년 5월 1일부터 출시/업데이트 되는 앱에 대해 3rd Party Framework의 개인정보 추가
  • 참고




Adiscope Overview

1. Import (필수)

import Adiscope




2. Initialize (필수)

A. Code에서 Media 없이 Initialize 방법

let CALLBACK_TAG = "";    // 관리자를 통해 발급, 기본 ""
if let adiscopeSDK = AdiscopeInterface.sharedInstance() {
    adiscopeSDK.setMainDelegate(self)
    adiscopeSDK.initialize(CALLBACK_TAG)
}
  • Build된 Project에서 Info.plist 파일에서 AdiscopeMediaId가 있어야 함 (Info.plist 확인)
  • CALLBACK_TAG이 없을 시, adiscopeSDK.initialize()로 가능
  • App 실행 시 1회 설정 권장

B. Code에서 직접 Media 넣어서 Initialize 방법

let MEDIA_ID = "";        // 관리자를 통해 발급
let MEDIA_SECRET = "";    // 관리자를 통해 발급
let CALLBACK_TAG = "";    // 관리자를 통해 발급, 기본 ""
if let adiscopeSDK = AdiscopeInterface.sharedInstance() {
    adiscopeSDK.setMainDelegate(self)
    adiscopeSDK.initialize(MEDIA_ID, mediaSecret: MEDIA_SECRET, callBackTag: CALLBACK_TAG)
}
  • CALLBACK_TAG이 없을 시, adiscopeSDK.initialize(MEDIA_ID, mediaSecret: MEDIA_SECRET)로 가능
  • App 실행 시 1회 설정 권장

C. Callbacks

func onInitialized(_ isSuccess: Bool) {
    if (isSuccess) {
        // Initialize Call Back
    } else {
        // Initialize Fail
    }
}




3. 사용자 정보 설정 (필수)

  • Offerwall, RewardedVideo, RewardedInterstitial를 사용하기 위해 ${\color{red}필수}$ 설정
let USER_ID = "";        // set unique user id to identify the user in reward information
AdiscopeInterface.sharedInstance().setUserId(USER_ID);
  • 64자까지 설정 가능



4. Lucky Event

A. Settings

let EVENT_APP_ID = "";		// 관리자를 통해 발급
let EVENT_PUB_ID = "";		// 관리자를 통해 발급
AdiscopeInterface.sharedInstance().setLuckyEventAppId(EVENT_APP_ID, pubId: EVENT_PUB_ID)

B. Show

AdiscopeInterface.sharedInstance().showLuckyEvent()

C. (선택) WebView interceptor callback

func luckyEventWebViewNavigated(_ url: URL, vc: UIViewController) {
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • Lucky Event WebView에서 발생하는 Scheme URL 정보를 수신, 전달된 URL에 대해 이벤트 처리 용도로 사용 권장


5. RewardedVideo

A. Load

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let UNIT_ID = "";      // 관리자를 통해 발급
    AdiscopeInterface.sharedInstance().load(UNIT_ID)
} else {
    // Initialize 재시도
}
  • Initialize와 사용자 정보 설정의 진행 완료 후 Load 호출
  • Load 후 사용자 정보 설정을 호출할 경우 isLoaded Flag가 False로 반환(Load 취소)
  • 해당 유닛에 속한 ad 네크워크들의 광고를 Load
  • onRewardedVideoAdLoaded callback이 호출되면 Load가 완료
  • Load가 실행되면 onRewardedVideoAdLoadedonRewardedVideoAdFailedToLoad 중 하나의 callback은 항상 호출
  • Rewarded Video Ad의 LoadShow는 pair로 호출
  • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
  • Load & Show 후 다시 Load를 하려 할 때 Load 는 Show 이후 언제든 호출가능
    • 광고가 Show되는 동안 다음 광고를 Load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
  • Show의 callback 인 onRewardedVideoAdClosed에서 다시 Load를 하는 것을 권장
    • Abusing 방지를 위해 Rewarded Video Ad를 연속으로 보여주는 것을 제한하여 한번 광고를 보고 나면 일정 시간이 지난 후에 다시 Show를 할 수 있도로록 Admin page에서 서비스 설정 가능
  • Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
  • (Optional) Load의 시간이 필요해 ProgressBar 노출 추천

B. IsLoaded

let UNIT_ID = "";      // Load한 값(관리자를 통해 발급)
if (AdiscopeInterface.sharedInstance().isLoaded(UNIT_ID)) {
    // show ad here
} else {
    // do something else
}
  • 광고가 Load 되었는지 상태를 확인

C. Show

let UNIT_ID = "";      // Load한 값(관리자를 통해 발급)
if (AdiscopeInterface.sharedInstance().isLoaded(UNIT_ID)) {
    AdiscopeInterface.sharedInstance().show()
} else {
    // do something else
}
  • 마지막으로 Load된 광고를 사용자에게 보여줌
  • Show 호출 후에는 다시 Load를 호출 할 수 있음
  • Show method는 중복하여 호출 할 수 없음
  • Show가 실행되면 (return값이 True일 경우) onRewardedVideoAdOpenedonRewardedVideoAdFailedToShow 중 하나가 항상 호출되고, onRewardedVideoAdOpened가 호출되었다면 이후 onRewardedVideoAdClosed가 항상 호출
  • Rewarded Video Ad의 LoadShow는 pair로 호출
    • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비

D. Show With Load

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let UNIT_ID = "";      // 관리자를 통해 발급
	AdiscopeInterface.sharedInstance().show(withLoad: UNIT_ID, delegate: self)
} else {
    // Initialize 재시도
}
  • A(Load), C(Show)를 한번에 호출 하여 광고를 보여줌
  • setMainDelegate(_:)추가 호출 없이 한번에 추가 되도록 처리
  • A(Load), C(Show)와 동일하게 호출 되며, onRewardedVideoAdFailedToLoad 대신 onRewardedVideoAdFailedToShow로 호출됨
  • 기본적으로 Load동안 기본 Indicator가 동작, 오류시 기본 알림 팝업 발생
기본 설정 변경

가. Indicator가 동작되는 Background Color 설정

let red = "0"		// 0 ~255 String 값
let green = "0"		// 0 ~255 String 값
let blue = "0"		// 0 ~255 String 값
let alpha = "0.3"	// 0 ~ 1 String 값
AdiscopeInterface.sharedInstance().setShowWithLoad2BackgroundColor(red, green: green, blue: blue, alpha: alpha)

나. Indicator의 크기 변경 및 Hidden 설정

let isStyleMedium = false	// true : StyleMedium, false : StyleLarge
let isHidden = false		// true : 미노출, false : 노출
AdiscopeInterface.sharedInstance().setShowWithLoad2IndicatorStyleMedium(isStyleMedium, isHidden: isHidden)

다. Error Alert 메시지 설정 및 Hidden 설정

let msg = "현재 시청 가능한 광고가 없습니다.\n잠시 후 다시 시도해 주세요."
let isHidden = false		// true : 미노출, false : 노출
AdiscopeInterface.sharedInstance().setShowWithLoad2ErrorAlertMsg(alertMsgLoadingView.value, isHidden: self.loadingAlertHidden)

E. Callback Reward

func onRewarded(_ unitID: String!, item: AdiscopeRewardItem!) {
    // unitID - 해당 rewardedvideo의 UNIT_ID (Show 시 입력한 값)
    // item.amount - 보상의 양
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
  • onRewarded는 보통 onRewardedVideoAdOpenedonRewardedVideoAdClosed 사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음
  • onRewarded가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는 onRewarded가 호출되지 않음)
  • Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
  • Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는 onRewarded가 호출
    • 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고, onRewarded를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함

F. Callback Others

func onRewardedVideoAdLoaded(_ unitID: String!) {
    // RewardedVideo Load Success
}
func onRewardedVideoAdFailed(toLoad unitID: String!, error: AdiscopeError!) {
    // RewardedVideo Load Fail
}
func onRewardedVideoAdOpened(_ unitID: String!) {
    // RewardedVideo 열림
}
func onRewardedVideoAdClosed(_ unitID: String!) {
    // RewardedVideo 닫힘
}
func onRewardedVideoAdFailed(toShow unitID: String!, error: AdiscopeError!) {
    // RewardedVideo Show Fail
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • Load 성공 시 onRewardedVideoAdLoaded, 실패 시 onRewardedVideoAdFailedToLoad가 호출
  • Show 성공 시 onRewardedVideoAdOpened, onRewardedVideoAdClosed가 순차적으로 호출되고, 실패 시 onRewardedVideoAdFailedToShow가 호출
  • onRewardedVideoAdFailedToLoad, onRewardedVideoAdFailedToShowAdiscopeError 참고


6. Interstitial

A. Load

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let UNIT_ID = "";      // 관리자를 통해 발급
    AdiscopeInterface.sharedInstance().loadInterstitial(UNIT_ID)
} else {
    // Initialize 재시도
}
  • Initialize 진행 완료 후 Load 호출
  • 해당 유닛에 속한 ad 네크워크들의 광고를 Load
  • onInterstitialAdLoaded callback이 호출되면 Load가 완료
  • Interstitial의 LoadShow는 pair로 호출
  • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
  • 광고가 Show되는 동안 다음 광고를 Load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
  • Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
  • (Optional) Load의 시간이 필요해 ProgressBar 노출 추천

B. IsLoaded

let UNIT_ID = "";      // Load한 값(관리자를 통해 발급)
if (AdiscopeInterface.sharedInstance().isLoadedInterstitialUnitID(UNIT_ID)) {
    // show ad here
} else {
    // do something else
}
  • 광고가 Load 되었는지 상태를 확인

C. Show

let UNIT_ID = "";      // Load한 값(관리자를 통해 발급)
if (AdiscopeInterface.sharedInstance().isLoadedInterstitialUnitID(UNIT_ID)) {
    AdiscopeInterface.sharedInstance().showInterstitial()
} else {
    // do something else
}
  • 마지막으로 Load된 광고를 사용자에게 보여줌
  • Show 호출 후에는 다시 Load를 호출 할 수 있음
  • Show method는 중복하여 호출 할 수 없음
  • Show가 실행되면 (return값이 True일 경우) onInterstitialAdOpenedonInterstitialAdFailedToShow 중 하나가 항상 호출되고, onInterstitialAdOpened가 호출되었다면 이후 onInterstitialAdClosed가 항상 호출
  • Rewarded Video Ad의 LoadShow는 pair로 호출
    • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비

D. Show With Load

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let UNIT_ID = "";      // 관리자를 통해 발급
	AdiscopeInterface.sharedInstance().show(withLoadInterstitial: UNIT_ID, delegate: self)
} else {
    // Initialize 재시도
}
  • A(Load), C(Show)를 한번에 호출 하여 광고를 보여줌
  • setMainDelegate(_:)추가 호출 없이 한번에 추가 되도록 처리
  • A(Load), C(Show)와 동일하게 호출 되며, onInterstitialAdFailedToLoad 대신 onInterstitialAdFailedToShow로 호출됨
  • 기본적으로 Load동안 기본 Indicator가 동작, 오류시 기본 알림 팝업 발생
기본 설정 변경

가. Indicator가 동작되는 Background Color 설정

let red = "0"		// 0 ~255 String 값
let green = "0"		// 0 ~255 String 값
let blue = "0"		// 0 ~255 String 값
let alpha = "0.3"	// 0 ~ 1 String 값
AdiscopeInterface.sharedInstance().setShowWithLoad2BackgroundColor(red, green: green, blue: blue, alpha: alpha)

나. Indicator의 크기 변경 및 Hidden 설정

let isStyleMedium = false	// true : StyleMedium, false : StyleLarge
let isHidden = false		// true : 미노출, false : 노출
AdiscopeInterface.sharedInstance().setShowWithLoad2IndicatorStyleMedium(isStyleMedium, isHidden: isHidden)

다. Error Alert 메시지 설정 및 Hidden 설정

let msg = "현재 시청 가능한 광고가 없습니다.\n잠시 후 다시 시도해 주세요."
let isHidden = false		// true : 미노출, false : 노출
AdiscopeInterface.sharedInstance().setShowWithLoad2ErrorAlertMsg(alertMsgLoadingView.value, isHidden: self.loadingAlertHidden)

E. Callback

func onInterstitialAdLoaded(_ unitID: String!) {
    // Interstitial Load Success
}
func onInterstitialAdFailed(toLoad unitID: String!, error: AdiscopeError!) {
    // Interstitial Load Fail
}
func onInterstitialAdOpened(_ unitID: String!) {
    // Interstitial 열림
}
func onInterstitialAdClosed(_ unitID: String!) {
    // Interstitial 닫힘
}
func onInterstitialAdFailed(toShow unitID: String!, error: AdiscopeError!) {
    // Interstitial Show Fail
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • Load 성공 시 onInterstitialAdLoaded, 실패 시 onInterstitialAdFailedToLoad가 호출
  • Show 성공 시 onInterstitialAdOpened, onInterstitialAdClosed가 순차적으로 호출되고, 실패 시 onInterstitialAdFailedToShow가 호출
  • onInterstitialAdFailedToLoad, onInterstitialAdFailedToShowAdiscopeError 참고


7. RewardedInterstitial

A. PreLoadAll

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    AdiscopeInterface.sharedInstance().preLoadAllRewardedInterstitial()
} else {
    // Initialize 재시도
}
  • Initialize와 사용자 정보 설정의 진행 완료 후 1회 설정 권장
  • 관리자가 설정된 활성화된 모든 유닛들을 Load 진행

B. Unit 지정 PreLoad

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let UNIT_ID1 = "";      // 관리자를 통해 발급
    let UNIT_ID2 = "";      // 관리자를 통해 발급
    AdiscopeInterface.sharedInstance().preLoadRewardedInterstitial([UNIT_ID1, UNIT_ID2, ... ])
} else {
    // Initialize 재시도
}
  • Initialize와 사용자 정보 설정의 진행 완료 후 1회 설정 권장
  • 입력된 유닛들을 Load 진행

C. Show

let UNIT_ID = "";      // 관리자를 통해 발급
AdiscopeInterface.sharedInstance().showRewardedInterstitial(UNIT_ID)
  • 해당 유닛이 Load되어 있으면 안내 팝업을 보여 준 뒤 해당 광고를 사용자에게 보여줌
  • ShowRewardedInterstitial method는 중복하여 호출 할 수 없음
  • Show가 실행되면 (return값이 True일 경우) onRewardedInterstitialAdSkiponRewardedInterstitialAdOpenedonRewardedInterstitialAdFailedToShow 중 하나가 항상 호출되고, onRewardedInterstitialAdOpened가 호출되었다면 이후 onRewardedInterstitialAdClosed가 항상 호출
  • onRewardedInterstitialAdClosedonRewardedInterstitialAdFailedToShow가 호출 되면 내부에서 해당 유닛을 자동 Load 시킴

D. Unit Status Info

let UNIT_ID = "";      // 관리자를 통해 발급
AdiscopeInterface.sharedInstance().getRewardedInterstitialUnitStatus(UNIT_ID);
  • onRewardedInterstitialResponsedUnitStatus에서 해당 유닛의 수익화 여부, 활성화 여부를 알 수 있음

E. Callback Reward

func onRewardedInterstitialRewarded(_ unitID: String!, item: AdiscopeRewardItem!) {
    // unitID - 해당 RewardedInterstitial의 UNIT_ID (Show 시 입력한 값)
    // item.amount - 보상의 양
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • 보상이 주어져야 할 경우 OnRewarded가 호출되며 그 parameter로 관련 정보가 전달
  • 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
  • OnRewarded는 보통 OnOpenedOnClosed 사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음
  • OnRewarded가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는 OnRewarded가 호출되지 않음)
  • Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
  • Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는 OnRewarded가 호출
    • 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고, OnRewarded를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함

F. Callback Others

func onRewardedInterstitialResponsedUnitStatus(_ status: AdiscopeUnitStatus!) {
    // status.active - 활성화 여부
    // status.live - 수익화 여부
}
func onRewardedInterstitialAdSkip(_ unitID: String!) {
    // RewardedInterstitial Skip for 안내 팝업
}
func onRewardedInterstitialAdOpened(_ unitID: String!) {
    // RewardedInterstitial 열림
}
func onRewardedInterstitialAdClosed(_ unitID: String!) {
    // RewardedInterstitial 닫힘
}
func onRewardedInterstitialAdFailed(toShow unitID: String!, error: AdiscopeError!) {
    // RewardedInterstitial Show Fail
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • Show 성공 후 Skip 시 onRewardedInterstitialAdSkip가 호출
  • Show 성공 후 영상 시청 시 onRewardedInterstitialAdOpened, onRewardedInterstitialAdClosed가 순차적으로 호출되고, 실패 시 onRewardedInterstitialAdFailedToShow가 호출
  • onRewardedInterstitialAdFailedToShowAdiscopeError 참고


8. Offerwall

A. Show

if (AdiscopeInterface.sharedInstance().isInitialized()) {
    let OFFERWALL_UNIT_ID = "";      // 관리자를 통해 발급
    AdiscopeInterface.sharedInstance().showOfferwall(OFFERWALL_UNIT_ID)
} else {
    // Initialize 재시도
}
  • Show가 실행되면 (return값이 True일 경우) onOfferwallAdOpenedonOfferwallAdFailedToShow 중 하나가 항상 호출되고, onOfferwallAdOpened가 호출되었다면 이후 onOfferwallAdClosed가 항상 호출

B. Callbacks

func onOfferwallAdOpened(_ unitID: String!) {
    // Offerwall이 열림
}
func onOfferwallAdClosed(_ unitID: String!) {
    // Offerwall이 닫힘
}
func onOfferwallAdFailed(toShow unitID: String!, error: AdiscopeError!) {
    // Offerwall이 Fail
}
  • setMainDelegate(_:)를 진행했다면 다음과 같은 응답을 수신 받을 수 있음
  • Show 성공 시 onOfferwallAdOpened, onOfferwallAdClosed callback이 순차적으로 호출
  • onOfferwallAdFailedAdiscopeError 참고

C. Offerwall 특정 아이템 상세 페이지 이동

let OFFERWALL_UNIT_ID = "";      // 관리자를 통해 발급
let OFFERWALL_ITEM_ID = "";      // 관리자를 통해 확인
let OFFERWALL_URL = "";          // 관리자를 통해 확인
AdiscopeInterface.sharedInstance().showOfferwallDetail(OFFERWALL_UNIT_ID, OFFERWALL_ITEM_ID)
AdiscopeInterface.sharedInstance().showOfferwallDetail(OFFERWALL_URL)

Adiscope Error Information





Adiscope Old Release Note

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors