まず、Android PAL SDK をアプリに追加します。
Android PAL SDK をライブラリとして追加する
バージョン 18.0.0 の時点で、PAL SDK は Google の Maven リポジトリでホストされ、 次のようにしてアプリに追加できます。
app/build.gradle
...
dependencies {
implementation 'com.google.android.gms:play-services-pal:20.2.0'
...
}
または、PAL SDK を Google の Maven リポジトリからダウンロードしてアプリに手動で追加することもできます。
ノンスを生成
「ノンス」NonceLoader
を使用して PAL で生成される単一の暗号化された文字列です。
PAL SDK では、新しいストリーム リクエストに毎回、新しいストリーム
生成されるノンス。ただし、ノンスは組織内の複数の広告リクエストで再利用できます。
同じストリーム内に表示されますPAL SDK を使用してノンスを生成するには、次のように変更します。
MyActivity.java
。PAL を使用してノンスを生成するサンプルアプリを確認するには、
Android のサンプルを
GitHub。
まず、PAL SDK をインポートし、いくつかのプライベート プロパティを作成して
NonceLoader
と NonceManager
を実行してから、NonceLoader を初期化します。
NonceLoader
クラスのインスタンスを 1 つだけ作成することをおすすめします。
アプリでの各ユーザー セッション(複数のページまたは同等のページがある場合を除く)
構築します。これにより、ページの相関値(&correlator
)が
アプリのユーザーセッションの
ライフタイムバリューを表しますその場合でも、
ストリーム相関子(&scor
)。新しいストリームごとに 1 回リセットする必要があります。
同じストリームの広告リクエストはすべて同じ NonceLoader
を共有し、
フリークエンシー キャップと競合相手の除外に使用するストリーム相関値
確認する必要があります
import android.app.Activity;
import android.os.Bundle;
import com.google.ads.interactivemedia.pal.NonceLoader;
import com.google.ads.interactivemedia.pal.NonceManager;
import com.google.ads.interactivemedia.pal.NonceRequest;
import com.google.ads.interactivemedia.pal.ConsentSettings;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends Activity {
...
private NonceLoader nonceLoader;
private NonceManager nonceManager = null;
private ConsentSettings consentSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The default value for allowStorage() is false, but can be
// changed once the appropriate consent has been gathered. The
// getConsentToStorage() method is a placeholder for the publisher's own
// method of obtaining user consent, either by integrating with a CMP or
// based on other methods the publisher chooses to handle storage consent.
boolean isConsentToStorage = getConsentToStorage();
videoView = findViewById(R.id.video_view);
videoView.setOnTouchListener(this::onVideoViewTouch);
consentSettings = ConsentSettings.builder()
.allowStorage(isConsentToStorage)
.build();
// It is important to instantiate the NonceLoader as early as possible to
// allow it to initialize and preload data for a faster experience when
// loading the NonceManager. A new NonceLoader will need to be instantiated
//if the ConsentSettings change for the user.
nonceLoader = new NonceLoader(this, consentSettings);
...
}
次に、ノンスの生成をトリガーする関数を作成します。必要なノンスは 1 つだけです
すべての広告リクエストに対して
1 つのストリーム再生でトラッキングしますテスト目的で
: テストアプリでボタンをクリックするときに、この関数を呼び出すことができます。「
ここで設定する NonceRequest
パラメータはサンプル パラメータです。まず、
調整する必要があります。
この関数はノンスの生成を非同期でトリガーします。そのため、
ノンス リクエストの成功または失敗を処理するために AsyncTask
を実装します。
public void generateNonceForAdRequest() {
Set supportedApiFrameWorksSet = new HashSet();
// The values 2, 7, and 9 correspond to player support for VPAID 2.0,
// OMID 1.0, and SIMID 1.1.
supportedApiFrameWorksSet.add(2);
supportedApiFrameWorksSet.add(7);
supportedApiFrameWorksSet.add(9);
NonceRequest nonceRequest = NonceRequest.builder()
.descriptionURL("https://example.com/content1")
.iconsSupported(true)
.omidPartnerVersion("6.2.1")
.omidPartnerName("Example Publisher")
.playerType("ExamplePlayerType")
.playerVersion("1.0.0")
.ppid("testPpid")
.sessionId("Sample SID")
.supportedApiFrameworks(supportedApiFrameWorksSet)
.videoPlayerHeight(480)
.videoPlayerWidth(640)
.willAdAutoPlay(true)
.willAdPlayMuted(false)
.build();
NonceCallbackImpl callback = new NonceCallbackImpl();
nonceLoader
.loadNonceManager(nonceRequest)
.addOnSuccessListener(callback)
.addOnFailureListener(callback);
}
private class NonceCallbackImpl implements OnSuccessListener<NonceManager>, OnFailureListener {
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// from here you would trigger your ad request and move on to initialize content
}
@Override
public void onFailure(Exception error) {
Log.e("PALSample", "Nonce generation failed: " + error.getMessage());
}
}
ノンス マネージャーを作成すると、
nonceManager.getNonce()
。
広告リクエストにノンスを添付する
生成されたノンスを使用するには、広告タグの末尾に givn
パラメータと
ノンス値を設定する必要があります。
/**
* The ad tag for your ad request, for example:
* https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external\
* /single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1\
* &cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
*
* For more sample ad tags, see
* developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
*/
private static final String DEFAULT_AD_TAG = "Your ad tag";
...
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// Append the nonce to the ad tag URL.
makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
}
再生イベントを追跡する
最後に、プレーヤー用にさまざまなイベント ハンドラを実装する必要があります。対象 テスト用にこれらをボタンクリック イベントにアタッチできますが、 実装すると、これらは適切なプレーヤー イベントによってトリガーされます。
public void sendAdClick() {
if (nonceManager != null) {
nonceManager.sendAdClick();
}
}
public void sendPlaybackStart() {
if (nonceManager != null) {
nonceManager.sendPlaybackStart();
}
}
public void sendPlaybackEnd() {
if (nonceManager != null) {
nonceManager.sendPlaybackEnd();
}
}
public void onVideoViewTouch(MotionEvent e) {
if (nonceManager != null) {
nonceManager.sendTouch(e);
}
}
実装で各関数を呼び出すタイミングは次のとおりです。
sendPlaybackStart()
: 動画再生セッションの開始時sendPlaybackEnd()
: 動画再生セッションが終了したときsendAdClick()
: 視聴者が広告をクリックするたびsendTouch()
: プレーヤーでタッチ操作が行われるたび
(省略可)第三者広告サーバーを介して Google アド マネージャーのシグナルを送信する
Google アド マネージャーと連携するように第三者広告サーバーを設定する場合は、 をサーバーのドキュメントに追加して、各広告のノンス値をキャプチャして転送します。 リクエストできます。示されている例は、ノンス パラメータを含む広告リクエスト URL です 含まれます。ノンス パラメータは、 中間サーバー、そしてアド マネージャーに転送することで、収益性を高めています。
アド マネージャーへのサーバー リクエストにノンスを含めるように、第三者広告サーバーを設定します。このスライドは、 指定することもできます。
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
詳しくは、Google アド マネージャーのサーバーサイドの実装 ガイドをご覧ください。
アド マネージャーは givn=
を探してノンス値を特定します。第三者の広告
独自のマクロをいくつかサポートする必要があります。
%%custom_key_for_google_nonce%%
を実行し、ノンス クエリ パラメータに置き換えます。
確認します。詳細な手順
第三者広告サーバーのドキュメントをご覧ください