미디에이션 (iOS)

디스플레이 광고지면에 타 광고네트워크의 광고를 라이브 할 수 있는 기능을 의미하며, 내부/자체 광고의 운영 및 여러 국내/해외의 외부 광고를 노출시킬 수 있어 수익극대화에 효과적입니다.

1. 미디에이션 Adapter 다운로드

아래 링크로 미디에이션 Adapter 최신 버전을 다운로드 해주세요. 이전 어댑터 파일이 필요한 경우, 아래 SDK 호환성 체크 정보에서 다운로드 가능합니다.

[애드팝콘 SSP iOS Mediation Adapter 다운로드]

2. SDK 호환성 체크 정보

Adapter 버전
호환성
  • SPM 지원

    • AdPocornSSP (2.9.10)

    • AdFit (3.19.7 이상)

  • Fyber (pod 'FairBidSDK', '3.59.0' -> 'Fyber_Marketplace_SDK', '8.3.6') 변경 InterstitialVideo 제공

  • Unity 4.14.1 (Adapter 변경사항 없음)

  • Vungle 7.4.5 (Adapter 변경사항 없음)

  • Pangle 7.1.0.7 (Adapter 변경사항 없음)

  • Adfit 3.18.3 (Adapter 변경사항 없음)

  • Fyber 3.59.0 (Adapter 변경사항 없음)

  • AdMob 12.2.0 (Adapter 변경사항 없음) (Xcode 16.0+)

  • NAM 8.4.0 NAM NativeAd 일반형 제공

  • NAM 8.3.0(Adapter 변경 사항 없음)

  • UnityAds 4.12.5(Adapter 변경 사항 없음)

  • AdFitAdapter 내 reactNative 뷰 크기 처리 로직 변경

  • AppLovin 13.0.1

  • AdForus v11.10.0

  • AdFit 3.15.4

  • AdMob v11.10.0

  • AppLovin v12.6.1(초기화 코드 변경)

  • Mezzo v300(0103)

  • Cauly v3.1.22

  • Mintegral v7.7.1

  • NAM v7.10.1

  • Pangle v6.2.0.5

  • UnityAds v4.12.2

  • Vungle 7.4.1

  • pangle 인앱 비딩 지원

  • UnityAds v4.10.0 대응(어댑터 내 변경 사항 없음)

  • NAM Adapter 내 광고 영역 터치 옵션 추가

  • NAM 활용 모달 광고 지원

  • Vungle Native 지원

  • ADOP Adapter 업데이트

  • NAM 미디에이션 번호 오류 수정

  • NAM 7.5.0 대응

  • Pangle 5.8.0.8 대응(어댑터 내 변경 사항 없음)

  • AdFit 3.14.12 대응(어댑터 내 변경 사항 없음)

  • AdFit Native Manual 연동 지원

  • Swift 환경에서 네이티브 ViewBinder 생성 오류 수정

  • Vungle 7.1.0 버전 대응

  • AdFit 3.14.2 대응

  • NAM 6.8.2 대응

  • Fyber(FairBidSDK) 3.47.0 → cocoapod 설정 지원

  • UnityAds 전면 광고 지원

  • NAM 네이티브 광고 닫기 처리 시, 이벤트 콜백 추가

  • ADOP 신규 업체 추가

  • AdFitAdapter 업데이트(AdFit SDK v3.14.2 대응, ReactNative 대응 추가)

  • NAMAdapter 업데이트(ReactNative 대응 추가)

  • Mintegral SDK pod 설치로 변경

  • Admob, GAM v10.13.0 대응(어댑터내 변경 사항 없음)

  • AdFit SDK v3.14.2 대응(AdFitAdapter 업데이트)

  • AppLovin 12.0.0대응(어댑터내 변경 사항 없음)

  • Pangle v5.6.0.5 대응(어댑터내 변경 사항 없음)

  • FAN v6.14.0 대응(어댑터내 변경 사항 없음)

  • NAM v6.7.0 대응(어댑터내 변경 사항 없음)

  • UnityAds v4.9.2 대응(어댑터내 변경 사항 없음)

  • TapJoy v13.2.1 대응(어댑터내 변경 사항 없음)

  • Vungle v6.12.3 대응(어댑터내 변경 사항 없음)

  • AdColony v4.9.0 대응(어댑터내 변경 사항 없음)

  • Mintegral v7.5.1 대응(어댑터내 변경 사항 없음)

  • Cauly v3.1.22 대응(어댑터내 변경 사항 없음)

