前提条件
- Xcode 13 以降。
このガイドでは、PAL SDK を呼び出してノンスを受信し、 作成できます。PAL を使用してノンスを生成するサンプルアプリを確認するには、 GitHub から iOS のサンプルをダウンロードしてください。
プロジェクトに PAL SDK を追加する
Swift Package Manager を使用して PAL SDK をインストールする
プログラマティック アクセス ライブラリ SDK は、Swift Packages の Manager の新しいバージョンです。詳しくは、 Swift パッケージをインポートする手順は以下のとおりです。
- Xcode で [ファイル] >Add Packages...」というメッセージが表示されます。 
- 表示されたプロンプトで、PAL SDK Swift Package GitHub を検索します。 リポジトリ: - https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
- 使用する PAL SDK Swift パッケージのバージョンを選択します。 新しいプロジェクトでは、[Up to Next Major Version] を使用することをおすすめします。 
完了すると、Xcode はパッケージの依存関係を解決し、 バックグラウンドでダウンロードされます。パッケージを追加する方法の詳細 依存関係については、以下をご覧ください。 Apple の記事。
PAL SDK を手動でダウンロードしてインストールする
Swift Package Manager を使用しない場合は、PAL SDK をダウンロードして、 手動でプロジェクトに追加してください。
- PAL SDK for iOS をダウンロードして展開します。
- Apple デベロッパー ガイドに沿って、プロジェクトにフレームワークを組み込んでください。
ノンスを生成する
「ノンス」は PAL によって生成される単一の暗号化された文字列で、
PALNonceLoader。PAL SDK では、新しいストリームごとに
生成されます。ただし、ノンスは複数の広告リクエストで再利用できます。
同じストリーム内に表示されます
以下のコード スニペットはすべて、ViewController.m
PAL iOS サンプル アプリケーション:
ノンスをリクエストするには、まず PAL ライブラリをインポートします。
@import ProgrammaticAccessLibrary;
ストリーム相関値(&scor)は、引き続き制御できます。
新しいストリームごとに 1 回リセットされます。同じストリームのすべての広告リクエストで
フリークエンシー キャップとストリーム相関値に同じ PALNonceLoader 値とストリーム相関値を使用し、
適切に動作する必要があります
次に、PALNonceLoader のインスタンスを作成し、2 つのスタブを追加します。
デリゲート メソッド:
@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 {
}
次に、ノンス リクエストを開始し、そのプロパティを設定して、 ノンス マネージャーを初期化します。
@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.
 *
 * 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 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";
  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 エンコードの必要はありません。
最後に、コンテンツ再生セッションの送信を処理するメソッドを追加する必要があります。
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 を動画プレーヤーに対して呼び出す必要があります。
開始」イベントに応答して、最初に再生が開始されたときに
ユーザー開始アクション(Click-to-Play)またはアプリ開始アクション(自動再生)
再生が終了したら sendPlaybackEnd を呼び出し、sendAdClick は
ユーザーが広告をクリックするたびに呼び出すことができます。
(省略可)第三者広告サーバーを介して Google アド マネージャーのシグナルを送信する
第三者広告サーバーからのアド マネージャーのリクエストを設定します。Google Chat の設定 次の手順を完了すると、ノンス パラメータが PAL SDK から伝播されます。 中継サーバー経由で Google アドマネージャーに 送信されますこれにより、 Google アドマネージャーを通じた収益化
第三者の広告サーバーを設定し、サーバーの アド マネージャーに送信します。このスライドは、 指定することもできます。
https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...
詳しくは、Google アド マネージャーのサーバーサイドの実装 ガイドをご覧ください。
アド マネージャーでは、givn= を探してノンスの値を識別します。第三者の広告
独自のマクロをいくつかサポートする必要があります。
%%custom_key_for_google_nonce%% を実行し、ノンス クエリ パラメータに置き換えます。
確認します。詳細な手順
第三者広告サーバーのドキュメントをご覧ください