এই নির্দেশিকাটিতে দেখানো হয়েছে কীভাবে আপনার অ্যাপগুলোকে এমনভাবে কোড করতে হবে যাতে সেগুলো আইফোন এক্স-এ বিজ্ঞাপন সঠিকভাবে প্রদর্শন করে।
পূর্বশর্ত
ব্যানার বিজ্ঞাপন
ব্যানার বিজ্ঞাপন অবশ্যই "সেফ এরিয়া" -তে স্থাপন করতে হবে, যাতে এটি গোলাকার কোণা, সেন্সর হাউজিং এবং হোম ইন্ডিকেটর দ্বারা আড়াল না হয়ে যায়। এই পৃষ্ঠায় আপনি সেফ এরিয়ার উপরে বা নীচে একটি ব্যানারকে স্থাপন করার জন্য কনস্ট্রেইন্ট যোগ করার উদাহরণ পাবেন। স্টোরিবোর্ড এবং প্রোগ্রাম্যাটিক উভয় প্রকার কনস্ট্রেইন্টই iOS 9+ এবং Xcode 9+ সমর্থনকারী একটি পরিবেশে প্রদর্শন করা হয়েছে। iOS এবং Xcode-এর পূর্ববর্তী সংস্করণগুলির জন্য বিকল্প সমাধানও উল্লেখ করা হয়েছে।
স্টোরিবোর্ড/ইন্টারফেস বিল্ডার
আপনার অ্যাপে যদি ইন্টারফেস বিল্ডার ব্যবহার করা হয়, তাহলে প্রথমে নিশ্চিত করুন যে আপনি সেফ এরিয়া লেআউট গাইড চালু করেছেন। এটি করার জন্য আপনাকে এক্সকোড ৯+ ব্যবহার করতে হবে এবং আইওএস ৯+ টার্গেট করতে হবে।
আপনার ইন্টারফেস বিল্ডার ফাইলটি খুলুন এবং আপনার ভিউ কন্ট্রোলার সিন-এ ক্লিক করুন। আপনি ডানদিকে ইন্টারফেস বিল্ডার ডকুমেন্ট অপশনগুলো দেখতে পাবেন। ‘Use Safe Area Layout Guides’ চেক করুন এবং নিশ্চিত করুন যে আপনি ন্যূনতম iOS 9.0 এবং তার পরবর্তী সংস্করণের জন্য বিল্ড করছেন।

আমরা আপনাকে প্রস্থ এবং উচ্চতার সীমাবদ্ধতা ব্যবহার করে ব্যানারটিকে প্রয়োজনীয় আকারে সীমাবদ্ধ করার পরামর্শ দিই।

এখন আপনি GAMBannerView-এর Top প্রপার্টিকে Safe Area-এর শীর্ষে কনস্ট্রেইন করার মাধ্যমে ব্যানারটিকে Safe Area-এর শীর্ষে অ্যালাইন করতে পারেন:

একইভাবে, আপনি GAMBannerView-এর Bottom প্রপার্টিকে সেফ এরিয়ার নিচের অংশে কনস্ট্রেইন করার মাধ্যমে ব্যানারটিকে সেফ এরিয়ার একেবারে নিচে অ্যালাইন করতে পারেন:

আপনার সীমাবদ্ধতাগুলো এখন নিচের স্ক্রিনশটের মতো দেখতে হবে (আকার/অবস্থান ভিন্ন হতে পারে):