※ 사용된 업체별 버전 정보는 압축 파일 내 Podfile 및 README 참고

  • AdFit, NAM 리액트 네이티브 대응 코드 추가

  • AppLovin SDK v11.10.1 대응

  • TapJoy SDK v13.0.1 대응

  • AppLovinDynamicBid 미디에이션 어댑터 추가

  • TapJoyAdapter 인앱 비딩 기능 추가

  • NAM 이미지 배너 가변 처리를 위해 Fluid 타입에서 Fixed 타입으로 변경

  • NAM 이미지 배너 가변 대응 클릭 오류 수정

  • NAM 이미지 배너 가변 대응 코드 추가(AdPopcornSSP v2.4.4 호환)

  • AdMob 10.1.0 대응

  • AdFit 3.12.22 대응

  • Pangle 5.0.0.7 대응

  • AppLovin 11.7.1 대응

  • Vungle 6.12.2 대응

  • UnityAds 4.5.0 대응

※ 이번 버전부터, 대부분 pod를 통한 설치를 권장하고 있으며, Cauly, Fyber, Mezzo, Mintegral만 수동 설치를 권장합니다. 위 4개 업체의 경우 차기 버전에서 pod를 통한 대응을 진행 예정입니다.

  • NAM 네이티브 노출 실패 시, 이벤트 발생 오류 수정

  • AppLovin SDK v11.5.0 대응

  • Pangle SDK v4.7.0.5 대응

  • AdMob, AdManager v9.11.0 대응

  • Vungle SDK v6.12.0 대응

  • Pangle SDK v4.6.1.8 대응

  • AdMob, AdManager v9.9.0 대응

3. Podfile

아래 Podfile에 포함된 업체 중 사용하고자 하는 업체의 pod만 선언해서 사용하면 됩니다

아래에 포함되지 않은 업체를 미디에이션으로 사용하고자 할 경우에는 MediationAdapter 내에 포함되어 있는 framework를 사용하시기 바랍니다.

platform :ios, '14.0'

use_modular_headers!
target "IgaworksDevApp" do
pod 'Google-Mobile-Ads-SDK', '12.2.0'
pod 'AdFitSDK', '3.18.3'                    # 3.18.3 이후 ver 은 SPM에만 제공 중
pod 'Ads-Global', '7.1.0.7'
pod 'FBAudienceNetwork', '6.14.0'
pod 'AppLovinSDK', '13.0.1'
pod 'NAMSDK', '8.3.0'
pod 'NAMSDK/MediationNDA', '8.3.0'
pod 'UnityAds', '4.14.1'
pod 'TapjoySDK', '13.2.1'
pod "VungleAds", '7.4.5'
pod 'AdColony', '4.9.0'
pod 'MintegralAdSDK', '7.7.7'
pod 'Fyber_Marketplace_SDK', '8.3.6'
pod 'CaulySDK', :git => 'https://github.com/cauly/CaulySDK_iOS.git', :tag => '3.1.22'
end

4. 미디에이션 적용 방법

1) Adapter 추가

프로젝트에 위 링크에서 다운로드 받은 Adapter 중 사용하고자 하는 업체의 폴더를 추가 합니다.

2) .h .m 파일 설정

2-1) @@@.h

저희 'AdPopcornSSP' SDK를 pod install로 설치했을 경우 빨간박스, 수동 설치했을 경우 파란팍스 코드를 사용해 주셔야 합니다.

2-2) @@@.m

Adapter 코드를 사용하기 위해서 '@@@.m '의 Target을 해당 project 로 설정 해주세요.

