AdMobの広告収益を連携すれば、AdMobで獲得した広告収益データを収集し、そのデータをAirbridgeダッシュボードでアトリビューション、ユーザー別に確認できます。
AdMobの広告収益連携はAdMobの広告収益データをAdMob SDKから取得し、Airbridge SDKに渡す形で行われます。しかし、AdMobの広告収益データはAdMobダッシュボードでインプレッション単位の広告収益機能
を設定しなければ収集できないため、連携のためにはAdMob SDKのインストール
及びAdMobのインプレッション単位の広告収益機能の設定
が必要になります。
AdMob iOS SDKインストールガイド (V7.54.0以上のバージョンが必要です。)
AdMob Android SDKインストールガイド (V19.0.0以上のバージョンが必要です。)
AdMob Unity SDKインストールガイド (V5.0.0以上のバージョンが必要です。)
AdMobのドキュメントを確認してください。
AdMob SDKを使って広告収益データのコールバックを設定し、広告収益データをAirbridge SDKに渡してください。
private void RequestRewardedAd()
{
RewardedAd.LoadAd(adUnitId, new AdRequest.Builder().Build(), (rewardedAd, error) => {
if (error != null) { return; }
this.rewardedAd = rewardedAd;
this.rewardedAd.OnPaidEvent += this.HandleAdPaidEvent;
}
}
public void HandleAdPaidEvent(object sender, AdValueEventArgs args)
{
AdValue adValue = args.AdValue;
var adUnitId = this.rewardedAd.adUnitId;
var adNetworkAdapter = this.rewardedAd.MediationAdapterClassName();
AirbridgeEvent @event = new AirbridgeEvent("airbridge.adImpression");
var admob = new Dictionary<string, object>();
admob["value_micros"] = adValue.Value;
admob["currency_code"] = adValue.CurrencyCode;
admob["precision"] = adValue.Precision;
admob["ad_unit_id"] = adUnitId;
admob["ad_network_adapter"] = adNetworkAdapter;
var adPartners = new Dictionary<string, object>();
adPartners["admob"] = admob;
@event.SetAction(adUnitId);
@event.SetLabel(adNetworkAdapter);
@event.SetValue(adValue.Value / 1000000.0);
@event.AddSemanticAttribute("adPartners", adPartners);
@event.AddSemanticAttribute("currency", adValue.CurrencyCode);
AirbridgeUnity.TrackEvent(@event);
}
import GoogleMobileAds
import AirBridge
import UIKit
class ViewController: UIViewController {
var rewardedAd: GADRewardedAd? = nil
func requestRewardedAd() {
let request = GADRequest()
GADRewardedAd.load(
withAdUnitID: "ad unit ID",
request: request
) { ad, error in
if let error {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
return
}
self.rewardedAd = ad
self.rewardedAd?.paidEventHandler = { value in
let (value, currencyCode, precision) = (
value.value,
value.currencyCode,
value.precision
)
let adUnitID = self.rewardedAd?.adUnitID
let adNetworkAdapter = self.rewardedAd?.responseInfo.adNetworkClassName
let event = ABInAppEvent()
event?.setCategory("airbridge.adImpression")
event?.setAction(adUnitID)
event?.setLabel(adNetworkAdapter)
event?.setValue(value)
event?.setSemantics([
"adPartners": [
"admob": [
"value_micros": value * 1000000.0,
"currency_code": currencyCode,
"precision": precision,
"ad_unit_id": adUnitID ?? NSNull(),
"ad_network_adapter": adNetworkAdapter ?? NSNull(),
]
],
"currency": currencyCode
])
event?.send()
}
}
}
}
@import GoogleMobileAds;
@import AirBridge;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)requestRewardedAd {
__weak ViewController* weakSelf = self;
GADRequest* request = [GADRequest request];
[GADRewardedAd loadWithAdUnitID:@"ad unit ID"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error)
{
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull adValue){
ViewController* strongSelf = weakSelf;
// Extract the impression-level ad revenue data.
NSDecimalNumber* value; = adValue.value;
NSString* currencyCode = adValue.currencyCode;
GADAdValuePrecision precision = adValue.precision;
// Get the ad unit ID.
NSString* adUnitId = strongSelf.rewardedAd.adUnitID;
NSString* adNetworkAdapter = strongSelf.rewardedAd.responseInfo.adNetworkClassName;
ABInAppEvent* event = [[ABInAppEvent alloc] init];
[event setCategory:@"airbridge.adImpression"];
[event setAction:adUnitId];
[event setLabel:adNetworkAdapter];
[event setValue:value];
[event setSemantics:@{
@"adPartners": @{
@"admob": @{
@"value_micros": [value decimalNumberByMultiplyingByPowerOf10:6],
@"currency_code": currencyCode,
@"precision": precision,
@"ad_unit_id": adUnitId,
@"ad_network_adapter": adNetworkAdapter
}
},
@"currency": currencyCode
}];
[event send];
};
}];
}
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdValue;
import com.google.android.gms.ads.OnPaidEventListener;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;
void requestRewardedAd(Context context) {
AdRequest adRequest = new AdRequest.Builder().build();
RewardedAd.load(context, "ad unit ID", adRequest, new RewardedAdLoadCallback(){
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
// Set paid event listener
ad.setOnPaidEventListener(new OnPaidEventListener() {
@Override
public void onPaidEvent(AdValue adValue) {
// Extract the impression-level ad revenue data.
long valueMicros = adValue.getValueMicros();
String currencyCode = adValue.getCurrencyCode();
int precision = adValue.getPrecisionType();
// Get the ad unit ID.
String adUnitId = ad.getAdUnitId();
String adNetworkAdapter = ad.getResponseInfo().getMediationAdapterClassName();
Event event = new Event("airbridge.adImpression");
Map<String, Object> admob = new HashMap<>();
admob.put("value_micros", valueMicros);
admob.put("currency_code", currencyCode);
admob.put("precision", precision);
admob.put("ad_unit_id", adUnitId);
admob.put("ad_network_adapter", adNetworkAdapter);
Map<String, Object> adPartners = new HashMap<>();
adPartners.put("admob", admob);
Map<String, Object> semanticAttributes = new HashMap<>();
semanticAttributes.put("adPartners", adPartners);
semanticAttributes.put("currency", currencyCode);
event.setAction(adUnitId);
event.setLabel(adNetworkAdapter);
event.setValue(valueMicros / 1000000.0);
event.setSemanticAttributes(semanticAttributes);
Airbridge.trackEvent(event);
}
});
}
});
}
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.OnPaidEventListener
import com.google.android.gms.ads.rewarded.RewardedAd
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback
fun requestRewardedAd(context: Context) {
val adRequest = AdRequest.Builder().build()
RewardedAd.load(context, "ad unit ID", adRequest, object : RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
ad.onPaidEventListener = OnPaidEventListener { adValue ->
// Extract the impression-level ad revenue data.
val valueMicros = adValue.valueMicros
val currencyCode = adValue.currencyCode
val precision = adValue.precisionType
// Get the ad unit ID.
val adUnitId = ad.adUnitId
val adNetworkAdapter = ad.responseInfo.mediationAdapterClassName
val event = Event("airbridge.adImpression")
val admob = mutableMapOf<String, Any?>()
admob["value_micros"] = valueMicros
admob["currency_code"] = currencyCode
admob["precision"] = precision
admob["ad_unit_id"] = adUnitId
admob["ad_network_adapter"] = adNetworkAdapter
val adPartners = mapOf("admob" to admob)
event.action = adUnitId
event.label = adNetworkAdapter
event.value = valueMicros / 1000000.0
event.semanticAttributes = mutableMapOf(
"adPartners" to adPartners,
"currency" to currencyCode
)
Airbridge.trackEvent(event)
}
}
})
}
このページは役に立ちましたか?
@import GoogleMobileAds;
@import AirBridge;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)requestRewardedAd {
__weak ViewController* weakSelf = self;
GADRequest* request = [GADRequest request];
[GADRewardedAd loadWithAdUnitID:@"ad unit ID"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error)
{
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull adValue){
ViewController* strongSelf = weakSelf;
// Extract the impression-level ad revenue data.
NSDecimalNumber* value; = adValue.value;
NSString* currencyCode = adValue.currencyCode;
GADAdValuePrecision precision = adValue.precision;
// Get the ad unit ID.
NSString* adUnitId = strongSelf.rewardedAd.adUnitID;
NSString* adNetworkAdapter = strongSelf.rewardedAd.responseInfo.adNetworkClassName;
ABInAppEvent* event = [[ABInAppEvent alloc] init];
[event setCategory:@"airbridge.adImpression"];
[event setAction:adUnitId];
[event setLabel:adNetworkAdapter];
[event setValue:value];
[event setSemantics:@{
@"adPartners": @{
@"admob": @{
@"value_micros": [value decimalNumberByMultiplyingByPowerOf10:6],
@"currency_code": currencyCode,
@"precision": precision,
@"ad_unit_id": adUnitId,
@"ad_network_adapter": adNetworkAdapter
}
},
@"currency": currencyCode
}];
[event send];
};
}];
}
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.OnPaidEventListener
import com.google.android.gms.ads.rewarded.RewardedAd
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback
fun requestRewardedAd(context: Context) {
val adRequest = AdRequest.Builder().build()
RewardedAd.load(context, "ad unit ID", adRequest, object : RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
ad.onPaidEventListener = OnPaidEventListener { adValue ->
// Extract the impression-level ad revenue data.
val valueMicros = adValue.valueMicros
val currencyCode = adValue.currencyCode
val precision = adValue.precisionType
// Get the ad unit ID.
val adUnitId = ad.adUnitId
val adNetworkAdapter = ad.responseInfo.mediationAdapterClassName
val event = Event("airbridge.adImpression")
val admob = mutableMapOf<String, Any?>()
admob["value_micros"] = valueMicros
admob["currency_code"] = currencyCode
admob["precision"] = precision
admob["ad_unit_id"] = adUnitId
admob["ad_network_adapter"] = adNetworkAdapter
val adPartners = mapOf("admob" to admob)
event.action = adUnitId
event.label = adNetworkAdapter
event.value = valueMicros / 1000000.0
event.semanticAttributes = mutableMapOf(
"adPartners" to adPartners,
"currency" to currencyCode
)
Airbridge.trackEvent(event)
}
}
})
}
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdValue;
import com.google.android.gms.ads.OnPaidEventListener;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;
void requestRewardedAd(Context context) {
AdRequest adRequest = new AdRequest.Builder().build();
RewardedAd.load(context, "ad unit ID", adRequest, new RewardedAdLoadCallback(){
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
// Set paid event listener
ad.setOnPaidEventListener(new OnPaidEventListener() {
@Override
public void onPaidEvent(AdValue adValue) {
// Extract the impression-level ad revenue data.
long valueMicros = adValue.getValueMicros();
String currencyCode = adValue.getCurrencyCode();
int precision = adValue.getPrecisionType();
// Get the ad unit ID.
String adUnitId = ad.getAdUnitId();
String adNetworkAdapter = ad.getResponseInfo().getMediationAdapterClassName();
Event event = new Event("airbridge.adImpression");
Map<String, Object> admob = new HashMap<>();
admob.put("value_micros", valueMicros);
admob.put("currency_code", currencyCode);
admob.put("precision", precision);
admob.put("ad_unit_id", adUnitId);
admob.put("ad_network_adapter", adNetworkAdapter);
Map<String, Object> adPartners = new HashMap<>();
adPartners.put("admob", admob);
Map<String, Object> semanticAttributes = new HashMap<>();
semanticAttributes.put("adPartners", adPartners);
semanticAttributes.put("currency", currencyCode);
event.setAction(adUnitId);
event.setLabel(adNetworkAdapter);
event.setValue(valueMicros / 1000000.0);
event.setSemanticAttributes(semanticAttributes);
Airbridge.trackEvent(event);
}
});
}
});
}