楽天リワードSDK Android Ad 機能 - RakutenReward/RakutenRewardSDK GitHub Wiki
こちらは、楽天リワードSDKをご利用の開発者様で、アプリネイティブ広告をご利用のためのガイドになります。 動作環境は楽天リワードSDKのドキュメントをご参照ください。(楽天リワードSDK) こちらの機能はSDK4.1バージョン以降になります。
- アプリケーションを開発者ポータルに登録する(開発者ポータル)
- SDKをダウンロードページよりダウンロードする(SDKダウンロード)
- 開発者ポータルよりアプリを登録する(アプリごとにキーを取得する)
- SDKをプロジェクトにインポートする
- SDKを初期化する(初期化処理を行う)
- Adのレイアウトをアプリに追加する
楽天リワード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()
}
<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>
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のミッション機能を使う場合になります。ネイティブAdの機能のみを使う場合は以下を呼び出します。
RakutenRewardAds.initialize("YOUR_APP_CODE");
こちらは広告のUIを利用する前, ActivityのonCreateなどで呼ぶ必要があります。
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では3つのバナータイプとインタースティシャルタイプの広告を提供いたします。
広告名 | サイズ | クラス名 |
---|---|---|
バナー(320x50) | 320 x 50 | jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADBannerView |
インタースティシャル | 全画面 | jp.co.rakuten.reward.rewardsdk.ui.ads.layout.RakutenADInterstitial |
※ RADBannerView というクラスがありますがこちらは非推奨となっています。
広告は60秒自動で更新されます(変更不可)。
レイアウト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は、BANNER、 LARGEBANNER、 RECTANGLEが使用可能です。
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();
このリスナーは広告イベントのコールバックを提供します。
※こちらのクラスはインタースティシャル広告でもご使用できます。 使い方は同様です。
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("カバン");
※設定をしてもサーチクーポンが必ず表示されることはありません。
インタースティシャル広告を実装する手順は以下になります
(インタースティシャル広告は縦表示のみをサポートします。横表示の場合は表示されません。また 縦表示から横表示に変えた場合は自動的に閉じます)。
- RakutenADInterstitial のインスタンスを作成します。
- locationid を設定します。
- (任意)Listenerを設定します。
- loadAd() メソッドを呼び出します。
public class AdSDKActivity extends Activity {
private RakutenADInterstitial rakutenADInterstitial;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rakutenADInterstitial = new RakutenADInterstitial(this);
}
}
rakutenADInterstitial.setLocationId("abc");
※locationidは英数字20文字まで利用できます
rakutenADInterstitial.setListener(this);
rakutenADInterstitial.loadAd();