Unity LevelPlay Mediation(구 ironSource) 광고 수익 연동
Unity LevelPlay Mediation(구 ironSource) 광고 수익 연동을 진행하면 Unity LevelPlay Mediation을 통해서 획득한 광고 수익 데이터를 수집하고, 해당 데이터를 Airbridge Dashboard 에서 Attribution, User 별로 나누어 확인할 수 있습니다.
Unity LevelPlay Mediation 광고 수익 연동은 Unity LevelPlay Mediation 광고 수익 데이터를 ironSource SDK를 통해 받아와서 Airbridge SDK에 전달하는 방식으로 이루어집니다.
ironSource SDK 설치
Unity LevelPlay Mediation 광고 수익 데이터를 에어브릿지로 전달
ironSource SDK를 이용해서 광고 수익 데이터 콜백을 설정하고, 이를 이용해서 광고 수익 데이터를 Airbridge SDK로 전달해 주세요.
IronSourceEvents.onImpressionDataReadyEvent += ImpressionDataReadyEvent;
private void ImpressionDataReadyEvent(IronSourceImpressionData impressionData)
{
if (impressionData != null)
{
AirbridgeEvent @event = new AirbridgeEvent("airbridge.adImpression");
var ironSource = new Dictionary<string, object>();
// optional fields
ironSource["auction_id"] = impressionData.auctionId;
ironSource["ad_unit"] = impressionData.adUnit;
ironSource["ad_network"] = impressionData.adNetwork;
ironSource["instance_name"] = impressionData.instanceName;
ironSource["instance_id"] = impressionData.instanceId;
ironSource["country"] = impressionData.country;
ironSource["placement"] = impressionData.placement;
ironSource["revenue"] = impressionData.revenue;
ironSource["precision"] = impressionData.precision;
ironSource["ab"] = impressionData.ab;
ironSource["segment_name"] = impressionData.segmentName;
ironSource["lifetime_revenue"] = impressionData.lifetimeRevenue;
ironSource["encrypted_cpm"] = impressionData.encryptedCPM;
var adPartners = new Dictionary<string, object>();
adPartners["ironSource"] = ironSource;
@event.SetAction(impressionData.adNetwork);
@event.SetLabel(impressionData.placement);
@event.SetValue(impressionData.revenue ?? 0);
@event.AddSemanticAttribute("adPartners", adPartners);
// ironSource has a default currency of USD
@event.AddSemanticAttribute("currency", "USD");
AirbridgeUnity.TrackEvent(@event);
}
}
import AirBridge
import IronSource
class ISImpressionDataManager: NSObject, ISImpressionDataDelegate {
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) {
if let impressionData = impressionData {
var ironSource: [String: Any] = [:]
// optional fields
ironSource["auction_id"] = impressionData.auction_id
ironSource["ad_unit"] = impressionData.ad_unit
ironSource["ad_network"] = impressionData.ad_network
ironSource["instance_name"] = impressionData.instance_name
ironSource["instance_id"] = impressionData.instance_id
ironSource["country"] = impressionData.country
ironSource["placement"] = impressionData.placement
ironSource["revenue"] = impressionData.revenue
ironSource["precision"] = impressionData.precision
ironSource["ab"] = impressionData.ab
ironSource["segment_name"] = impressionData.segment_name
ironSource["lifetime_revenue"] = impressionData.lifetime_revenue
ironSource["encrypted_cpm"] = impressionData.encrypted_cpm
var adPartners: [String: Any] = [:]
adPartners["ironSource"] = ironSource
var semanticAttributes: [String: Any] = [:]
semanticAttributes["adPartners"] = adPartners
// ironSource has a default currency of USD
semanticAttributes["currency"] = "USD"
guard let event = ABInAppEvent() else { return }
event.setCategory("airbridge.adImpression")
event.setAction(impressionData.ad_network)
event.setLabel(impressionData.placement)
event.setValue(impressionData.revenue)
event.setSemantics(semanticAttributes)
event.send()
}
}
}
#import "AirBridge.h"
#import "ISImpressionDataManager.h"
@interface ISImpressionDataManager () <ISImpressionDataDelegate>
@end
@implementation ISImpressionDataManager
- (void)impressionDataDidSucceed:(ISImpressionData *)impressionData {
if (impressionData) {
NSMutableDictionary *ironSource = [NSMutableDictionary dictionary];
// optional fields
ironSource[@"auction_id"] = impressionData.auction_id;
ironSource[@"ad_unit"] = impressionData.ad_unit;
ironSource[@"ad_network"] = impressionData.ad_network;
ironSource[@"instance_name"] = impressionData.instance_name;
ironSource[@"instance_id"] = impressionData.instance_id;
ironSource[@"country"] = impressionData.country;
ironSource[@"placement"] = impressionData.placement;
ironSource[@"revenue"] = impressionData.revenue;
ironSource[@"precision"] = impressionData.precision;
ironSource[@"ab"] = impressionData.ab;
ironSource[@"segment_name"] = impressionData.segment_name;
ironSource[@"lifetime_revenue"] = impressionData.lifetime_revenue;
ironSource[@"encrypted_cpm"] = impressionData.encrypted_cpm;
NSMutableDictionary *adPartners = [NSMutableDictionary dictionary];
adPartners[@"ironSource"] = ironSource;
NSMutableDictionary *semanticAttributes = [NSMutableDictionary dictionary];
semanticAttributes[@"adPartners"] = adPartners;
// ironSource has a default currency of USD
semanticAttributes[@"currency"] = @"USD";
ABInAppEvent *event = [[ABInAppEvent alloc] init];
[event setCategory:@"airbridge.adImpression"];
[event setAction:impressionData.ad_network];
[event setLabel:impressionData.placement];
[event setValue:impressionData.revenue];
[event setSemantics:semanticAttributes];
[event send];
}
}
@end
@Override
public void onImpressionSuccess(ImpressionData impressionData) {
if (impressionData != null) {
Event event = new Event("airbridge.adImpression");
Map<String, Object> ironSource = new HashMap<>();
// optional fields
ironSource.put("auction_id", impressionData.getAuctionId());
ironSource.put("ad_unit", impressionData.getAdUnit());
ironSource.put("ad_network", impressionData.getAdNetwork());
ironSource.put("instance_name", impressionData.getInstanceName());
ironSource.put("instance_id", impressionData.getInstanceId());
ironSource.put("country", impressionData.getCountry());
ironSource.put("placement", impressionData.getPlacement());
ironSource.put("revenue", impressionData.getRevenue());
ironSource.put("precision", impressionData.getPrecision());
ironSource.put("ab", impressionData.getAb());
ironSource.put("segment_name", impressionData.getSegmentName());
ironSource.put("lifetime_revenue", impressionData.getLifetimeRevenue());
ironSource.put("encrypted_cpm", impressionData.getEncryptedCPM());
Map<String, Object> adPartners = new HashMap<>();
adPartners.put("ironSource", ironSource);
Map<String, Object> semanticAttributes = new HashMap<>();
semanticAttributes.put("adPartners", adPartners);
// ironSource has a default currency of USD
semanticAttributes.put("currency", "USD");
event.setAction(impressionData.getAdNetwork());
event.setLabel(impressionData.getPlacement());
event.setValue(impressionData.getRevenue());
event.setSemanticAttributes(semanticAttributes);
Airbridge.trackEvent(event);
}
}
override fun onImpressionSuccess(impressionData: ImpressionData?) {
if (impressionData != null) {
val event = Event("airbridge.adImpression")
val ironSource = mutableMapOf<String, Any?>()
// optional fields
ironSource["auction_id"] = impressionData.auctionId
ironSource["ad_unit"] = impressionData.adUnit
ironSource["ad_network"] = impressionData.adNetwork
ironSource["instance_name"] = impressionData.instanceName
ironSource["instance_id"] = impressionData.instanceId
ironSource["country"] = impressionData.country
ironSource["placement"] = impressionData.placement
ironSource["revenue"] = impressionData.revenue
ironSource["precision"] = impressionData.precision
ironSource["ab"] = impressionData.ab
ironSource["segment_name"] = impressionData.segmentName
ironSource["lifetime_revenue"] = impressionData.lifetimeRevenue
ironSource["encrypted_cpm"] = impressionData.encryptedCPM
val adPartners = mapOf("ironSource" to ironSource)
event.action = impressionData.adNetwork
event.label = impressionData.placement
event.value = impressionData.revenue
event.semanticAttributes = mutableMapOf(
"adPartners" to adPartners,
"currency" to "USD" // ironSource has a default currency of USD
)
Airbridge.trackEvent(event)
}
}
Updated over 1 year ago