楽天リワードSDK Android Ad 機能 - RakutenReward/RakutenRewardSDK GitHub Wiki

スタートガイド

こちらは、楽天リワードSDKをご利用の開発者様で、アプリネイティブ広告をご利用のためのガイドになります。 動作環境は楽天リワードSDKのドキュメントをご参照ください。(楽天リワードSDK) こちらの機能はSDK4.1バージョン以降になります。

導入手順

  1. アプリケーションを開発者ポータルに登録する(開発者ポータル)
  2. SDKをダウンロードページよりダウンロードする(SDKダウンロード)
  3. 開発者ポータルよりアプリを登録する(アプリごとにキーを取得する)
  4. SDKをプロジェクトにインポートする
  5. SDKを初期化する(初期化処理を行う)
  6. Adのレイアウトをアプリに追加する

SDKをAndroidのプロジェクトにインポートする

SDK(aarファイル)をプロジェクトにコピーする

build.gradle を修正する

楽天リワードSDKのAd機能では、いくつかの Google Play Service ライブラリを使用しています。 (バージョンは11以上を推奨します)

例)

implementation files('libs/rakutenreward-4.1.aar')
implementation 'com.android.support:appcompat-v7:26.0.0'
implementation 'com.google.android.gms:play-services-ads:11.8.0'
implementation 'com.google.android.gms:play-services-location:11.8.0'

Google のライブラリを使用する場合 maven のリポジトリを追加する必要があります。

repositories {
    maven { url "https://maven.google.com" }
}

もし gradle 3.x 以上をご利用の場合は以下になります。

repositories {
    google()
}

AndroidManifest.xml の設定

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- For Ad SDK-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

加えて、SDKで使用するActivityの追加が必要です。

<application>
 <!-- Reward Related Activity -->
    <activity android:name="jp.co.rakuten.reward.rewardsdk.api.activity.RakutenRewardSDKActivity"></activity>
    <activity android:name="jp.co.rakuten.reward.rewardsdk.api.activity.RakutenRewardBrowserActivity"></activity>
    
 <!-- Reward SDK application key -->
    <meta-data android:name="jp.co.rakuten.rewardsdk.appcode" android:value="{YOUR_APPLICATION_KEY}" />
    ...
</application>

Proguardの設定

SDKの一部のコードに対し、ProGuardの例外設定を行う必要があります。 下記をアプリケーションでご使用のProguard設定ファイル(例: proguard-rules.pro) に追記してください。

# Reward SDK
-keepattributes *Annotation*
-keepattributes Signature
-keep class jp.co.rakuten.reward.rewardsdk.api.** {
 public <fields>;
 public <methods>;
}

-keep public enum jp.co.rakuten.reward.rewardsdk.api.status.** {
 **[] $VALUES;
 public *;
}

# Ad SDK
-keep class jp.co.rakuten.reward.rewardsdk.ui.ads.** {
 public <fields>;
 public <methods>;
}

SDK の初期化

SDKの初期化に関しましては、楽天リワードSDK導入マニュアルを参照してください。

※こちらはリワードSDKのミッション機能を使う場合になります。ネイティブAdの機能のみを使う場合は以下を呼び出します。

RakutenRewardAds.initialize("YOUR_APP_CODE");

こちらは広告のUIを利用する前, ActivityのonCreateなどで呼ぶ必要があります。

Android 6 のパーミッションの設定について

Ad 機能では広告の最適化のためユーザの位置情報を取得しております。 位置情報を取得するため、Android 6 以上ではランタイムで権限を取得する必要があります。 以下は例です。

private final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 100;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 ....
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !checkPermission(getApplicationContext())) {
       ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    }
}

private boolean checkPermission(Context context) {
    return (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED)
            && (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)== PackageManager.PERMISSION_GRANTED);
}

SDKが提供する広告のサイズ

SDKでは3つのバナータイプとインタースティシャルタイプの広告を提供いたします。

広告名 サイズ クラス名
バナー(320x50) 320 x 50 jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADBannerView
バナー(320x100) 320 x 100 jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADBannerView
バナー(300x250) 300 x 250 jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADBannerView
インタースティシャル 全画面 jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADInterstitial

※ RADBannerView というクラスがありますがこちらは非推奨となっています。

バナータイプの広告を利用する

