リワード広告実装方法 - glossom-dev/AdfurikunSDK-Android GitHub Wiki
AdfurikunMovieReward
クラスのインスタンスを生成します。
広告枠ID
には、アドフリくん管理画面で発行された広告枠IDをセットします。
その後setAdfurikunMovieRewardListener
を呼び出し、引数として後述のリスナーを渡します。
Kotlin
//AdfurikunMovieReward インスタンス変数を定義
private var mReward: AdfurikunMovieReward? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 広告枠ID・Activityを指定し、動画リワードのインスタンスを生成
mReward = AdfurikunMovieReward("広告枠ID", this, false)
mReward.setAdfurikunMovieRewardListener(mListener)
}
Java
//AdfurikunMovieReward インスタンス変数を定義
AdfurikunMovieReward mReward;
@Override
protected void onCreate(Bundle bundle) {
// 広告枠ID・Activityを指定し、動画リワードのインスタンスを生成
mReward = new AdfurikunMovieReward("広告枠ID", this, false);
mReward.setAdfurikunMovieRewardListener(mListener);
}
Kotlin
private val mListener = object : AdfurikunMovieRewardListener {
override fun onPrepareSuccess(isManualMode: Boolean) {
// 広告の準備完了直後に実行する処理を記述してください
}
override fun onPrepareFailure(error: AdfurikunMovieError?) {
// 広告の準備失敗直後に実行する処理を記述してください
}
override fun onStartPlaying(data: MovieRewardData) {
// 動画の再生開始直後に実行する処理を記述してください
}
override fun onFinishedPlaying(data: MovieRewardData) {
// 広告の再生が完了した時に実行する処理を記述してください
}
override fun onFailedPlaying(data: MovieRewardData, error: AdfurikunMovieError?) {
// 動画の再生に失敗した時に実行する処理を記述してください
}
override fun onAdClose(data: MovieRewardData) {
// 動画の画面を閉じた時に実行する処理を記述してください
}
}
Java
AdfurikunMovieRewardListener mListener = new AdfurikunMovieRewardListener() {
@Override
public void onPrepareSuccess(boolean isManualMode) {
// 動画の再生が可能になりました。
// 状態をフラグなどで管理してください
}
@Override
public void onPrepareFailure(AdfurikunMovieError error) {
// 広告の読み込みが失敗になりました。
// もう一度広告の読み込みしてください。
}
@Override
public void onStartPlaying(MovieRewardData data) {
// 動画の再生を開始します。
// 各アドネットワークが用意したActivityが起動して、動画再生が始まります。
}
@Override
public void onFinishedPlaying(MovieRewardData data) {
// 動画の再生が完了しました。
// リワード 付与など、ユーザへの対応を行ってください。
}
@Override
public void onFailedPlaying(MovieRewardData data, AdfurikunMovieError error) {
// 動画の再生が失敗しました。
// 再生開始時にネットワークへ接続していない場合も、失敗として通知します。
}
@Override
public void onAdClose(MovieRewardData data) {
// 動画広告のActivityが終了しました。
// アプリのActivityが復帰します。
}
}
load
メソッドを呼ぶことで各アドネットワークへの表示準備を開始します。
Kotlin
mReward.load()
Java
mReward.load();
isPrepared
メソッドで広告準備が完了したかを確認し、play
メソッドで広告を表示します。
再生準備が完了したアドネットワークの中から、1つ広告が選択されます。
Kotlin
if ( mReward.isPrepared() ) {
// 再生開始
mReward.play()
}
Java
if ( mReward.isPrepared() ) {
// 再生開始
mReward.play();
}
Kotlin
override fun onDestroy() {
mReward?.onDestroy()
super.onDestroy()
}
Java
@Override
protected void onDestroy() {
mReward.onDestroy();
super.onDestroy();
}
ユーザーへの報酬の付与は、onAdClose
コールバックが呼ばれた際に行うことを推奨します。
Kotlin
private val mListener = object : AdfurikunMovieRewardListener {
// ...
override fun onAdClose(data: MovieRewardData) {
// このタイミングで報酬の付与を推奨
}
}
Java
AdfurikunMovieRewardListener mListener = new AdfurikunMovieRewardListener() {
// ...
@Override
public void onAdClose(MovieRewardData data){
// このタイミングで報酬の付与を推奨
}
}
AndroidManifest.xml にてlaunchMode
がsingleTask
に設定されている場合、広告再生中にホーム画面に戻り、アプリアイコンから復帰すると、広告画面が自動的に閉じます。この際、広告を最後まで視聴していないためonFinishedPlaying
コールバックは発生せず、onAdClose
コールバックのみが発生します。その結果、onAdClose
で報酬を付与している場合、ユーザーが広告を最後まで見なくても報酬が付与される可能性があります。
同様のケースで報酬を付与したくない場合、以下の実装で対応できます。
-
onFinishedPlaying
が発生したかどうかをフラグで管理する。 -
onAdClose
でフラグをチェックし、onFinishedPlaying
が発生済の場合のみ報酬を付与する。
private val mListener = object : AdfurikunMovieRewardListener {
// ...
override fun onStartPlaying(data: MovieRewardData) {
isInvokedFinishCallback = false // 広告再生時にフラグを初期化する
}
override fun onFinishedPlaying(data: MovieRewardData) {
isInvokedFinishCallback = true // onFinishedPlaying コールバックが発生したことを記録する
}
override fun onAdClose(data: MovieRewardData) {
if (isInvokedFinishCallback) { // onFinishedPlaying コールバックが発生したケースのみ報酬を付与する
// 報酬の付与
}
}
}
Java
AdfurikunMovieRewardListener mListener = new AdfurikunMovieRewardListener() {
// ...
@Override
public void onStartPlaying(MovieRewardData data) {
isInvokedFinishCallback = false; // 広告再生時にフラグを初期化する
}
@Override
public void onFinishedPlaying(MovieRewardData data) {
isInvokedFinishCallback = true; // onFinishedPlaying コールバックが発生したことを記録する
}
@Override
public void onAdClose(MovieRewardData data) {
if (isInvokedFinishCallback) { // onFinishedPlaying コールバックが発生したケースのみ報酬を付与する
// 報酬の付与
}
}
}