이 API는 게시자-구독자(publisher-subscriber) 아키텍처를 사용합니다.
MAX SDK가 MAX 광고 매출 이벤트를 브로드캐스트하면 MMP가 max_revenue_events 토픽을 구독합니다.
AppLovin은 앱이 실행된 직후에 해당 토픽을 구독할 것을 권장합니다.
그렇게 해야 이벤트를 놓치지 않습니다.
각 브로드캐스트 이벤트에는 다음 매개변수가 포함됩니다.
| 이름 | 설명 | 예시 |
|---|---|---|
ad_format | 광고의 광고 형식. | BANNER, MREC, INTER, REWARDED |
country_code | 매출이 발생한 국가 코드. | US (미국의 경우) |
id | 노출에 대한 고유한 내부 ID. | 19017d954ffcded6c42772b09ec36699efe0bfc2 |
max_ad_unit_id | MAX Ad Unit ID. | 65d8d0195e50bda6 |
network_name | 광고를 게재한 network의 표시 이름. | AppLovin |
revenue | 매출 금액을 나타내는 double 값. | 0.002067201 |
third_party_ad_placement_id | 광고의 placement ID (비딩의 경우 없을 수 있음). | inter_regular |
user_segment | 광고가 노출된 사용자의 user segment. | experiment5 |
이러한 브로드캐스트 이벤트에서 매개변수 값을 설정하는 책임은 MMP에 있습니다. 하나 이상의 매개변수에 대한 데이터를 받지 못하거나 해당 데이터가 신뢰할 수 없는 경우, MMP와 협력하여 관련 매개변수를 모두 지원하는지 확인하십시오.
다음 예시는 SDK가 브로드캐스트하는 이벤트를 구독하고 처리하는 방법을 보여줍니다.
#import "ExampleViewController.h"
#import <AppLovinSDK/AppLovinSDK.h>
@interface ExampleViewController()<ALCSubscriber>
@end
@implementation ExampleViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[ALCCommunicator defaultCommunicator] subscribe: self forTopic: @"max_revenue_events"];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear: animated];
// 구독이 더 이상 필요하지 않을 때 구독 해제
[[ALCCommunicator defaultCommunicator] unsubscribe: self forTopic: @"max_revenue_events"];
}
#pragma mark - AppLovin Communicator Subscriber Protocol
- (void)didReceiveMessage:(ALCMessage *)message
{
// 여러 토픽을 구독 중인 경우, 원하는 토픽인지 확인
if ( [@"max_revenue_events" isEqualToString: message.topic] )
{
double revenue = [message.data[@"revenue"] doubleValue];
// MAX 매출 이벤트 메시지에는 MAX 광고 이벤트 메시지와 동일한 정보가 포함되지만, "type"은 포함되지 않습니다.
NSString *countryCode = message.data[@"country_code"]; // 미국의 경우 "US" 등 - 참고: 통화 코드인 "USD"와 혼동하지 마십시오.
NSString *networkName = message.data[@"network_name"]; // 광고를 게재한 network의 표시 이름
NSString *adUnitIdentifier = message.data[@"max_ad_unit_id"]; // MAX Ad Unit ID
NSString *thirdPartyAdPlacementIdentifier = message.data[@"third_party_ad_placement_id"]; // 광고의 placement ID (비딩의 경우 없을 수 있음)
NSString *adFormat = message.data[@"ad_format"]; // 광고의 광고 형식 (예: "BANNER", "MREC", "INTER", "REWARDED")
}
}
- (NSString *)communicatorIdentifier;
{
return @"«your_company_name_in_snake_case»";
}
@end
class ExampleViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
ALCCommunicator.default.subscribe(self, forTopic: "max_revenue_events")
}
override func viewWillDisappear(_ animated: Bool)
{
super.viewWillDisappear(animated)
// 구독이 더 이상 필요하지 않을 때 구독 해제
ALCCommunicator.default.unsubscribe(self, forTopic: "max_revenue_events")
}
}
// MARK: - AppLovin Communicator Subscriber Protocol
extension ALInterstitialAdTestViewController : ALCSubscriber
{
func didReceive(_ message: ALCMessage)
{
// 여러 토픽을 구독 중인 경우, 원하는 토픽인지 확인
if "max_revenue_events" == message.topic
{
let revenue = message.data["revenue"] as! Double
// MAX 매출 이벤트 메시지에는 MAX 광고 이벤트 메시지와 동일한 정보가 포함되지만, "type"은 포함되지 않습니다.
let countryCode = message.data["country_code"] as! String // 미국의 경우 "US" 등 - 참고: 통화 코드인 "USD"와 혼동하지 마십시오.
let networkName = message.data["network_name"] as! String // 광고를 게재한 network의 표시 이름
let adUnitId = message.data["max_ad_unit_id"] as! String // MAX Ad Unit ID
let thirdPartyAdPlacementId = message.data["third_party_ad_placement_id"] as! String // 광고의 placement ID (비딩의 경우 없을 수 있음)
let adFormat = message.data["ad_format"] as! String // 광고의 광고 형식 (예: "BANNER", "MREC", "INTER", "REWARDED")
}
}
func communicatorIdentifier() -> String
{
return "«your_company_name_in_snake_case»"
}
}
"revenue"가 -1인 경우, 이는 오류를 나타냅니다.