ভিউকন্ট্রোলার
উপরে স্টোরিবোর্ডে কনফিগার করা GAMBannerView তে একটি ব্যানার দেখানোর জন্য প্রয়োজনীয় ন্যূনতম কাজটি করতে এই সহজ ভিউ কন্ট্রোলার কোড স্নিপেটটি দেওয়া হলো:
সুইফট
class ViewController: UIViewController { /// The banner view. @IBOutlet var bannerView: AdManagerBannerView! override func viewDidLoad() { super.viewDidLoad() // Replace this ad unit ID with your own ad unit ID. bannerView.adUnitID = "/21775744923/example/adaptive-banner" bannerView.rootViewController = self bannerView.load(AdManagerRequest()) } }
উদ্দেশ্য-সি
@interface ViewController() @property(nonatomic, strong) IBOutlet GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Replace this ad unit ID with your own ad unit ID. self.bannerView.adUnitID = @"/21775744923/example/adaptive-banner"; self.bannerView.rootViewController = self; GAMRequest *request = [GAMRequest request]; [self.bannerView loadRequest:request]; }
নিরাপদ এলাকার সীমানা বরাবর ব্যানারগুলো সারিবদ্ধ করা
আপনি যদি একটি সম্পূর্ণ-প্রস্থের, বাম- বা ডান-সারিবদ্ধ ব্যানার রাখতে চান, তাহলে ব্যানারটির বাম/ডান প্রান্তকে সুপারভিউ-এর বাম/ডান প্রান্তের সাথে নয়, বরং সেফ এরিয়া-র বাম/ডান প্রান্তের সাথে সীমাবদ্ধ করুন।
যদি আপনার ‘Use Safe Area Layout Guides’ সক্রিয় করা থাকে, তাহলে ভিউতে কনস্ট্রেইন্ট যোগ করার সময় ইন্টারফেস বিল্ডার ডিফল্টরূপে সেফ এরিয়া এজগুলো ব্যবহার করবে।
iOS 8 এবং এর নিচের সংস্করণ সমর্থন করে
আপনি যদি ইন্টারফেস বিল্ডার ব্যবহার করে iOS 8 বা তার নিচের সংস্করণ সমর্থন করতে চান, তাহলে আপনার ইন্টারফেস বিল্ডার ফাইল এবং স্টোরিবোর্ডগুলোর জন্য ‘Use Safe Area Layout Guides’ অপশনটি আনচেক করতে হবে।
এখন আপনি টপ লেআউট গাইডের নীচে কনস্ট্রেইন্ট যোগ করতে পারবেন (সেফ এরিয়ার উপরে যোগ করার পরিবর্তে):

এছাড়াও বটম লেআউট গাইডের উপরে কনস্ট্রেইন্ট যোগ করুন (সেফ এরিয়ার নীচে নয়):

সম্পূর্ণ-প্রস্থের ব্যানারগুলির জন্য (যা শুধুমাত্র ল্যান্ডস্কেপ মোডে সেফ এরিয়া দ্বারা প্রভাবিত হয়), এই লেআউট নির্দেশিকাগুলি বিদ্যমান নেই। ইন্টারফেস বিল্ডারের নিরাপদ বিকল্পটি হলো আপনার বাম এবং ডান প্রান্তের সীমাবদ্ধতাগুলিকে মার্জিনের সাপেক্ষে তৈরি করা:

