Google EU ব্যবহারকারীর সম্মতি নীতির অধীনে, আপনাকে অবশ্যই ইউকে সহ ইউরোপীয় অর্থনৈতিক অঞ্চলে (EEA) আপনার ব্যবহারকারীদের কাছে নির্দিষ্ট কিছু প্রকাশ করতে হবে এবং কুকিজ বা অন্যান্য স্থানীয় স্টোরেজ ব্যবহার করার জন্য তাদের সম্মতি নিতে হবে, যেখানে আইনত প্রয়োজন, এবং ব্যক্তিগত ডেটা ব্যবহার করতে ( যেমন AdID) বিজ্ঞাপন পরিবেশন করতে। এই নীতি EU ই-প্রাইভেসি নির্দেশিকা এবং সাধারণ ডেটা সুরক্ষা নিয়ন্ত্রণের (GDPR)-এর প্রয়োজনীয়তাগুলিকে প্রতিফলিত করে৷
এই নীতির অধীনে প্রকাশকদের দায়িত্ব পালনে সহায়তা করার জন্য, Google ব্যবহারকারী মেসেজিং প্ল্যাটফর্ম (UMP) SDK অফার করে। UMP SDK সর্বশেষ IAB মানগুলিকে সমর্থন করার জন্য আপডেট করা হয়েছে৷ এই সমস্ত কনফিগারেশনগুলি এখন AdMob গোপনীয়তা এবং বার্তাপ্রেরণে সুবিধাজনকভাবে পরিচালনা করা যেতে পারে।
পূর্বশর্ত
- শুরু করুন গাইড
- আপনি যদি জিডিপিআর-সম্পর্কিত প্রয়োজনীয়তা নিয়ে কাজ করেন, তাহলে পড়ুনকীভাবে IAB প্রয়োজনীয়তাগুলি EU সম্মতি বার্তাগুলিকে প্রভাবিত করে
একটি বার্তা টাইপ তৈরি করুন
আপনার l10nAdMob অ্যাকাউন্টের গোপনীয়তা এবং মেসেজিং ট্যাবের অধীনেউপলব্ধ ব্যবহারকারী বার্তা প্রকারএর একটি দিয়ে ব্যবহারকারীর বার্তা তৈরি করুন। UMP SDK আপনার প্রকল্পে সেট করা AdMob অ্যাপ্লিকেশন আইডি থেকে তৈরি একটি ব্যবহারকারী বার্তা প্রদর্শন করার চেষ্টা করে। আপনার অ্যাপ্লিকেশনের জন্য কোনো বার্তা কনফিগার করা না থাকলে, SDK একটি ত্রুটি ফেরত দেয়।
আরো বিস্তারিত জানার জন্য, দেখুনগোপনীয়তা এবং মেসেজিং সম্পর্কে ।
SDK আমদানি করুন
কোকোপডস (পছন্দের)
UMP SDK Google Mobile Ads SDK 7.64.0 থেকে শুরু করে Google Mobile Ads SDK পডের নির্ভরতা হিসাবে অন্তর্ভুক্ত করা হয়েছে৷
একটি iOS প্রকল্পে SDK আমদানি করার সবচেয়ে সহজ উপায় হল CocoaPods ব্যবহার করা। আপনার প্রকল্পের Podfile খুলুন এবং আপনার অ্যাপের লক্ষ্যে এই লাইন যোগ করুন:
pod 'Google-Mobile-Ads-SDK'
তারপর, নিম্নলিখিত কমান্ড চালান:
pod install --repo-update
আপনি যদি CocoaPods-এ নতুন হয়ে থাকেন, কিভাবে Podfiles তৈরি এবং ব্যবহার করতে হয় তার বিস্তারিত জানার জন্য CocoaPods ব্যবহার করা দেখুন।
ম্যানুয়াল ডাউনলোড
SDK আমদানি করার অন্য উপায় হল এটি ম্যানুয়ালি করা।
তারপরে, আপনার Xcode প্রকল্পে ফ্রেমওয়ার্কটি টেনে আনুন, প্রয়োজনে আপনি আইটেমগুলি অনুলিপি করুন নির্বাচন করুন তা নিশ্চিত করে৷
তারপরে আপনি ব্যবহার করে আপনার প্রয়োজনীয় যেকোন ফাইলে ফ্রেমওয়ার্ক অন্তর্ভুক্ত করতে পারেন:
সুইফট
import UserMessagingPlatform
উদ্দেশ্য গ
#include <UserMessagingPlatform/UserMessagingPlatform.h>
সম্মতি তথ্যের জন্য অনুরোধ
requestConsentInfoUpdateWithParameters:completionHandler:
ব্যবহার করে প্রতিটি অ্যাপ লঞ্চের সময় আপনার ব্যবহারকারীর সম্মতির তথ্য আপডেট করার অনুরোধ করা উচিত। এটি আপনার ব্যবহারকারীর সম্মতি প্রদান করতে হবে কিনা তা নির্ধারণ করে যদি তারা ইতিমধ্যে এটি না করে থাকে বা তাদের সম্মতির মেয়াদ শেষ হয়ে গেছে।
viewDidLoad()
পদ্ধতিতে একটি UIViewController
থেকে কীভাবে স্থিতি পরীক্ষা করবেন তার একটি উদাহরণ এখানে রয়েছে।
সুইফট
override func viewDidLoad() {
super.viewDidLoad()
// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. false means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = false
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// TODO: Load and present the consent form.
}
}
উদ্দেশ্য গ
- (void)viewDidLoad {
[super viewDidLoad];
// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. NO means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = NO;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
// TODO: Load and present the consent form.
}];
}
প্রয়োজনে একটি সম্মতি ফর্ম লোড করুন এবং উপস্থাপন করুন
আপনি সর্বাধিক আপ-টু-ডেট সম্মতির স্ট্যাটাস পাওয়ার পরে, একটি সম্মতি ফর্ম লোড করতে l10nUMPConsentForm
loadAndPresentIfRequiredFromViewController:completionHandler:
এ কল করুন। সম্মতির স্ট্যাটাস প্রয়োজন হলে, SDK একটি ফর্ম লোড করে এবং প্রদত্ত view controllerউপস্থাপন করে। ফর্ম খারিজ হওয়ার পরে completion handlerকল করা হয়। যদি সম্মতির প্রয়োজন না হয়, completion handlerঅবিলম্বে কল করা হয়।
সুইফট
override func viewDidLoad() {
super.viewDidLoad()
// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. false means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = false
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
UMPConsentForm.loadAndPresentIfRequired(from: self) {
[weak self] loadAndPresentError in
guard let self else { return }
if let consentError = loadAndPresentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// Consent has been gathered.
}
}
}
উদ্দেশ্য গ
- (void)viewDidLoad {
[super viewDidLoad];
// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. NO means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = NO;
__weak __typeof__(self) weakSelf = self;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
[UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
completionHandler:^(NSError *loadAndPresentError) {
if (loadAndPresentError) {
// Consent gathering failed.
NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
return;
}
// Consent has been gathered.
}];
}];
}
ব্যবহারকারীর পছন্দ বা ফর্মটি খারিজ করার পরে যদি আপনার কোনো কাজ সম্পাদন করতে হয়, তাহলে সেই যুক্তিটি আপনার ফর্মের জন্য completion handlerএ রাখুন।
বিজ্ঞাপনের জন্য অনুরোধ করুন
আপনার অ্যাপে বিজ্ঞাপনের অনুরোধ করার আগে, আপনি UMPConsentInformation.sharedInstance.canRequestAds
ব্যবহার করে ব্যবহারকারীর কাছ থেকে সম্মতি পেয়েছেন কিনা তা পরীক্ষা করুন। সম্মতি সংগ্রহ করার সময় চেক করার দুটি জায়গা আছে:
- বর্তমান অধিবেশনে একবার সম্মতি সংগ্রহ করা হয়েছে।
- আপনি
requestConsentInfoUpdateWithParameters:completionHandler:
কল করার পরপরই। পূর্ববর্তী অধিবেশনে সম্ভাব্য সম্মতি পাওয়া গেছে। লেটেন্সি সর্বোত্তম অনুশীলন হিসাবে, আমরা সুপারিশ করি যে কলব্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করবেন না যাতে আপনি আপনার অ্যাপ চালু হওয়ার পরে যত তাড়াতাড়ি সম্ভব বিজ্ঞাপন লোড করা শুরু করতে পারেন।
সম্মতি সংগ্রহের প্রক্রিয়া চলাকালীন কোনও ত্রুটি দেখা দিলে, আপনাকে এখনও বিজ্ঞাপনের অনুরোধ করার চেষ্টা করা উচিত। UMP SDK আগের সেশনের সম্মতি স্ট্যাটাস ব্যবহার করে।
সুইফট
class ViewController: UIViewController {
// Use a boolean to initialize the Google Mobile Ads SDK and load ads once.
private var isMobileAdsStartCalled = false
override func viewDidLoad() {
super.viewDidLoad()
// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Set tag for under age of consent. false means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = false
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
UMPConsentForm.loadAndPresentIfRequired(from: self) {
[weak self] loadAndPresentError in
guard let self else { return }
if let consentError = loadAndPresentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// Consent has been gathered.
if UMPConsentInformation.sharedInstance.canRequestAds {
self.startGoogleMobileAdsSDK()
}
}
}
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if UMPConsentInformation.sharedInstance.canRequestAds {
startGoogleMobileAdsSDK()
}
}
private func startGoogleMobileAdsSDK() {
DispatchQueue.main.async {
guard !self.isMobileAdsStartCalled else { return }
self.isMobileAdsStartCalled = true
// Initialize the Google Mobile Ads SDK.
GADMobileAds.sharedInstance().start()
// TODO: Request an ad.
// GADInterstitialAd.load(...)
}
}
}
উদ্দেশ্য গ
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. NO means users are not under age
// of consent.
parameters.tagForUnderAgeOfConsent = NO;
__weak __typeof__(self) weakSelf = self;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
[UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
completionHandler:^(NSError *loadAndPresentError) {
if (loadAndPresentError) {
// Consent gathering failed.
NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
return;
}
// Consent has been gathered.
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
if (UMPConsentInformation.sharedInstance.canRequestAds) {
[strongSelf startGoogleMobileAdsSDKOnce];
}
}];
}];
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (UMPConsentInformation.sharedInstance.canRequestAds) {
[self startGoogleMobileAdsSDKOnce];
}
}
- (void)startGoogleMobileAdsSDKOnce {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
// TODO: Request an ad.
// [GADInterstitialAd loadWithAdUnitID...];
});
}
পরীক্ষামূলক
আপনি বিকাশের সাথে সাথে আপনার অ্যাপে ইন্টিগ্রেশন পরীক্ষা করতে চাইলে, আপনার পরীক্ষা ডিভাইসটি প্রোগ্রাম্যাটিকভাবে নিবন্ধন করতে নীচের পদক্ষেপগুলি অনুসরণ করুন৷
-
requestConsentInfoUpdateWithParameters:completionHandler:
কল করুন। নিচের মত দেখতে একটি বার্তার জন্য লগ আউটপুট চেক করুন, যা আপনাকে আপনার ডিভাইস আইডি দেখায় এবং কিভাবে এটি একটি পরীক্ষা ডিভাইস হিসাবে যোগ করতে হয়:
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
আপনার ক্লিপবোর্ডে আপনার টেস্ট ডিভাইস আইডি কপি করুন।
UMPDebugSettings().testDeviceIdentifiers
কল করতে আপনার কোড পরিবর্তন করুন এবং আপনার পরীক্ষার ডিভাইস আইডিগুলির একটি তালিকায় পাস করুন৷
সুইফট
let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
with: parameters,
completionHandler: { error in
...
})
উদ্দেশ্য গ
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
parameters.debugSettings = debugSettings;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
...
}];
একটি ভূগোল জোর করে
UMP SDK আপনার অ্যাপের আচরণ পরীক্ষা করার একটি উপায় প্রদান করে যেন ডিভাইসটি the debugGeography
property of type UMPDebugGeography
on UMPDebugSettings
ব্যবহার করে EEA বা UK-তে অবস্থিত। মনে রাখবেন যে ডিবাগ সেটিংস শুধুমাত্র পরীক্ষা ডিভাইসে কাজ করে।
সুইফট
let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
with: parameters,
completionHandler: { error in
...
})
উদ্দেশ্য গ
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
...
}];
সম্মতির অবস্থা রিসেট করুন
UMP SDK-এর সাথে আপনার অ্যাপ পরীক্ষা করার সময়, আপনি SDK-এর অবস্থা রিসেট করা সহায়ক বলে মনে করতে পারেন যাতে আপনি একজন ব্যবহারকারীর প্রথম ইনস্টল অভিজ্ঞতা অনুকরণ করতে পারেন। এটি করার জন্য SDK reset
পদ্ধতি প্রদান করে।
সুইফট
UMPConsentInformation.sharedInstance.reset()
উদ্দেশ্য গ
[UMPConsentInformation.sharedInstance reset];