3) Swift Bridge-Header 추가설정

미디에이션의 네이티브 광고를 사용하고자 할 경우에는 Bridge-Header 파일 내에 각 업체의 어댑터 header 파일을 추가해 주어야 합니다. [기본 설정] 링크 내의 bridge-header 파일에 아래의 내용을 추가로 설정해 주시기 바랍니다.

아래 내용은 예시이며, adapter header 파일이 위치하는 경로는 매체의 프로젝트 내 경로에 따라 다르게 지정해야 합니다.

#import "NAMAdapter.h"
#import "AdMobAdapter.h"
'Bridge-Header' 내부에 사용하고자 하는 Adapter 추가

4) Framework 추가

각 네트워크 별로 필요한 iOS Framework를 추가합니다.기본적으로 cocoapod를 통한 설치를 추천하고 있습니다. 단, Mezzo, Cauly의 경우에는 MediationAdapter 파일 내에 framework가 포함되어 있습니다.

5) 네트워크별 상세 설정

각 네트워크 별 상세 설정은 아래의 가이드 페이지를 참고하시어 설정 부탁 드립니다.

6) SkAdNetworkId 등록 및 SDK 초기화

각 네트워크 별 SkAdNetworkId 등록, SDK 초기화 등은 직접 앱에 작업해 주셔야 하며, 그 밖의 배너, 전면, 리워드 비디오, 네이티브의 연동은 애드팝콘 SSP SDK의 API를 통해서 연동 진행해 주시면 됩니다.

SDK 초기화를 AppDelegate.m 시점에 호출하도록 가이드한 업체의 초기화를 누락할 경우, 실제 광고 요청 시 초기화가 이루어져야 하기에, 광고 로딩에 시간이 더 소요되니 참고 하시기 바랍니다.

5. 미디에이션 SDK 초기화

일부 업체의 경우 앱 시작 시, 초기화 코드를 삽입하라고 안내 하고 있습니다. 이에 AppDelegate.m 파일 내에 각 업체 별 초기화 코드를 삽입하시기 바랍니다.

자세한 사항은 하단 표에 연결된 각 업체 별 가이드 문서를 참고해 주시기 바랍니다.

1) Admob, GAM, ADOP, AdForus

[[GADMobileAds sharedInstance] startWithCompletionHandler:nil]; 

​단, 아래 링크를 참고하여, Info.plist 파일안에AppId와 SKAdNetworkIdentifier를 설정해 주셔야 정상 동작 합니다.

2) Cauly

{
	// 상세 설정 항목들은 하단 표 참조, 설정되지 않은 항목들은 기본값으로 설정됩니다.
	CaulyAdSetting * adSetting = [CaulyAdSetting globalSetting];
	[CaulyAdSetting setLogLevel:CaulyLogLevelInfo]; //  Cauly Log 레벨
	adSetting.appId                 = @"1234567"; //  App Store 에 등록된 App ID 정보 (필수)
	adSetting.appCode               = @"CAULY";//  Cauly 로부터 발급 받은 ID 입력
	adSetting.animType              = CaulyAnimNone;//  화면 전환 효과	     
	    
	// app으로 이동할 때 webview popup창을 자동으로 닫아줍니다. 기본값은 NO입니다.
	adSetting.closeOnLanding         = YES      
}

3) Mintegral

[[MTGSDK sharedInstance] setAppID:@"appid" ApiKey:@"appkey"];

4) Vungle

#import <VungleAdsSDK/VungleAdsSDK.h>
[VungleAds initWithAppId:@"app_id" completion:^(NSError * _Nullable error) {

}];

5) Fyber

[IASDKCore.sharedInstance initWithAppID:@"fyber_code"
    completionBlock:^(BOOL success, NSError * _Nullable error) {}
    completionQueue:nil];

6) Pangle

PAGConfig *config = [PAGConfig shareConfig];
    config.appID = @"pangle_code"; // pangle test code
    [PAGSdk startWithConfig:config completionHandler:^(BOOL success, NSError * _Nonnull error) {
        if (success) {
            //load ad data
        }
    }];