এটি ব্যানারের প্রান্তকে সুপারভিউ/সেফ এরিয়ার প্রান্ত থেকে সামান্য সরিয়ে দেবে, ফলে iPhone X-এ ল্যান্ডস্কেপ মোডে আপনার ব্যানারটি ঢাকা পড়বে না। আপনি প্রোগ্রামিংয়ের মাধ্যমেও এই কাঙ্ক্ষিত ফলাফল অর্জন করতে পারেন।
প্রোগ্রাম্যাটিক
যদি আপনার অ্যাপ প্রোগ্রাম্যাটিকভাবে ব্যানার বিজ্ঞাপন তৈরি করে, তাহলে আপনি কোডের মাধ্যমে সীমাবদ্ধতা নির্ধারণ করতে এবং ব্যানার বিজ্ঞাপনের অবস্থান ঠিক করতে পারেন। এই উদাহরণটি (iOS সংস্করণ 7.0 এবং তার উপরের সংস্করণের জন্য) দেখায় কিভাবে একটি ব্যানারকে সেফ এরিয়ার নীচে অনুভূমিকভাবে কেন্দ্রে রাখার জন্য সীমাবদ্ধতা আরোপ করতে হয়:
সুইফট
class ViewController: UIViewController { var bannerView: AdManagerBannerView! override func viewDidLoad() { super.viewDidLoad() // Instantiate the banner view with your desired banner size. bannerView = AdManagerBannerView(adSize: AdSizeBanner) addBannerViewToView(bannerView) bannerView.rootViewController = self // Set the ad unit ID to your own ad unit ID here. bannerView.adUnitID = "/21775744923/example/adaptive-banner" bannerView.load(AdManagerRequest()) } func addBannerViewToView(_ bannerView: UIView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) if #available(iOS 11.0, *) { positionBannerAtBottomOfSafeArea(bannerView) } else { positionBannerAtBottomOfView(bannerView) } } @available (iOS 11, *) func positionBannerAtBottomOfSafeArea(_ bannerView: UIView) { // Position the banner. Stick it to the bottom of the Safe Area. // Centered horizontally. let guide: UILayoutGuide = view.safeAreaLayoutGuide NSLayoutConstraint.activate( [bannerView.centerXAnchor.constraint(equalTo: guide.centerXAnchor), bannerView.bottomAnchor.constraint(equalTo: guide.bottomAnchor)] ) } func positionBannerAtBottomOfView(_ bannerView: UIView) { // Center the banner horizontally. view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0)) // Lock the banner to the top of the bottom layout guide. view.addConstraint(NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: self.bottomLayoutGuide, attribute: .top, multiplier: 1, constant: 0)) } }
উদ্দেশ্য-সি
@interface ViewController() @property(nonatomic, strong) GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Instantiate the banner view with your desired banner size. self.bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeBanner]; [self addBannerViewToVIew:self.bannerView]; // Replace this ad unit ID with your own ad unit ID. self.bannerView.adUnitID = @"/21775744923/example/adaptive-banner"; self.bannerView.rootViewController = self; GAMRequest *request = [GAMRequest request]; [self.bannerView loadRequest:request]; } #pragma mark - view positioning -(void)addBannerViewToView:(UIView *_Nonnull)bannerView { self.bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:self.bannerView]; if (@available(ios 11.0, *)) { [self positionBannerViewAtBottomOfSafeArea:bannerView]; } else { [self positionBannerViewAtBottomOfView:bannerView]; } } - (void)positionBannerViewAtBottomOfSafeArea:(UIView *_Nonnull)bannerView NS_AVAILABLE_IOS(11.0) { // Position the banner. Stick it to the bottom of the Safe Area. // Centered horizontally. UILayoutGuide *guide = self.view.safeAreaLayoutGuide; [NSLayoutConstraint activateConstraints:@[ [bannerView.centerXAnchor constraintEqualToAnchor:guide.centerXAnchor], [bannerView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor] ]]; } - (void)positionBannerViewAtBottomOfView:(UIView *_Nonnull)bannerView { [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; } @end
ব্যবহৃত অ্যাট্রিবিউট এবং অ্যাঙ্করগুলো পরিবর্তন করে উপরের কৌশলগুলো সহজেই সেফ এরিয়ার শীর্ষে সীমাবদ্ধ করার জন্য ব্যবহার করা যেতে পারে।
স্থানীয় বিজ্ঞাপন
আপনার অ্যাপ যদি স্ক্রিনের উপরে বা নীচে নেটিভ বিজ্ঞাপন পিন করে রাখে, তাহলে ব্যানার বিজ্ঞাপনের মতোই একই নীতি নেটিভ বিজ্ঞাপনের ক্ষেত্রেও প্রযোজ্য হবে। মূল পার্থক্য হলো, GAMBannerView তে কনস্ট্রেইন্ট যোগ করার পরিবর্তে, সেফ এরিয়া লেআউট নির্দেশিকা মেনে চলার জন্য আপনাকে আপনার GADNativeAppInstallAdView এবং GADNativeContentAdView (অথবা বিজ্ঞাপনটির ধারণকারী ভিউ)-তে কনস্ট্রেইন্ট যোগ করতে হবে। নেটিভ ভিউগুলির জন্য আমরা আরও সুস্পষ্ট আকারের কনস্ট্রেইন্ট দেওয়ার পরামর্শ দিই।
মধ্যবর্তী এবং পুরস্কৃত বিজ্ঞাপন
ইন্টারস্টিশিয়াল এবং রিওয়ার্ডেড বিজ্ঞাপন সহ ফুল স্ক্রিন বিজ্ঞাপন ফরম্যাটগুলো Google Mobile Ads SDK দ্বারা রেন্ডার করা হয়। ক্লোজ বাটনের মতো বিজ্ঞাপনের উপাদানগুলো যাতে সঠিক স্থানে রেন্ডার হয়, তা নিশ্চিত করার জন্য Google Mobile Ads SDK -তে একটি আপডেট আসবে। এই পরিবর্তনটি উপলব্ধ হলে আমরা রিলিজ নোট এবং এই ডকুমেন্টেশন পৃষ্ঠাটি আপডেট করব।