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

APIドキュメンテーション

バージョン4.2.1 (JavaDoc API SDK 4.2.1)

バージョン4.2 (JavaDoc API SDK 4.2)

バージョン2.3 (JavaDoc API SDK 2.3)

詳細な機能について

RakutenRewardクラス

アプリからSDK側の情報を取得する場合、RakutenRewardクラスの下記のプロパティにアクセスしてください。

プロパティ 説明
status Status リワード機能の状態
user RakutenRewardUser ユーザの情報(ポイント、ログイン状態など)
optedOut Boolean リワード昨日の opt-in/out 設定
uiEnabled Boolean 通知UIの表示/非表示設定
version String SDKのバージョン

Status

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();

Version

SDKのバージョンはString形式で定義されています。例) "1.0" 下記の方法でSDKのバージョンを取得することができます。

String sdkVersion = RakutenReward.getInstance().getVersion();

OptedOut

ユーザはポータルの設定画面から、リワード機能をオプトアウト(無効化)することができます。 ユーザがリワード機能を無効化した場合、optedOutの値はtrueになります。

Boolean isOptedOut = RakutenReward.getInstance().isOptedOut();

uiEnabled

ユーザはポータルの設定画面から、ミッション達成時の通知 UI の表示有無を選択することができま す。ユーザが通知 UI を非表示に設定した場合、uiEnabled の値は false になります。

Boolean isUIEnabled = RakutenReward.getInstance().isUiEnabled();

RakutenRewardUser クラス

RakutenRewardUser クラスはユーザ情報を持つクラスで、下記のプロパティにアクセス可能です。

プロパティ  説明
unclaimed Int ポイント未獲得ミッション数
point Int  現在のポイント数
signin Bool 楽天アカウントへのログイン状態
achievementList List MissionAchievementDataリスト

Userクラスのオブジェクトは、下記のように取得できます。

RakutenRewardUser user = RakutenReward.getInstance().getUser();

通知UIの非表示

ユーザがミッションを達成すると、SDK はモーダル・バナー等の達成通知 UI を表示します。 これらの通知 UI を表示させたくない場合、下記のメソッドを呼ぶことで通知 UI の表示/非表示を切り替える ことができます。

RakutenReward.getInstance().setUiEnabled(getApplicationContext(), false);

MissionAchievementData クラス

MissionAchievementData はユーザが達成したミッションの情報を定義したクラスで、 下記のプロパティを保持しています。

プロパティ  説明
iconUrl String アイコン画像の URL
instruction String ミッションの説明
action String アクションコード
notificationType String 通知タイプ
achievedDate Date ミッション達成日
point Int 達成時に得られるポイント数
custom Bool 通知タイプが Custom の場合は true, それ以外の場合は false

RakutenRewardListener

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);
  }

各コールバックメソッドについて

onUserUpdated(RakutenRewardUser user)

ユーザ情報に変更があった時に呼ばれます。 (例:ユーザがログイン又はログアウトした時)

onUnclaimedAchievement(MissionAchievementData achievement)

ユーザがミッションを達成した際に呼ばれます。ミッションの達成通知 UI をカスタムに設定している場合、 このメソッド内に独自UIを表示する処理を実装することで、独自 UI を表示することができます。

onSDKStateChanged(Status status)

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;
  }
}

ミッション達成通知にカスタムのUIを実装する方法

  1. アクションを送信する
RakutenReward.getInstance().logAction("Example");
  1. RakutenRewardListenerの onUnclaimedAchievement でミッション達成の通知を受け取る
public interface RakutenRewardListener {    
  void onUnclaimedAchievement(MissionAchievementData achievement);
}
  1. 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を表示させる
        }
    }      
}

Log Action について

バージョン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 以降では位置情報の取得はありません。(デフォルトで取得いたしません)

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