شروع کنید

پیش نیازها

  • Xcode 13 یا بالاتر.

این راهنما نحوه فراخوانی PAL SDK را برای دریافت nonce و نظارت بر رویدادهای پخش توضیح می دهد. برای دیدن یک برنامه نمونه که از PAL برای تولید nonce استفاده می کند، نمونه iOS را از GitHub دانلود کنید.

PAL SDK را به پروژه خود اضافه کنید

PAL SDK را با استفاده از Swift Package Manager نصب کنید

SDK کتابخانه دسترسی برنامه‌ریزی شده از Swift Package Manager با شروع نسخه 2.5.3 پشتیبانی می‌کند. برای وارد کردن بسته سوئیفت مراحل زیر را دنبال کنید.

  1. در Xcode، بسته IMA SDK Swift را با رفتن به File > Add Packages... نصب کنید.

  2. در اعلان ظاهر شده، مخزن IMA SDK Swift Package GitHub را جستجو کنید:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  3. نسخه PAL SDK Swift Package را که می خواهید استفاده کنید انتخاب کنید. برای پروژه‌های جدید، توصیه می‌کنیم از نسخه اصلی تا بعدی استفاده کنید.

پس از اتمام کار، Xcode وابستگی های بسته شما را برطرف می کند و آنها را در پس زمینه دانلود می کند. برای جزئیات بیشتر در مورد نحوه افزودن وابستگی های بسته، به مقاله اپل مراجعه کنید.

PAL SDK را به صورت دستی دانلود و نصب کنید

اگر نمی خواهید از Swift Package Manager استفاده کنید، می توانید PAL SDK را دانلود کرده و به صورت دستی آن را به پروژه خود اضافه کنید.

  1. PAL SDK را برای iOS دانلود و استخراج کنید
  2. راهنمای توسعه دهنده اپل را دنبال کنید تا چارچوب را در پروژه خود بگنجانید.

یک nonce تولید کنید

یک "nonce" یک رشته رمزگذاری شده واحد است که توسط PAL با استفاده از PALNonceLoader تولید می شود. PAL SDK مستلزم این است که هر جریان جدید با یک nonce جدید تولید شده همراه باشد. با این حال، nonces را می توان برای چندین درخواست تبلیغات در یک جریان استفاده مجدد کرد.

همه کدهای زیر تغییراتی در ViewController.m در برنامه نمونه PAL iOS هستند.

برای درخواست nonce، با وارد کردن کتابخانه 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 'allowStorage' and 'directedForChildOrUnknownAge' is
  // 'NO', but should be updated once the appropriate consent has been gathered.
  // Publishers should either integrate with a CMP or use a different method to
  // handle storage consent.
  PALSettings *settings = [[PALSettings alloc] init];
  settings.allowStorage = YES;
  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 {
}

سپس، یک درخواست nonce را آغاز کنید، ویژگی های آن را پر کنید، و از آن برای مقداردهی اولیه یک مدیر nonce استفاده کنید:

@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 user might supply. Displays the nonce or error on success. This
 * should be called once per stream.
 */
- (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 integer. See reference docs for more details.
  NSInteger SampleAPIFramework = 501;
  request.supportedApiFrameworks = [NSMutableSet setWithArray:@[ SampleAPIFramework ]];
  request.videoPlayerHeight = 480;
  request.videoPlayerWidth = 640;
  request.willAdAutoPlay = PALFlagOn;
  request.willAdPlayMuted = PALFlagOff;
  request.OMIDPartnerName = @"SamplePartner";
  request.OMIDPartnerVersion = @"6.2.1";
  request.OMIDVersion = @"1.2.3";

  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];
}

در نهایت، نمایندگان nonce loader را برای ثبت نام nonces تولید شده پر کنید:

#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)، nonce خود را به عنوان مقدار پارامتر givn تنظیم کنید. nonce URL ایمن است—شما نیازی به کدگذاری URL ندارید.

در نهایت، باید روش‌هایی را برای مدیریت ارسال اطلاعات جلسه پخش محتوا و کلیک‌ها به 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 را پیکربندی کنید. پس از تکمیل مراحل زیر، پارامتر nonce از PAL SDK، از طریق سرورهای واسطه شما و سپس به Google Ad Manager منتشر می شود. این امکان کسب درآمد بهتر از طریق Google Ad Manager را فراهم می کند.

سرور تبلیغات شخص ثالث خود را پیکربندی کنید تا nonce را در درخواست سرور به Ad Manager لحاظ کند. در اینجا نمونه ای از تگ تبلیغاتی است که در داخل سرور تبلیغات شخص ثالث پیکربندی شده است:

https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...

برای جزئیات بیشتر، راهنمای پیاده سازی سمت سرور Google Ad Manager را ببینید.

Ad Manager برای شناسایی مقدار nonce به دنبال givn= می گردد. سرور تبلیغات شخص ثالث باید از مقداری ماکرو خاص مانند %%custom_key_for_google_nonce%% پشتیبانی کند و آن را با پارامتر درخواست nonce که در مرحله قبل ارائه کردید جایگزین کند. اطلاعات بیشتر در مورد نحوه انجام این کار باید در مستندات سرور تبلیغات شخص ثالث موجود باشد.