পূর্বশর্ত
- Xcode 13 বা তার পরবর্তী যেকোনও ভার্সন
কীভাবে ননস পেতে এবং প্লেব্যাক ইভেন্ট মনিটর করতে PAL SDK ব্যবহার করতে হয় তা এই নির্দেশিকায় বর্ণনা করা হয়েছে। সম্পূর্ণ গাইড অনুসরণ করতে, PAL tvOS স্যাম্পেল অ্যাপ্লিকেশন ডাউনলোড করুন।
আপনার প্রোজেক্টে PAL SDK যোগ করুন
Swift Package Manager ব্যবহার করে PAL SDK ইনস্টল করা
2.5.3 ভার্সন থেকে শুরু করে Swift Package Manager-এ প্রোগ্রামাটিক অ্যাক্সেস লাইব্রেরি SDK কাজ করে। Swift প্যাকেজ ইমপোর্ট করতে নিচে দেওয়া ধাপগুলি অনুসরণ করুন।
Xcode-এ, IMA SDK Swift প্যাকেজ ইনস্টল করতে, ফাইল > প্যাকেজ যোগ করুন... বিকল্পে নেভিগেট করুন।
প্রদর্শিত প্রম্পটে, IMA SDK Swift Package GitHub রেপোজিটরি সার্চ করুন:
https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvosআপনি যে PAL SDK Swift প্যাকেজ ব্যবহার করতে চান তার ভার্সন বেছে নিন। নতুন প্রজেক্টের জন্য, আমরা পরবর্তী মেজর ভার্সন পর্যন্ত ব্যবহার করার সাজেশন দিই।
আপনার কাজ শেষ হয়ে গেলে, Xcode আপনার প্যাকেজ সংক্রান্ত নির্ভরতা সমাধান করে এবং সেগুলি ব্যাকগ্রাউন্ডে ডাউনলোড করে। কীভাবে প্যাকেজ ডিপেন্ডেন্সি যোগ করতে হয় সেই সম্পর্কে আরও জানতে, Apple-এর নিবন্ধ দেখুন।
PAL SDK ম্যানুয়ালি ডাউনলোড ও ইনস্টল করা
আপনি Swift Package Manager ব্যবহার করতে না চাইলে, PAL SDK ডাউনলোড করতে পারেন এবং আপনার প্রোজেক্টে ম্যানুয়ালি যোগ করতে পারেন।
- tvOS-এর জন্য PAL SDK ডাউনলোড ও এক্সট্র্যাক্ট করুন
- আপনার প্রোজেক্টে ফ্রেমওয়ার্ক অন্তর্ভুক্ত করতে Apple Developer Guide অনুসরণ করুন।
নন্স জেনারেট করা
"নন্স" হল PAL-এর তৈরি করা একটি এনক্রিপটেড স্ট্রিং যা
PALNonceLoader ব্যবহার করে তৈরি করা হয়। PAL SDK-এর জন্য প্রতিটি নতুন স্ট্রিম অনুরোধের সাথে
নতুনভাবে তৈরি করা ননস থাকতে হবে। তবে, একই স্ট্রিমের মধ্যে একাধিক বিজ্ঞাপন
অনুরোধের জন্য ননস আবার ব্যবহার করা যেতে পারে।
নিচে দেওয়া সব কোড স্নিপেট হল
ViewController.m-এর পরিবর্তন যা
PAL tvOS স্যাম্পেল অ্যাপ্লিকেশন-এ করা হয়েছে।
নন্স অনুরোধ করতে, PAL লাইব্রেরি ইমপোর্ট করার মাধ্যমে শুরু করুন:
@import ProgrammaticAccessLibrary;
আপনি এখনও স্ট্রিম কোরিলেটর বা &scor কন্ট্রোল করতে পারবেন, যা প্রতিটি নতুন স্ট্রিমের জন্য একবার রিসেট করতে হবে।
একই স্ট্রিমের সব বিজ্ঞাপন অনুরোধে ফ্রিকোয়েন্সি ক্যাপিং এবং
প্রতিযোগিতামূলক বর্জন ফিচার সঠিকভাবে কাজ করার জন্য একই PALNonceLoader এবং স্ট্রিম কোরিলেটর ভ্যালু
শেয়ার করতে হবে।
এরপরে, PALNonceLoader-এর একটি ইনস্ট্যান্স তৈরি করুন এবং দুটি
ডেলিগেট পদ্ধতির জন্য স্টাব যোগ করুন:
@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The view in which a video would play.
// In this sample, it is mocked for simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void) viewDidLoad {
[super viewDidLoad];
// The default value for 'directedForChildOrUnknownAge' is
// 'NO'. Update the value after the appropriate consent has been gathered.
// By default, PAL automatically determines whether to enable limited ads
// based on the user's TCF (Transparency and Consent Framework) consent data
// on the device. If you must manually override the default behavior,
// for example, to meet your app's requirements, use the
// `PALSettings.forceLimitedAds` property.
PALSettings *settings = [[PALSettings alloc] init];
settings.directedForChildOrUnknownAge = NO;
self.nonceLoader = [[PALNonceLoader alloc] initWithSettings:settings];
self.nonceLoader.delegate = self;
}
#pragma mark - PALNonceLoaderDelegate methods
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didLoadNonceManager:(PALNonceManager *)nonceManager {
}
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didFailWithError:(NSError *)error {
}
তারপর, একটি ননস অনুরোধ শুরু করুন, এর প্রপার্টি পপুলেট করুন এবং ননস ম্যানেজার ইনিশিয়ালাইজ করতে এটি ব্যবহার করুন:
@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The nonce manager result from the last successful nonce request.
@property(nonatomic) PALNonceManager *nonceManager;
// The view in which a video would play. In this sample, it is mocked for
// simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void)viewDidLoad {
...
self.nonceLoader.delegate = self;
[self requestNonceManager];
}
...
#pragma mark - UI Callback methods
/**
* Requests a new nonce manager with a request containing arbitrary test values
* like a (sane) user might supply. Displays the nonce or error on success. This
* should be called once per stream.
*
* The PALNonceRequest parameters set here are example parameters.
* You should set your parameters based on your own app characteristics.
*/
- (void)requestNonceManager {
PALNonceRequest *request = [[PALNonceRequest alloc] init];
request.continuousPlayback = PALFlagOff;
request.descriptionURL = [NSURL URLWithString:@"https://example.com/desc?key=val"];
request.iconsSupported = YES;
request.playerType = @"AwesomePlayer";
request.playerVersion = @"4.2.1";
request.PPID = @"123987456";
request.sessionID = @"Sample SID";
// Sample API framework integers. See reference docs for more details.
request.supportedAPIFrameworks = [NSMutableSet setWithArray:@[ @2, @7, @9 ]];
request.videoPlayerHeight = 480;
request.videoPlayerWidth = 640;
request.willAdAutoPlay = PALFlagOn;
request.willAdPlayMuted = PALFlagOff;
if (self.nonceManager) {
// Detach the old nonce manager's gesture recognizer before destroying it.
[self.videoView removeGestureRecognizer:self.nonceManager.gestureRecognizer];
self.nonceManager = nil;
}
[self.nonceLoader loadNonceManagerWithRequest:request];
}
সবশেষে, জেনারেট করা ননস লগ করার জন্য ননস লোডার ডেলিগেট পপুলেট করুন:
#pragma mark - PALNonceLoaderDelegate methods
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didLoadNonceManager:(PALNonceManager *)nonceManager {
NSLog(@"Programmatic access nonce: %@", nonceManager.nonce);
// Capture the created nonce manager and attach its gesture recognizer to the video view.
self.nonceManager = nonceManager;
[self.videoView addGestureRecognizer:self.nonceManager.gestureRecognizer];
}
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didFailWithError:(NSError *)error {
NSLog(@"Error generating programmatic access nonce: %@", error);
}
আপনার ডাইরেক্ট VAST কল (DVC) করার সময়,
givn প্যারামিটারে আপনার ননসকে ভ্যালু হিসেবে সেট করুন। নন্স URL-এর জন্য নিরাপদ—আপনাকে এটি URL-এনকোড করতে হবে না।
আপনি Google-এর থেকে বিজ্ঞাপন অনুরোধ ও রেন্ডার করলে, আপনাকে অবশ্যই AdChoices আইকন ও ওভারলে রেন্ডার করতে হবে। VAST উত্তর পার্স করা ও আইকন রেন্ডার করা সম্পর্কে আরও জানতে, AdChoices আইকন ও ওভারলে দেখুন।
সবশেষে, আপনাকে SDK-তে কন্টেন্ট প্লেব্যাক সেশন
তথ্য এবং ক্লিক পাঠানোর পদ্ধতি যোগ করতে হবে। sendPlaybackStart, sendPlaybackEnd ও sendAdClick পদ্ধতি প্রয়োগ করে
নিচে দেওয়া উদাহরণটি দেখুন:
...
// Reports the start of playback for the current content session.
- (void)sendPlaybackStart {
[self.nonceManager sendPlaybackStart];
}
// Reports the end of playback for the current content session.
- (void)sendPlaybackEnd {
[self.nonceManager sendPlaybackEnd];
}
// Reports an ad click for the current nonce manager, if not nil.
- (void)sendAdClick {
[self.nonceManager sendAdClick];
}
আপনার ইমপ্লিমেন্টেশনে, প্রথমবার প্লেব্যাক শুরু করার সময়, কোনও
ব্যবহারকারী-ইনিশিয়েটেড অ্যাকশন (ক্লিক-টু-প্লে) অথবা অ্যাপ ইনিশিয়েটেড অ্যাকশনের (অটোপ্লে) উত্তরে "ভিডিও প্লেয়ার
স্টার্ট" হলে sendPlaybackStart কল করতে হবে, প্লেব্যাক শেষ হলে sendPlaybackEnd কল করতে হবে এবং দর্শক প্রতিবার কোনও বিজ্ঞাপনে ক্লিক করলে sendAdClick কল করতে
হবে।
(ঐচ্ছিক) থার্ড-পার্টি বিজ্ঞাপন সার্ভারের মাধ্যমে Google Ad Manager সিগন্যাল পাঠানো
Ad Manager-এর জন্য থার্ড-পার্টি বিজ্ঞাপন সার্ভারের অনুরোধ কনফিগার করুন। আপনি নিচের ধাপগুলি সম্পূর্ণ করার পরে, ননস প্যারামিটার PAL SDK থেকে, আপনার ইন্টারমিডিয়েট সার্ভারের মাধ্যমে, Google Ad Manager-এ প্রোপাগেট হয়। এর ফলে Google Ad Manager-এর মাধ্যমে আরও ভালোভাবে মনিটাইজ করা যায়।
Ad Manager-এর কাছে সার্ভারের অনুরোধে ননস অন্তর্ভুক্ত করতে আপনার থার্ড-পার্টি বিজ্ঞাপন সার্ভার কনফিগার করুন। এখানে থার্ড-পার্টি বিজ্ঞাপন সার্ভারের মধ্যে কনফিগার করা বিজ্ঞাপন ট্যাগের একটি উদাহরণ দেওয়া হল:
https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...
আরও বিবরণের জন্য, Google Ad Manager-এর সার্ভার-সাইড প্রয়োগ করা সংক্রান্ত নির্দেশিকা দেখুন।
নন্স ভ্যালু শনাক্ত করতে Ad Manager givn= খুঁজে দেখে। থার্ড-পার্টি বিজ্ঞাপন
সার্ভারকে নিজস্ব কিছু ম্যাক্রো যেমন
%%custom_key_for_google_nonce%% ব্যবহার করতে হবে এবং আগের ধাপে আপনার দেওয়া
নন্স কোয়েরি প্যারামিটারের সাথে এটি পরিবর্তন করতে হবে। এটি কীভাবে করবেন সেই সম্পর্কে আরও তথ্য
থার্ড-পার্টি বিজ্ঞাপন সার্ভারের ডকুমেন্টেশনে উপলভ্য থাকা উচিত।