楽天リワードSDK Android 導入手順 - RakutenReward/RakutenRewardSDK GitHub Wiki
楽天リワードSDKは、Android 4.0 以上をサポートしています。
(2018/09/17) Android 4.x に対するサポートを終了いたします。
楽天リワードSDKバージョン2.3ではAndroid 4向けアプリの組み込みは可能ですが、ユーザはリワードサービスを利用できません。
Ad機能に関してましてもユーザは利用できません。
(2022/03/01) バージョン5.6より Android 5.0 以上をサポートしています。
※バージョン4.2よりMavenをサポート致しました。gradleをご利用の方はSDKをAndroidのプロジェクトにインポートする(gradle) をご利用ください。
※バージョン4.4よりAndroidManifest.xmlのパーミッションの設定、および Activityの設定, proguardの設定は不要になりました。
※バージョン5.2より楽天市場の広告に関して、ディープリンクを採用し、一部の広告に関して楽天市場Androidアプリで開くようになりました
こちらをご参照くださいAndroid 12 Advertising ID について
こちらをご参照ください(Android 10について)
以下ではlibsフォルダーにコピーしています ※ バージョン 5.2よりjarからaarに変更になりました
SDKは Google の appcompat-v7 ライブラリを使用しています。
dependencies {
implementation files('libs/rakutenreward-2.3.jar')
implementation 'com.android.support:appcompat-v7:27.0.0'
}
gradleに関する記述の詳細はGradle ユーザガイドをご覧ください。
楽天リワードSDKバージョン2.0以上をご利用の場合、Google Mobile Ads を使用し広告ID を使用した広告配信を行なっております。 そのため以下の Google Play Service SDK のご利用をおすすめします。
dependencies {
compile 'com.google.android.gms:play-services-ads:xx.x.x'
}
※こちらのライブラリは 'com.google.android.gms:play-services-ads-identifier:xx.x.x' で代用可能です
10以上のバージョンをサポート、Ad SDKの機能をご利用の場合11以上を推奨いたします。
RewardSDKはMavenをサポートしております。 build.gradleに以下の記述をすることでバージョンの管理が可能です。
repositories {
maven { url "https://raw.github.com/Rakuten-Reward-SDK/Reward-SDK-Android/master" }
}
dependencies {
implementation 'jp.co.rakuten.reward.rewardsdk:rewardsdk:+'
}
SDKはインターネットへのアクセスを必要とするため、下記のパーミッションを追記してください。
<!-- Network permission -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
またAd SDKの機能をご利用の場合は以下の位置情報に関するパーミッションを追加してください。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<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 >
{YOUR_APPLICATION_KEY}の部分に開発者ポータルで発行したアプリケーションのApp Keyを使用します。
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 *;
}
Google Play Service SDKをご利用でない場合は以下の記述が必要になります。
-dontwarn jp.co.rakuten.reward.rewardsdk.**
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<activity android:name="jp.co.rakuten.reward.rewardsdk.api.activity.RakutenRewardSDKActivity"/>
<activity android:name="jp.co.rakuten.reward.rewardsdk.api.activity.RakutenRewardBrowserActivity"/>
proguard の設定はSDKのなかに組み込まれていますので、アプリ側で追加の設定は不要です。
リワード機能の使用方法(SDKの初期化の方法)は2通りあります。 1つはActivityクラスを継承したRakutenRewardBaseActivityクラスを継承したActivityを利用する方法 もう1つはご利用のActivityなどにRakutenRewardLifecycleのメソッドを直接呼ぶ方法です。
import jp.co.rakuten.reward.rewardsdk.api.activity.RakutenRewardBaseActivity;
public class MainActivity extends RakutenRewardBaseActivity {
RakutenRewardBaseActivityクラスは、自身のonCreate, onStart, onResume, onPause, onDestroy メソッド を利用して処理を行います。よってこれらのメソッドをオーバーライドする際は、下記のように親クラスのメソッドを呼ぶのを 忘れないでください。 ※RakutenRewardBaseActivityは、リワード機能にアクセスする全てのActivityで継承する必要があります。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
public void onStart() {
super.onStart();
...
}
@Override
public void onResume() {
super.onResume();
...
}
@Override
public void onPause() {
super.onPause();
...
}
@Override
public void onDestroy() {
super.onDestroy();
...
}
Activityがすでに他のクラスを継承しているなどの理由により継承が難しい場合は、下記のように RakutenRewardLifecycleのメソッドを直接呼ぶことでリワード機能が使用可能になります。 ※リワード機能にアクセスする全てのActivityで下記のメソッドを呼ぶ必要があります。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RakutenRewardLifecycle.onCreate(this);
}
@Override
protected void onStart() {
super.onStart();
RakutenRewardLifecycle.onStart(this);
}
@Override
protected void onResume() {
super.onResume();
RakutenRewardLifecycle.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
RakutenRewardLifecycle.onPause(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
RakutenRewardLifecycle.onDestroy();
}
ミッションを達成するにはアクションを送信する必要があります。 またミッションが達成されると、通知UIが表示されます(通知UIは変更可能です)。
ユーザがアクションを行なったら、下記のメソッドを実行してください。その際、ミッションに関連づけられた actionCode を引数として渡してください。
RakutenReward.getInstance().logAction(actionCode);
ユーザがアクションを実行してミッションが達成されると、通知UIが表示されます。 SDKはモーダル及びバナーの通知UIを用意しています。
バージョン5.9.0からは広告バナー(小)、 広告バナー(大)の通知UIを用意しています。
ミッション達成時の通知の方法は4通りあります。 上記のモーダル、バナーの通知UIを表示するパターンに加えて、通知UIを表示しない方式と、アプリ側で 任意の通知UIを設定する方法があります。 これらは開発者ポータルでミッションを設定する際に定義することができます。
通知タイプ | UI |
---|---|
モーダル | SDKが用意したモーダルUIが表示されます |
バナー | SDKが用意したバナーUIが表示されます |
カスタム | 開発者側で任意のUIを設定できます |
通知なし | 通知UIは表示されません |
広告バナー(小) | SDKが用意した広告バナーUIを表示する |
広告バナー(大) | SDKが用意した広告バナーUIを表示する |
ポータルボタンはリワードポータルへアクセスするためのボタンです。SDKが用意した RewardPortalButtonクラスを使用することで、アプリ内ポータルボタンを配置することが可能です。
ポータルボタンにはDarkとLightの2通りのカラータイプがあります。 背景が明るい色の場合はDarkを、背景が暗い場合はLightを使用してください。 初期値はLightに設定されています。
Dark
Light
ユーザミッションを達成したもののポイントをまだ取得していない場合、未獲得となっている件数が、 ポータルボタンの上に赤丸のバッジとして表示されます。バッジの位置はデフォルトでは右上ですが、 コードから変更することも可能です。(後述)
ポータルボタンを使用するActivityは、上述の通りRakutenRewardBaseActivityを継承するか、 RakutenRewardLifecycleのメソッドを呼ぶ必要があります。その上で、下記のように任意の箇所に RewardButtonを配置してください。
<jp.co.rakuten.reward.rewardsdk.api.ui.RewardButton
android:id="@+id/portalButton"
android:layout_width="55dp"
android:layout_height="55dp" />
// Get instance of portal button
portalButton = (RewardButton)findViewById(R.id.portalButton);
// Change color type of button
portalButton.setButtonColor(RewardButtonColorType.DARK);
// Change image of button
portalButton.setImage(R.drawable.custom_image);
// Change badge position of button
portalButton.setBadgePosition(BadgePosition.POSITION_BOTTOM_RIGHT);
ポータルボタンはSDKのセッションステータス(後述)がOnline以外の場合、グレーアウトしてタップ不能の 状態になります。 ActivityがRakutenRewardBaseActivityを継承している場合は、セッションステータスがOnlineになったタイミング でポータルボタンも自動的に使用可能になりますが、ActivityがRakutenRewardBaseActivityを継承していない場合、 下記のようにRakutenRewardListenerを実装してリスナーにセットしてください。
public class YourActivity extends Activity implements RakutenRewardListener {
@Override
protected void onStart() {
super.onStart();
// Set Listener
RakutenReward.getInstance().setListener(this);
RakutenRewardLifecycle.onStart(this);
}
}
下記のメソッドを呼ぶことで、ポータルボタンを使わずにポータルを表示することも可能です。
RakutenReward.getInstance().openPortal();
ポータルへの導線を独自に実装する場合は、下記の値を利用し、ポイント未獲得件数をユーザに示すようにしてください。 ユーザ自身にミッション機能に気づいてもらうために、必ず実装してください。 アプリのデザイン上なので難しい場合は、別途ご相談ください。
RakutenReward.getInstance().getUser().getUnclaimed();
※ポータルボタンをご利用でない場合、リワードへの導線文言は上記画像のように「楽天リワー ド」と置いてください。変更をご希望の際は、別途ご相談ください。