7) AppLovin

AppLovin v12.6.1(AdPopcornSSPMediationAdapter_241016.zip) 사용 버전부터는 기존의 info.Plist 내 세팅한 아래 <key>-<value>가 삭제되어야 합니다.

<key>AppLovinSdkKey</key>
<string>Your AppLovin Sdk Key</string>

다만, 위에 삭제된 키 값이 아래 초기화 코드에 입력되어야 합니다.

#import <AppLovinSDK/AppLovinSDK.h>
...
ALSdkInitializationConfiguration *initConfig = [ALSdkInitializationConfiguration configurationWithSdkKey:
 @"Your AppLovin Sdk Key" builderBlock:^(ALSdkInitializationConfigurationBuilder *builder) {
        builder.mediationProvider = ALMediationProviderMAX;
}];

// Initialize the SDK with the configuration
[[ALSdk shared] initializeWithConfiguration: initConfig completionHandler:^(ALSdkConfiguration *sdkConfig) {
    // Start loading ads
}];

8) NAM (Naver Ad Manager)

NAM의 경우 pod Install 시, 아래의 pod만 추가하시면 됩니다.

pod 'NAMSDK'               # SDK 본체
pod 'NAMSDK/MediationNDA'  # 네이버 광고

NAM SDK에 ATTFramework를 통해 서비스에서 광고 추적 여부를 구현 후, GFPAdManagerDelegate를 통하여 Status를 SDK에 제공해줘야 합니다. 이에 아래 예시와 같이 초기화 API 및 Status를 제공해 주시기 바랍니다.

@import GFPSDK;
@interface AppDelegate() <APSSPSDKInitializeDelegate, GFPAdManagerDelegate>
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    GFPAdConfiguration *configuration = [[GFPAdConfiguration alloc] init];
    [GFPAdManager setupWithPublisherCd:@"NAM_Publisher_cd" target:self configuration:configuration completionHandler:^(GFPError * _Nullable error) {
        NSLog(@"NAM Setup ERROR: %@", error);
    }];

}

- (GFPATTAuthorizationStatus)attStatus {
     if (@available(iOS 14.5, *)) {
        return ATTrackingManager.trackingAuthorizationStatus;
    } else {
        if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
            return GFPATTAuthorizationStatusAuthorized;
        }
        
        return GFPATTAuthorizationStatusNotDetermined;
    }
}

6. SkAdNetwork 지원

일부 미디에이션 업체의 경우 SKAdNetwork 지원을 위해 info.plist 파일 내에 SKAdNetworkIdentifier 를 추가해 주어야 합니다. 이 부분은 각 업체의 가이드 문서에서 확인 후 추가해 주시기 바랍니다.

7. 미디에이션 업체 리스트

업체 명
호환 버전
지원 포멧
가이드
비고

Admob

11.10.0

  • 배너

  • 전면

  • 네이티브

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Google Ad Manger

11.10.0

  • 배너

  • 전면

  • 네이티브

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Facebook Audience Network

6.14.0

  • 배너

  • 전면

  • 네이티브

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Cauly

3.1.22

  • 배너

  • 전면

Pod를 통한 framework 추가 권장

UnityAds

4.12.2

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Mintegral

7.7.1

  • 배너

  • 네이티브

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Adfit

3.15.4

  • 배너

  • 네이티브(Beta)

Pod를 통한 framework 추가 권장

Vungle

7.4.1

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Fyber(FairBidSDK)

8.3.6

  • 전면 비디

  • 리워드 비디오

Pod를 통한 framework 추가 권장

Pangle

6.2.0.5

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

AppLovin

13.0.1

  • 배너

  • 전면

  • 전면 비디오

  • 리워드 비디오

Pod를 통한 framework 추가 권장

NAM(Naver Ad Manager)

7.10.1

  • 배너

  • 네이티브

Pod를 통한 framework 추가 권장

Last updated

Was this helpful?