IGAWリワードサーバー連携:クライアント方式
IGAWリワードサーバーから渡すポストバックを受信する自体サーバーの構築が難しい場合、追加でクライアント連携を通じてリワード付与処理を行うことができます。
AndroidManifest.xml
リワードポストバックをクライアントで処理するため、リワードサーバーの連携方法を修正します。
<application></application> タグの中で、以下のようにリワードサーバー連携方式を「client」に設定します。
<meta-data android:name="igaworks_reward_server_type" android:value="client"/>
リワードイベントリスナーの登録・実装
IGAWリワードサーバーから渡されるリワード情報を受信するためのイベントリスナーを登録・実装します。
リスナーの詳細
1. onGetRewardInfo(boolean isSuccess, String resultMsg, IgawRewardItem[] rewardItems)
IGAWリワードサーバーにある、処理されていないリワード情報を渡します。
リワード情報は、IgawRewardItemタイプの rewardItem[i] 配列で渡されることになり、渡される配列に含まれた情報は以下の通りになります。
- rewardItem[i].getCampaignKey()
: ユーザーが完了したキャンペーンのキャンペーンキー
- rewardItem[i].getCampaignTitle()
: ユーザーが完了したキャンペーン名
- rewardItem[i].getRTID() :
完了トランザクションID
- rewardItem[i].getRewardQauntity()
: ユーザーに付与する仮想通貨の量
- rewardItem[i].didGiveRewardItem()
: リワード付与処理の完了情報をIGAWサーバーに渡すためのAPI
IGAWリワードサーバーに該当情報を送信するため、5番項目didGiveRewardItem APIを呼び出して正常に結果を受信した場合、1~4までの情報を利用して、ユーザーにリワード付与処理を行います。
2. onDidGiveRewardItemResult(boolean isSuccess, String resultMsg, int resultCode, String completedRewardKey)
上記で呼び出したdidGiveRewardItem APIの呼び出し結果を渡します。渡された completedRewardKeyを利用してリワード重複付与の防止処理を行います。
IgawCommon.setClientRewardEventListener(new IgawRewardItemEventListener() {
@Override
public void onGetRewardInfo(boolean isSuccess, String resultMsg, IgawRewardItem[] rewardItems) {
for (IgawRewardItem rewardItem : rewardItems) {
//以下の情報を利用してユーザーにリワードを付与します。
rewardItem.getCampaignKey();
rewardItem.getCampaignTitle();
rewardItem.getRTID();
rewardItem.getRewardQuantity();
//didGiveRewardItemを呼び出して、リワード付与処理完了をIGAWリワードサーバーに通知します。
rewardItem.didGiveRewardItem();
}
}
@Override
public void onDidGiveRewardItemResult(boolean isSuccess, String resultMsg, int resultCode, String completedRewardKey) {
// TODO Auto-generated method stub
//同一のcompletedRewardKeyに対して重複付与防止処理を行います。
}
});
リワード情報の要求
リワードイベントリスナーは、オファーウォールの起動・終了の際に呼び出され、IGAWリワードサーバーで処理されていないリワード情報がある場合、情報が渡されます。
上記の時点以外に、リワード情報を確認したい時点で、以下のAPIを呼び出してIGAWリワードサーバーから情報を確認することができます。
IgawAdpopcornExtension.getClientPendingRewardItems(MainActivity.this);