ইম্প্রেশন হলে, Google Mobile Ads SDK সংশ্লিষ্ট উপার্জন ডেটা সহ পেড ইভেন্ট হ্যান্ডলারকে কল করে। এই হ্যান্ডলার প্রয়োগ করে, আপনি ব্যবহারকারীর লাইফটাইম ভ্যালু গণনা করতে ডেটা ব্যবহার করতে পারেন অথবা ডেটা ডাউনস্ট্রিম করে অন্যান্য প্রাসঙ্গিক সিস্টেমে পাঠাতে পারেন।
এই নির্দেশিকা আপনাকে iOS অ্যাপে LTV ডেটা ক্যাপচার করার ব্যাপারে সাহায্য করার জন্য তৈরি করা হয়েছে।
পূর্বশর্ত
- AdMob UI-তে ইম্প্রেশন-লেভেল বিজ্ঞাপন থেকে উপার্জন ফিচার চালু করেছেন কিনা তা ভালভাবে দেখে নিন।
- Google Mobile Ads SDK 9.10.0 বা তার পরের যেকোনও ভার্সন ইমপোর্ট করুন।
- Google Mobile Ads SDK সেট-আপ করুন।
ইম্প্রেশন-লেভেল বিজ্ঞাপন থেকে উপার্জন পাওয়ার আগে, আপনাকে অন্তত একটি বিজ্ঞাপন ফর্ম্যাট প্রয়োগ করতে হবে:
পেড ইভেন্ট হ্যান্ডলার প্রয়োগ করা
প্রতিটি বিজ্ঞাপন ফর্ম্যাটের paidEventHandler টাইপের প্রপার্টি
GADPaidEventHandler থাকে।
বিজ্ঞাপন ইভেন্টের লাইফসাইকেলে, Google Mobile Ads SDK মনিটর
ইম্প্রেশন ইভেন্ট এবং অর্জিত ভ্যালু সহ হ্যান্ডলারকে ইনভোক করে।
নিম্নলিখিত উদাহরণটি পুরস্কার প্রদানকারী বিজ্ঞাপনের জন্য পেড ইভেন্ট ম্যানেজ করে:
Swift
rewardedAd?.paidEventHandler = { adValue in
// TODO: Send the impression-level ad revenue information to your preferred
// analytics server directly within this callback.
// Extract the impression-level ad revenue data.
let value = adValue.value
let currencyCode = adValue.currencyCode
let precision = adValue.precision
print(
"Ad paid event. Value: \(value) \(currencyCode), with precision: \(precision)."
)
}
Objective-C
rewardedAd.paidEventHandler = ^(GADAdValue *_Nonnull adValue) {
// TODO: Send the impression-level ad revenue information to your preferred
// analytics server directly within this callback.
// Extract the impression-level ad revenue data.
NSDecimalNumber *value = adValue.value;
NSString *currencyCode = adValue.currencyCode;
GADAdValuePrecision precision = adValue.precision;
NSLog(@"Ad paid event. Value: %@ %@, with precision: %ld.", value, currencyCode,
(long)precision);
};
কাস্টম ইভেন্ট বিজ্ঞাপন সোর্সের নাম শনাক্ত করুন
কাস্টম ইভেন্ট বিজ্ঞাপন সোর্সের জন্য, adSourceName
প্রপার্টি আপনাকে বিজ্ঞাপন সোর্সের নাম Custom event দেয়। আপনি একাধিক কাস্টম ইভেন্ট ব্যবহার করলে, একাধিক কাস্টম ইভেন্টের মধ্যে পার্থক্য করার জন্য বিজ্ঞাপন সোর্সের নাম যথেষ্ট
গ্র্যানুলার নয়। কোনও নির্দিষ্ট কাস্টম ইভেন্ট খুঁজে পেতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
adNetworkClassNameপ্রপার্টি পান।- বিজ্ঞাপন সোর্সের একটি অনন্য নাম সেট করুন।
নিম্নলিখিত উদাহরণে কাস্টম ইভেন্টের জন্য অনন্য বিজ্ঞাপন সোর্সের নাম সেট করা হয়েছে:
Swift
func uniqueAdSourceName(for loadedAdNetworkResponseInfo: AdNetworkResponseInfo) -> String {
var adSourceName: String = loadedAdNetworkResponseInfo.adSourceName ?? ""
if adSourceName == "Custom Event" {
if loadedAdNetworkResponseInfo.adNetworkClassName
== "MediationExample.SampleCustomEventSwift"
{
adSourceName = "Sample Ad Network (Custom Event)"
}
}
return adSourceName
}Objective-C
- (NSString *)uniqueAdSourceNameForAdNetworkResponseInfo:
(GADAdNetworkResponseInfo *)loadedAdNetworkResponseInfo {
NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
if ([adSourceName isEqualToString:@"Custom Event"]) {
if ([loadedAdNetworkResponseInfo.adNetworkClassName isEqualToString:@"SampleCustomEvent"]) {
adSourceName = @"Sample Ad Network (Custom Event)";
}
}
return adSourceName;
}জয়ী বিজ্ঞাপন সোর্স সম্পর্কে আরও তথ্যের জন্য, বিজ্ঞাপন রেসপন্স সম্পর্কে তথ্য ফিরিয়ে আনুন দেখুন।
অ্যাপ অ্যাট্রিবিউশন পার্টনার (AAP)-এর সাথে ইন্টিগ্রেট করা
অ্যানালিটিক্স প্ল্যাটফর্মে বিজ্ঞাপন থেকে হওয়া উপার্জন সংক্রান্ত ডেটা ফরওয়ার্ড করা সম্পর্কে সম্পূর্ণ বিবরণ পেতে, পার্টনারের নির্দেশিকা দেখুন:
| পার্টনার SDK |
|---|
| অ্যাডজাস্ট করুন |
| AppsFlyer |
| একবচন |
| Tenjin |
Google Mobile Ads SDK ব্যবহার করে AAP পার্টনারদের কীভাবে ইম্প্রেশন-লেভেল উপার্জন সংক্রান্ত ডেটা পাঠাতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখানো হয়েছে:
অ্যাডজাস্ট করুন
Swift
func setPaidEventHandler(rewardAd: RewardedAd) {
rewardAd.paidEventHandler = { adValue in
guard let adRevenue = ADJAdRevenue(source: "admob_sdk") else { return }
adRevenue.setRevenue(adValue.value.doubleValue, currency: adValue.currencyCode)
if let adSourceName = rewardAd.responseInfo.loadedAdNetworkResponseInfo?.adSourceName {
adRevenue.setAdRevenueNetwork(adSourceName)
}
Adjust.trackAdRevenue(adRevenue)
}
}Objective-C
- (void)setPaidEventHandler:(GADRewardedAd *)rewardAd {
NSString *adSourceName = rewardAd.responseInfo.loadedAdNetworkResponseInfo.adSourceName;
rewardAd.paidEventHandler = ^(GADAdValue *_Nonnull adValue) {
ADJAdRevenue *adRevenue = [[ADJAdRevenue alloc] initWithSource:@"admob_sdk"];
if (!adRevenue) {
return;
}
[adRevenue setRevenue:adValue.value.doubleValue currency:adValue.currencyCode];
if (adSourceName) {
[adRevenue setAdRevenueNetwork:adSourceName];
}
[Adjust trackAdRevenue:adRevenue];
};
}AppsFlyer
Swift
func setPaidEventHandler(rewardedAd: RewardedAd) {
rewardedAd.paidEventHandler = { adValue in
let adRevenueData = AFAdRevenueData(
monetizationNetwork: "AdMob Mediation", mediationNetwork: MediationNetworkType.googleAdMob,
currencyIso4217Code: adValue.currencyCode, eventRevenue: adValue.value)
var additionalParameters = [:]
additionalParameters[kAppsFlyerAdRevenueCountry] = "US"
additionalParameters[kAppsFlyerAdRevenueAdUnit] = rewardedAd.adUnitID
additionalParameters[kAppsFlyerAdRevenueAdType] = "Rewarded"
AppsFlyerLib.shared().logAdRevenue(adRevenueData, additionalParameters: additionalParameters)
}
}Objective-C
- (void)setPaidEventHandler:(GADRewardedAd *)rewardedAd {
NSString *adUnitID = rewardedAd.adUnitID;
rewardedAd.paidEventHandler = ^(GADAdValue *_Nonnull adValue) {
AFAdRevenueData *adRevenueData = [[AFAdRevenueData alloc]
initWithMonetizationNetwork:@"AdMob Mediation"
mediationNetwork:AppsFlyerAdRevenueMediationNetworkTypeGoogleAdMob
currencyIso4217Code:adValue.currencyCode
eventRevenue:adValue.value];
NSMutableDictionary *additionalParameters = [[NSMutableDictionary alloc] init];
additionalParameters[kAppsFlyerAdRevenueCountry] = @"US";
additionalParameters[kAppsFlyerAdRevenueAdUnit] = adUnitID;
additionalParameters[kAppsFlyerAdRevenueAdType] = @"Rewarded";
[[AppsFlyerLib shared] logAdRevenue:adRevenueData additionalParameters:additionalParameters];
};
}একবচন
Swift
func setPaidEventHandler(rewardedAd: RewardedAd) {
rewardedAd.paidEventHandler = { adValue in
// Extract revenue and currency from AdValue.
let revenue = adValue.value.doubleValue
let currency = adValue.currencyCode
// Validate revenue and currency before sending.
guard revenue > 0, !currency.isEmpty else {
print(
"Invalid ad revenue data: revenue = \(revenue), currency = \(String(describing: currency))"
)
return
}
// Create ad revenue data object.
let data = SingularAdData(
adPlatform: "AdMob",
withCurrency: currency,
withRevenue: NSNumber(value: revenue)
)
// Send to Singular.
Singular.adRevenue(data)
print("Ad revenue sent: \(revenue) \(currency)")
}
}Objective-C
- (void)setPaidEventHandler:(GADRewardedAd *)rewardedAd {
rewardedAd.paidEventHandler = ^(GADAdValue *_Nonnull adValue) {
// Extract revenue and currency from AdValue.
double revenue = adValue.value.doubleValue;
NSString *currency = adValue.currencyCode;
// Validate revenue and currency before sending.
if (revenue <= 0 || currency.length == 0) {
NSLog(@"Invalid ad revenue data: revenue = %f, currency = %@", revenue, currency);
return;
}
// Create ad revenue data object.
SingularAdData *data =
[[SingularAdData alloc] initWithAdPlatform:@"AdMob"
withCurrency:currency
withRevenue:[NSNumber numberWithDouble:revenue]];
// Send to Singular.
[Singular adRevenue:data];
NSLog(@"Ad revenue sent: %f %@", revenue, currency);
};
}Tenjin
Swift
func setPaidEventHandler(rewardedAd: RewardedAd) {
rewardedAd.paidEventHandler = { adValue in
var jsonDict = [:]
jsonDict["ad_unit_id"] = rewardedAd.adUnitID
jsonDict["value_micros"] = adValue.value
jsonDict["currency_code"] = adValue.currencyCode
let responseInfo = rewardedAd.responseInfo
if let responseIdentifier = responseInfo.responseIdentifier {
jsonDict["response_id"] = responseIdentifier
}
if let adNetworkClassName = responseInfo.loadedAdNetworkResponseInfo?.adNetworkClassName {
jsonDict["mediation_adapter_class_name"] = adNetworkClassName
}
do {
let jsonData = try JSONSerialization.data(withJSONObject: jsonDict, options: [])
let jsonString = String(data: jsonData, encoding: .utf8)
TenjinSDK.adMobImpression(fromJSON: jsonString)
} catch {
print("Failed to log AdMob impression: \(error)")
}
}
}Objective-C
- (void)setPaidEventHandler:(GADRewardedAd *)rewardedAd {
NSString *adUnitID = rewardedAd.adUnitID;
GADResponseInfo *responseInfo = rewardedAd.responseInfo;
rewardedAd.paidEventHandler = ^(GADAdValue *_Nonnull adValue) {
NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init];
jsonDict[@"ad_unit_id"] = adUnitID;
jsonDict[@"value_micros"] = adValue.value;
jsonDict[@"currency_code"] = adValue.currencyCode;
NSString *responseIdentifier = responseInfo.responseIdentifier;
if (responseIdentifier) {
jsonDict[@"response_id"] = responseIdentifier;
}
NSString *adNetworkClassName = responseInfo.loadedAdNetworkResponseInfo.adNetworkClassName;
if (adNetworkClassName) {
jsonDict[@"mediation_adapter_class_name"] = adNetworkClassName;
}
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:0 error:&error];
if (jsonData) {
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[TenjinSDK adMobImpressionFromJSON:jsonString];
} else {
NSLog(@"Failed to log AdMob impression: %@", error);
}
};
}প্রয়োগ করা সংক্রান্ত পেশাদার পদ্ধতি
- বিজ্ঞাপন অবজেক্ট তৈরি বা অ্যাক্সেস করার সাথে সাথেই হ্যান্ডলার সেট করুন, এবং অবশ্যই বিজ্ঞাপন দেখানোর আগে। এটি নিশ্চিত করে যে আপনি কোনও পেড ইভেন্ট কলব্যাক মিস করবেন না।
paidEventHandlerমেথড কল করার সাথে সাথেই আপনার পছন্দের অ্যানালিটিক্স সার্ভারে পেড ইভেন্ট সংক্রান্ত তথ্য পাঠান। এটি নিশ্চিত করে যে আপনি ভুলবশত কোনও কলব্যাক ড্রপ করবেন না এবং ডেটা সংক্রান্ত অসঙ্গতি এড়িয়ে যাবেন।
GADAdValue
GADAdValue হল এমন একটি ক্লাস যা কোনও বিজ্ঞাপনের জন্য উপার্জিত আর্থিক মূল্যকে উপস্থাপন করে,
যার মধ্যে মূল্যের কারেন্সি কোড এবং এর নির্ভুলতার ধরন নিম্নলিখিতভাবে এনকোড করা থাকে।
| GADAdValuePrecision | বিবরণ |
|---|---|
GADAdValuePrecisionUnknown
|
বিজ্ঞাপনের ভ্যালু যা অজানা। LTV পিংব্যাক চালু করা থাকলে কিন্তু পর্যাপ্ত ডেটা উপলভ্য না থাকলে এটি রিটার্ন করা হয়। |
GADAdValuePrecisionEstimated
|
এগ্রিগেট করা ডেটা থেকে অনুমান করা বিজ্ঞাপনের ভ্যালু। |
GADAdValuePrecisionPublisherProvided
|
প্রকাশকের দেওয়া বিজ্ঞাপনের ভ্যালু, যেমন মধ্যস্থতা গ্রুপে ম্যানুয়াল সিপিএম। |
GADAdValuePrecisionPrecise
|
এই বিজ্ঞাপনের জন্য পেমেন্ট করা সঠিক মূল্য। |
বিডিং বিজ্ঞাপন সোর্স থেকে টেস্ট ইম্প্রেশন
পরীক্ষামূলক অনুরোধের মাধ্যমে বিডিং বিজ্ঞাপন সোর্সের জন্য ইম্প্রেশন-লেভেল বিজ্ঞাপন থেকে উপার্জন সংক্রান্ত ইভেন্ট হওয়ার পরে, আপনি শুধুমাত্র নিম্নলিখিত মানগুলি পাবেন:
GADAdValuePrecisionUnknown: নির্ভুলতার ধরন নির্দেশ করে।
0: বিজ্ঞাপনের ভ্যালু নির্দেশ করে।
GADAdValuePrecisionUnknown-এর থেকে আলাদা কোনও মান হিসেবে নির্ভুলতার ধরন এবং 0-এর থেকে বেশি বিজ্ঞাপনের ভ্যালু দেখতে পেয়েছেন।
টেস্ট বিজ্ঞাপনের অনুরোধ পাঠানোর ব্যাপারে বিস্তারিত জানতে, টেস্ট ডিভাইস চালু করুন বিকল্প দেখুন।