楽天リワードSDK Android 機能詳細 - RakutenReward/RakutenRewardSDK GitHub Wiki
バージョン4.2.1 (JavaDoc API SDK 4.2.1)
バージョン4.2 (JavaDoc API SDK 4.2)
バージョン2.3 (JavaDoc API SDK 2.3)
アプリからSDK側の情報を取得する場合、RakutenRewardクラスの下記のプロパティにアクセスしてください。
プロパティ | 型 | 説明 |
---|---|---|
status | Status | リワード機能の状態 |
user | RakutenRewardUser | ユーザの情報(ポイント、ログイン状態など) |
optedOut | Boolean | リワード昨日の opt-in/out 設定 |
uiEnabled | Boolean | 通知UIの表示/非表示設定 |
version | String | SDKのバージョン |
Statusはリワード機能の状態を返す enum で、下記のように定義されています。
package jp.co.rakuten.reward.rewardsdk.api.status;
public enum Status {
ONLINE,
OFFLINE,
APPCODEINVALID
}
値 | 説明 |
---|---|
ONLINE | リワード機能は正常に動作しています |
OFFLINE | 通信またはその他の問題により、リワード機能は正常に動作していません |
APPCODEINVALID | AppCodeが不正のため、リワード機能は正常に動作していません |
RakutenRewardStatusの値は、下記のように取得することができます。
Status status = RakutenReward.getInstance().getStatus();
SDKのバージョンはString形式で定義されています。例) "1.0" 下記の方法でSDKのバージョンを取得することができます。
String sdkVersion = RakutenReward.getInstance().getVersion();
ユーザはポータルの設定画面から、リワード機能をオプトアウト(無効化)することができます。 ユーザがリワード機能を無効化した場合、optedOutの値はtrueになります。
Boolean isOptedOut = RakutenReward.getInstance().isOptedOut();
ユーザはポータルの設定画面から、ミッション達成時の通知 UI の表示有無を選択することができま す。ユーザが通知 UI を非表示に設定した場合、uiEnabled の値は false になります。
Boolean isUIEnabled = RakutenReward.getInstance().isUiEnabled();
RakutenRewardUser クラスはユーザ情報を持つクラスで、下記のプロパティにアクセス可能です。
プロパティ | 型 | 説明 |
---|---|---|
unclaimed | Int | ポイント未獲得ミッション数 |
point | Int | 現在のポイント数 |
signin | Bool | 楽天アカウントへのログイン状態 |
achievementList | List | MissionAchievementDataリスト |
Userクラスのオブジェクトは、下記のように取得できます。
RakutenRewardUser user = RakutenReward.getInstance().getUser();
ユーザがミッションを達成すると、SDK はモーダル・バナー等の達成通知 UI を表示します。 これらの通知 UI を表示させたくない場合、下記のメソッドを呼ぶことで通知 UI の表示/非表示を切り替える ことができます。
RakutenReward.getInstance().setUiEnabled(getApplicationContext(), false);
MissionAchievementData はユーザが達成したミッションの情報を定義したクラスで、 下記のプロパティを保持しています。
プロパティ | 型 | 説明 |
---|---|---|
iconUrl | String | アイコン画像の URL |
instruction | String | ミッションの説明 |
action | String | アクションコード |
notificationType | String | 通知タイプ |
achievedDate | Date | ミッション達成日 |
point | Int | 達成時に得られるポイント数 |
custom | Bool | 通知タイプが Custom の場合は true, それ以外の場合は false |
RakutenRewardListener は、下記のメソッドを宣言するインタフェースです。これを実装することに より、ステータスやユーザ情報の変更、ミッションの達成等があった場合に通知を受け取ることが できます。
package jp.co.rakuten.reward.rewardsdk.api.listener;
public interface RakutenRewardListener {
public void onUnclaimedAchievement(MissionAchievementData achievement); public void
onUserUpdated(RakutenRewardUser user);
public void onSDKStateChanged(Status status);
}
上記の通知を受け取りたい場合、下記の例を参考に RakutenRewardListener の実装を行なってください。 ※RakutenRewardBaseActivity を継承している場合、RakutenRewardBaseActivity 自身が RakutenRewardListener の実装を行なっているため、この処理は必要ありません
public class ListenerObject implements RakutenRewardListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set Listener
RakutenReward.getInstance().setListener(this);
}
ユーザ情報に変更があった時に呼ばれます。 (例:ユーザがログイン又はログアウトした時)
ユーザがミッションを達成した際に呼ばれます。ミッションの達成通知 UI をカスタムに設定している場合、 このメソッド内に独自UIを表示する処理を実装することで、独自 UI を表示することができます。
Status の値に変更があった時に呼ばれます。 例えば1日1回、初回起動時にミッションを達成させたい場合、 このコールバックを利用して実装することが可能です。 下記のように、ステータスが Online になったタイミングを検知して、logAction メソッドを呼んでください。 ※1日1回等の判定は別途必要です
@Override
public void onSDKStateChanged(Status status) {
switch (status) {
case ONLINE: logAciton(actionCodeOfLaunchMisssion);
break;
case OFFLINE:
break;
case APPCODEINVALID:
break;
}
}
- アクションを送信する
RakutenReward.getInstance().logAction("Example");
- RakutenRewardListenerの onUnclaimedAchievement でミッション達成の通知を受け取る
public interface RakutenRewardListener {
void onUnclaimedAchievement(MissionAchievementData achievement);
}
- didUpdateUnclaimedAchievement で UI を表示するコードを実装する
@Override
public void onUnclaimedAchievement(MissionAchievementData missionAchievementData) {
if (missionAchievementData.isCustom() && RewardConfiguration.getInstance().isUiEnabled()) {
// UIの表示/非表示設定を確認します
// ノーティフィケーションタイプがカスタムであるかどうかを確認
// カスタムUIをメインスレッドで表示させる
}
}
ポイントは、missionAchievement オブジェクトの claim メソッドをコールすることでできます
@Override
public void onUnclaimedAchievement(MissionAchievementData missionAchievementData) {
// UIのコードは書いておく
// この操作は、例えばユーザーがクレイムのためのボタンを押したときなどにご使用ください
missionAchievementData.claim();
}
actionCode により分類することで複数のミッションで異なるUIを表示させることができます
@Override
public void onUnclaimedAchievement(MissionAchievementData missionAchievementData) {
if (missionAchievementData.isCustom() && RewardConfiguration.getInstance().isUiEnabled()) {
// ノーティフィケーションタイプがカスタムであるかどうかを確認
// UIの表示/非表示設定を確認します
if (missionAchievementData.getAction().equals("ExampleMission1ActionCode")) {
// ExampleMission1ActionCodeに対応するUIを表示させる
} else {
// 違うUIを表示させる
}
}
}
バージョン6.1.0以降、新しいLogAction APIが追加されました。このAPIは、成功または失敗のコールバックをリッスンできます。
RakutenReward.getInstance().logAction("<actioncode>", new RakutenRewardApiListener() {
@Override
public void onSuccess() {
// log action 成功
}
@Override
public void onError(RakutenRewardApiError error) {
// log action 失敗
}
});
APIが失敗した場合、エラーコードが返されます。
RakutenRewardApiError | 説明 |
---|---|
INVALID_ACTION_CODE | 提供されたアクションコードが無効です |
INVALID_APP_CODE | 提供されたappCode が無効です |
MISSION_REACHED_CAP | ミッションはすでに上限に達しています |
SDK_FEATURE_DISABLED | Reward SDKの機能が無効になっています |
UNEXPECTED_ERROR | 予期しないエラーが発生しました |
USER_NOT_CONSENT | ユーザーがまだ同意を提供していません |
こちらの機能はSDKバージョン5.3.0以降になります。
広告ポータルを開くには以下のメソッドを使用します。 (戻り値は表示に成功したかしないかなります)
bool success = RakutenReward.getInstance().openAdPortal(context);
広告ポータルを閉じたかどうかを判定するには、リクエストコードを入れていただき、 Activity が閉じられた時の onActivityResult で判定することが可能です
bool success = RakutenReward.getInstance().openAdPortal(context, 100);
RakutenReward.getInstance().openSignin();
楽天リワードでは広告の最適化のため位置情報の取得を行なっていますが、これを開発者様側の設定でオフにすることが 可能です。
RewardConfiguration.getInstance().setLocation(false);
このAPIはリワードSDKの初期化の前に呼び出す必要があります。
※ SDK バージョン 4.3 以降では位置情報の取得はありません。(デフォルトで取得いたしません)