広告は60秒自動で更新されます(変更不可)。

XML レイアウトをご利用の場合

レイアウトXMLにRakutenADBannerView を追加します。  

<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:rakutenreward="http://schemas.android.com/apk/res-auto"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
    
   <jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADBannerView
 android:id="@+id/adbanner"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:gravity="center"
 android:layout_centerHorizontal="true"
 android:layout_alignParentBottom="true"
 android:layout_gravity="center"
 rakutenreward:locationId="Test"
 rakutenreward:adSize="BANNER"
 />
</RelativeLayout>

rakutenreward:locationId, rakutenreward:adSize は必ず指定してください。

※locationIdは、広告位置を区別してレポートに反映させるために使用します。(現在使用していませんが必須項目にしております)

※locationIdは英数字20文字まで使用可能です。

※rakutenreward:adSizeは、BANNERLARGEBANNERRECTANGLEが使用可能です。

コードで追加する場合

RakutenADBannerView bannerView = new RakutenADBannerView(this);
bannerView.setLocationId("test");
bannerView.setSize(RAdSize.RECTANGLE);
addContentView(bannerView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
bannerView.load();

その他の機能

RakutenAdViewListener

このリスナーは広告イベントのコールバックを提供します。

※こちらのクラスはインタースティシャル広告でもご使用できます。 使い方は同様です。

public interface RakutenAdViewListener {
    void didReceiveAd();
    void didFailedToReceiveAd(String message, int radErrorCode);
}
メソッド名 説明
didReceivedAd 広告を取得に成功した
didFailedToReceiveAd 広告の取得に失敗した

このコールバックを受け取るにはリスナーを実装してセットする必要があります。 (以下はその例になります)

public class AdSDKViewBannerTestActivity extends Activity implements RakutenAdViewListener {
 private final static String TAG = "AdSDKViewBannerActivity";

 private RakutenADBannerView radBannerView;   
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.acitivity_adsdk2_banner);
       this.radBannerView = findViewById(R.id.adbanner);
       this.radBannerView.setListener(this);
 }

   

 /**
 * RakutenAdViewListener
 */
 @Override
 public void didReceiveAd() {
       Log.i(TAG, "We received ad correctly.");
 }

 @Override
 public void didFailedToReceiveAd(String message, int radErrorCode) {
        Log.i(TAG, "Failed to receive ad.");
 }
}

エラーコード

didFailedToReceiveAd で受け取るエラーコードは以下のようになります。

エラー 説明
NetworkError 1001 ネットワークエラー
NoAvailableAd 1002 広告の供給が止まっています
NoLocationidError 1005 locationidが正しく設定されていません
AppCodeMissingError 1006 リワードSDKのAppCodeが正しく設定されていません
Unknown 9999 予期せぬエラーが発生しました

広告のリロード

loadメソッドを呼び出すことで広告をリロードできます

radBannerView.load(context);

サーチクーポンを利用する

楽天リワードSDKの広告では検索ワードに連動した広告(クーポン)を配信しております。

特定のワードやユーザ入力に連動した広告を出す場合は以下のメソッドを使って検索ワードを更新します。

radBannerView.setSearchWord("カバン");

※設定をしてもサーチクーポンが必ず表示されることはありません。

インタースティシャルタイプの広告を提供する

インタースティシャル広告を実装する手順は以下になります

(インタースティシャル広告は縦表示のみをサポートします。横表示の場合は表示されません。また 縦表示から横表示に変えた場合は自動的に閉じます)。

  1. RakutenADInterstitial のインスタンスを作成します。
  2. locationid を設定します。
  3. (任意)Listenerを設定します。
  4. loadAd() メソッドを呼び出します。

1. RakutenADInterstitial のインスタンスを作成します

public class AdSDKActivity extends Activity {
 private RakutenADInterstitial rakutenADInterstitial;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    rakutenADInterstitial = new RakutenADInterstitial(this);
 }
}

2. locationid を設定します

rakutenADInterstitial.setLocationId("abc");

※locationidは英数字20文字まで利用できます

3. (任意)Listenerを設定します

rakutenADInterstitial.setListener(this);

4. loadAd() メソッドを呼び出します

rakutenADInterstitial.loadAd();

広告の例

⚠️ **GitHub.com Fallback** ⚠️