Swarmを使ったワールドランキングの実装③です。
本記事ではAchievements(実績)をアプリに実装させていきます。
Swarmへのユーザー登録~アプリの登録、SDKのダウンロードまでは
Swarmを使ったワールドランキングの実装①を参照してください。
アプリへSwarmを実装するまでは
Swarmを使ったワールドランキングの実装②を参照してください。
また、今回はSwarmを使ったワールドランキングの実装②で作った。
プロジェクトを元に進めていきますのでご注意ください。
はい始めましょうといいたいですが
その前にAchievementsを簡単に説明すると、
いわゆる称号みたいなものです。
例えば最大1000スコアであった場合、
ユーザーが900スコア以上たたき出したとします。
そしたら、あなたはすごいという事で称号をつけてあげます。
目に見えた目標を置くことでゲームにやりがいを
つけてあげるという感じです。
よくオンラインゲームだと敵をたくさん倒したりする人はデストロイヤー等
スピード系ならスピードスター等といった称号がついてたりしますね。
簡単な説明が済んだところで始めましょう。
①AchievementをSwarmに登録する。
まずSwarmにログインしAchievements画面へ行き
Achievementを新規登録しましょう。
#Swarm
http://swarmconnect.com/
1.ログインが完了したらメニューの中にある
「Achievements」をクリックします。
↓
2.「Achievements」画面にいったら
「Create new Achievement」をクリックし登録画面にいきましょう。
↓
3.各項目を入力しSubmitを押しましょう。
各項目の説明は下記になります。
・Achievement Title = Achievementのタイトルです。
・Achievement Description = Achievementの説明です。「Achievement Title」の下に表示されます。
・Hidden = Achievementをユーザーに表示させるかどうかです。
表示させない場合の使い方としては、隠したAchievement1をもっていないとAchievement2がとれないといった分けかた等ができますね。
・Order Id = Achievementの表示順です。
少ないほどAchievementリストの上部に表示されます。
・Points = ユーザーがAchievementを取ったときに付与されるSwarmポイントです。
Swarmポイントがどこに使えるかはわかりませんが、複数Achievementを作った場合、
合計で1000以上のポイントは付与できません。
例えばAchievement1を500Pointsで作った場合、
次から作れるAchievementには最大で500Pointsしか使えないという事です。
また合計が1000Pointsに達するとAchievementが作れなくなるので注意しましょう。
※作成済のAchievementのPointsを変えればまた作れるようになります。
このPointsは0でも作れるので、非表示のAchievement等は0にしたりなど工夫してください。
・Show to App Versions = SwarmAppバージョンです。今は使われてないので気にせずデフォルトでいいでしょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/d4/3e/j/t02200176_0800064112362627731.jpg?caw=800)
今回のサンプルでは下記のようにしました。
・Achievement Title = Super man
・Achievement Description = すごいって事
・Hidden = NO
・Order Id = 1
・Points = 500
・Show to App Versions = デフォルト
↓
4.作成したら、Achievementsに登録されたのを確認し「ID」をメモしましょう。
アプリ側でAchievementを操作するときはこのIDを使います。
考え方はLeaderboardsと同じですね。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/da/a1/j/t02200111_0800040312362627732.jpg?caw=800)
ここまできたらSwarmへの登録は終わりです。
②プロジェクトに実装しましょう。
冒頭でも触れましたが、今回はSwarmを使ったワールドランキングの実装②で作った。
プロジェクトを元に進めていきますのでご注意ください。
すでにプロジェクトにはSwarmが実装されているので
AndroidManifestだったりはいじりません。
今回はmain.xmlとjava部分だけをいじります。
1.main.xml
赤字部分を追記してください。
Achievements動作確認用にボタンを押したらAchievementを開放(登録)するボタンと
Achievementsのリストを表示するボタンを配置してみます。
------------------------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/send_ranking1"
android:text="ranking1へ100スコア登録"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/send_ranking2"
android:text="ranking2へ1.1スコア登録"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_ranking1"
android:text="ranking1を参照"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_ranking2"
android:text="ranking2を参照"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_Leaderboards"
android:text="Leaderboardsを表示"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- Achievements動作確認用のボタンを配置 -->
<Button
android:id="@+id/send_Achievements"
android:text="Achievementを開放"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_Achievements"
android:text="Achievementsを表示"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout>
------------------------------------------------------
↓
2.Java側
赤字部分を追記してください。
説明は毎度のようにコメント部分をみてくださいませ。
------------------------------------------------------
import java.util.HashMap;
import java.util.Map;
import com.swarmconnect.Swarm;
import com.swarmconnect.SwarmAchievement;
import com.swarmconnect.SwarmAchievement.GotAchievementsMapCB;
import com.swarmconnect.SwarmActiveUser;
import com.swarmconnect.SwarmActivity;
import com.swarmconnect.SwarmLeaderboard;
import com.swarmconnect.SwarmLeaderboard.GotLeaderboardCB;
import com.swarmconnect.delegates.SwarmLoginListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
//extends AvtivityをSwarmActivityに変えます。
//public class MainActivity extends Activity {
public class MainActivity extends SwarmActivity {
//リーダーボードに登録したり参照するためにSwarmLeaderboardを用意します。
public static SwarmLeaderboard swarm_leaderboard;
//Achievementsを開放したり参照するためにMapを用意します。
//今回はログイン時にコールバック(Achievecallback)をしてAchievementsを取得しています。
public static Map<Integer, SwarmAchievement> swarm_achievements = new HashMap<Integer, SwarmAchievement>();
//開放するAchievementのIDを変数:ACHIEVEMENT_IDに配置します。ご自分の登録したIDに直してください。
//もちろん変数などを使わないで直接でもいいです。
int ACHIEVEMENT_ID = 7427;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//initの第2引数にAppIDを第3引数を登録したAppKeyを
Swarm.init(this, 2689, "ced642681bd5690e933c5d137ebc16a4", mySwarmLoginListener);
btn = (Button)findViewById(R.id.send_ranking1);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.send_ranking2);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_ranking1);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_ranking2);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_Leaderboards);
btn.setOnClickListener(btnListener);
//Achievements動作確認用に追加したボタンをセットします。
btn = (Button)findViewById(R.id.send_Achievements);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_Achievements);
btn.setOnClickListener(btnListener);
}
//Swarmへのログイン処理********************************************************************
private SwarmLoginListener mySwarmLoginListener = new SwarmLoginListener() {
// This method is called when the login process has started
// (when a login dialog is displayed to the user).
public void loginStarted() {
Log.w("Exception","Exception");
}
// This method is called if the user cancels the login process.
public void loginCanceled() {
}
// This method is called when the user has successfully logged in.
public void userLoggedIn(SwarmActiveUser user) {
// Load our Leaderboard
//ログイン時にSwarmに登録されたAchievementsをコールバックでswarm_achievementsに渡します。
SwarmAchievement.getAchievementsMap(Achievecallback);
}
// This method is called when the user logs out.
public void userLoggedOut() {
}
};
//********************************************************************
//ボタン処理********************************************************************
private OnClickListener btnListener = new OnClickListener() {
public void onClick(View v) {
switch(v.getId()){
//Ranking1にスコア100を登録
case R.id.send_ranking1:
//Ranking1のリーダーボードに登録する
//Ranking1のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4623, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらsubmitScore()で登録
swarm_leaderboard = lb;
swarm_leaderboard.submitScore(100, null, null);
}
});
break;
//Ranking2にスコア1.1を登録
case R.id.send_ranking2:
//Ranking2のリーダーボードに登録する
//Ranking2のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4625, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらsubmitScore()で登録
swarm_leaderboard = lb;
swarm_leaderboard.submitScore((float) 1.1, null, null);
}
});
break;
//Ranking1のスコアを参照
case R.id.show_ranking1:
//Ranking1のリーダーボードを参照する
//Ranking1のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4623, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらshowLeaderboard()で参照
swarm_leaderboard = lb;
swarm_leaderboard.showLeaderboard();
}
});
break;
//Ranking2のスコアを参照
case R.id.show_ranking2:
//Ranking2のリーダーボードを参照する
//Ranking2のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4625, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらshowLeaderboard()で参照
swarm_leaderboard = lb;
swarm_leaderboard.showLeaderboard();
}
});
break;
//全リーダーボードを参照
case R.id.show_Leaderboards:
//全リーダーボードを参照する場合はshowLeaderboards()でOK
//ダッシュボードならshowDashboard()
Swarm.showLeaderboards();
break;
//Achievementを開放
case R.id.send_Achievements:
//取得したswarm_achievementsがnullではないか &
//Map<Integer, SwarmAchievement>.get(ACHIEVEMENT_ID).unlockedで対象Achievementが開放されていないか確認。
//まだ開放されていなければACHIEVEMENT_IDに入っているIDのAchievementの開放処理へ。
//※本来はさらにこの前にスコアが1000を超えてたらなどの分岐処理もいれる感じです。
if (swarm_achievements != null &&swarm_achievements.get(ACHIEVEMENT_ID).unlocked == false){
//Map<Integer, SwarmAchievement>.get(ACHIEVEMENT_ID).unlock()で開放処理をします。
swarm_achievements.get(ACHIEVEMENT_ID).unlock();
}
break;
//Achievementsを参照
case R.id.show_Achievements:
//showAchievementsでAchievementsを参照できます。
Swarm.showAchievements();
break;
default:
break;
}
}
};
//swarm_leaderboardに送られてきたLeaderboard IDをセットするコールバック****************************
GotLeaderboardCB callback = new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard leaderboard) {
if (leaderboard != null) {
// Save the leaderboard for later use
swarm_leaderboard = leaderboard;
}
}
};
//************************************************************************************
//Achievementsを取得するコールバック**********************************************************
GotAchievementsMapCB Achievecallback = new GotAchievementsMapCB() {
public void gotMap(Map achievements) {
// Store the map of achievements somewhere to be used later.
swarm_achievements = achievements;
}
};
//************************************************************************************
}
------------------------------------------------------
コメントが分かりづらかったらごめんなさい。。
んで動作を確認してみましょう。
まずAchievementsを参照してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/a0/de/p/t02200367_0480080012362638881.png?caw=800)
Swarmに登録したSuper manが表示されています。
まだ開放されていないのでトロフィーがグレー表示です。
開放してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/57/a5/p/t02200367_0480080012362638883.png?caw=800)
成功するとカスタムトーストで「Achievement Unlocked!」とでます。
またAchievementsを参照してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/84/83/p/t02200367_0480080012362638882.png?caw=800)
今度はトロフィーに色がつきました。
以上でAchievementsも簡単に実装できます。
お疲れ様でした。
説明がおかしくて逆に難しくなってたらごめんなさい。。
最後にプロジェクトも置いておきます。
>ここ
本記事ではAchievements(実績)をアプリに実装させていきます。
Swarmへのユーザー登録~アプリの登録、SDKのダウンロードまでは
Swarmを使ったワールドランキングの実装①を参照してください。
アプリへSwarmを実装するまでは
Swarmを使ったワールドランキングの実装②を参照してください。
また、今回はSwarmを使ったワールドランキングの実装②で作った。
プロジェクトを元に進めていきますのでご注意ください。
はい始めましょうといいたいですが
その前にAchievementsを簡単に説明すると、
いわゆる称号みたいなものです。
例えば最大1000スコアであった場合、
ユーザーが900スコア以上たたき出したとします。
そしたら、あなたはすごいという事で称号をつけてあげます。
目に見えた目標を置くことでゲームにやりがいを
つけてあげるという感じです。
よくオンラインゲームだと敵をたくさん倒したりする人はデストロイヤー等
スピード系ならスピードスター等といった称号がついてたりしますね。
簡単な説明が済んだところで始めましょう。
①AchievementをSwarmに登録する。
まずSwarmにログインしAchievements画面へ行き
Achievementを新規登録しましょう。
#Swarm
http://swarmconnect.com/
1.ログインが完了したらメニューの中にある
「Achievements」をクリックします。
↓
2.「Achievements」画面にいったら
「Create new Achievement」をクリックし登録画面にいきましょう。
↓
3.各項目を入力しSubmitを押しましょう。
各項目の説明は下記になります。
・Achievement Title = Achievementのタイトルです。
・Achievement Description = Achievementの説明です。「Achievement Title」の下に表示されます。
・Hidden = Achievementをユーザーに表示させるかどうかです。
表示させない場合の使い方としては、隠したAchievement1をもっていないとAchievement2がとれないといった分けかた等ができますね。
・Order Id = Achievementの表示順です。
少ないほどAchievementリストの上部に表示されます。
・Points = ユーザーがAchievementを取ったときに付与されるSwarmポイントです。
Swarmポイントがどこに使えるかはわかりませんが、複数Achievementを作った場合、
合計で1000以上のポイントは付与できません。
例えばAchievement1を500Pointsで作った場合、
次から作れるAchievementには最大で500Pointsしか使えないという事です。
また合計が1000Pointsに達するとAchievementが作れなくなるので注意しましょう。
※作成済のAchievementのPointsを変えればまた作れるようになります。
このPointsは0でも作れるので、非表示のAchievement等は0にしたりなど工夫してください。
・Show to App Versions = SwarmAppバージョンです。今は使われてないので気にせずデフォルトでいいでしょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/d4/3e/j/t02200176_0800064112362627731.jpg?caw=800)
今回のサンプルでは下記のようにしました。
・Achievement Title = Super man
・Achievement Description = すごいって事
・Hidden = NO
・Order Id = 1
・Points = 500
・Show to App Versions = デフォルト
↓
4.作成したら、Achievementsに登録されたのを確認し「ID」をメモしましょう。
アプリ側でAchievementを操作するときはこのIDを使います。
考え方はLeaderboardsと同じですね。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/da/a1/j/t02200111_0800040312362627732.jpg?caw=800)
ここまできたらSwarmへの登録は終わりです。
②プロジェクトに実装しましょう。
冒頭でも触れましたが、今回はSwarmを使ったワールドランキングの実装②で作った。
プロジェクトを元に進めていきますのでご注意ください。
すでにプロジェクトにはSwarmが実装されているので
AndroidManifestだったりはいじりません。
今回はmain.xmlとjava部分だけをいじります。
1.main.xml
赤字部分を追記してください。
Achievements動作確認用にボタンを押したらAchievementを開放(登録)するボタンと
Achievementsのリストを表示するボタンを配置してみます。
------------------------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/send_ranking1"
android:text="ranking1へ100スコア登録"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/send_ranking2"
android:text="ranking2へ1.1スコア登録"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_ranking1"
android:text="ranking1を参照"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_ranking2"
android:text="ranking2を参照"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_Leaderboards"
android:text="Leaderboardsを表示"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- Achievements動作確認用のボタンを配置 -->
<Button
android:id="@+id/send_Achievements"
android:text="Achievementを開放"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/show_Achievements"
android:text="Achievementsを表示"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout>
------------------------------------------------------
↓
2.Java側
赤字部分を追記してください。
説明は毎度のようにコメント部分をみてくださいませ。
------------------------------------------------------
import java.util.HashMap;
import java.util.Map;
import com.swarmconnect.Swarm;
import com.swarmconnect.SwarmAchievement;
import com.swarmconnect.SwarmAchievement.GotAchievementsMapCB;
import com.swarmconnect.SwarmActiveUser;
import com.swarmconnect.SwarmActivity;
import com.swarmconnect.SwarmLeaderboard;
import com.swarmconnect.SwarmLeaderboard.GotLeaderboardCB;
import com.swarmconnect.delegates.SwarmLoginListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
//extends AvtivityをSwarmActivityに変えます。
//public class MainActivity extends Activity {
public class MainActivity extends SwarmActivity {
//リーダーボードに登録したり参照するためにSwarmLeaderboardを用意します。
public static SwarmLeaderboard swarm_leaderboard;
//Achievementsを開放したり参照するためにMap
//今回はログイン時にコールバック(Achievecallback)をしてAchievementsを取得しています。
public static Map<Integer, SwarmAchievement> swarm_achievements = new HashMap<Integer, SwarmAchievement>();
//開放するAchievementのIDを変数:ACHIEVEMENT_IDに配置します。ご自分の登録したIDに直してください。
//もちろん変数などを使わないで直接でもいいです。
int ACHIEVEMENT_ID = 7427;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//initの第2引数にAppIDを第3引数を登録したAppKeyを
Swarm.init(this, 2689, "ced642681bd5690e933c5d137ebc16a4", mySwarmLoginListener);
btn = (Button)findViewById(R.id.send_ranking1);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.send_ranking2);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_ranking1);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_ranking2);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_Leaderboards);
btn.setOnClickListener(btnListener);
//Achievements動作確認用に追加したボタンをセットします。
btn = (Button)findViewById(R.id.send_Achievements);
btn.setOnClickListener(btnListener);
btn = (Button)findViewById(R.id.show_Achievements);
btn.setOnClickListener(btnListener);
}
//Swarmへのログイン処理********************************************************************
private SwarmLoginListener mySwarmLoginListener = new SwarmLoginListener() {
// This method is called when the login process has started
// (when a login dialog is displayed to the user).
public void loginStarted() {
Log.w("Exception","Exception");
}
// This method is called if the user cancels the login process.
public void loginCanceled() {
}
// This method is called when the user has successfully logged in.
public void userLoggedIn(SwarmActiveUser user) {
// Load our Leaderboard
//ログイン時にSwarmに登録されたAchievementsをコールバックでswarm_achievementsに渡します。
SwarmAchievement.getAchievementsMap(Achievecallback);
}
// This method is called when the user logs out.
public void userLoggedOut() {
}
};
//********************************************************************
//ボタン処理********************************************************************
private OnClickListener btnListener = new OnClickListener() {
public void onClick(View v) {
switch(v.getId()){
//Ranking1にスコア100を登録
case R.id.send_ranking1:
//Ranking1のリーダーボードに登録する
//Ranking1のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4623, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらsubmitScore()で登録
swarm_leaderboard = lb;
swarm_leaderboard.submitScore(100, null, null);
}
});
break;
//Ranking2にスコア1.1を登録
case R.id.send_ranking2:
//Ranking2のリーダーボードに登録する
//Ranking2のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4625, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらsubmitScore()で登録
swarm_leaderboard = lb;
swarm_leaderboard.submitScore((float) 1.1, null, null);
}
});
break;
//Ranking1のスコアを参照
case R.id.show_ranking1:
//Ranking1のリーダーボードを参照する
//Ranking1のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4623, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらshowLeaderboard()で参照
swarm_leaderboard = lb;
swarm_leaderboard.showLeaderboard();
}
});
break;
//Ranking2のスコアを参照
case R.id.show_ranking2:
//Ranking2のリーダーボードを参照する
//Ranking2のLeaderboard IDをコールバックで取得する
SwarmLeaderboard.getLeaderboardById(4625, new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard lb) {
//返ってきたLeaderboard IDをセットしたらshowLeaderboard()で参照
swarm_leaderboard = lb;
swarm_leaderboard.showLeaderboard();
}
});
break;
//全リーダーボードを参照
case R.id.show_Leaderboards:
//全リーダーボードを参照する場合はshowLeaderboards()でOK
//ダッシュボードならshowDashboard()
Swarm.showLeaderboards();
break;
//Achievementを開放
case R.id.send_Achievements:
//取得したswarm_achievementsがnullではないか &
//Map<Integer, SwarmAchievement>.get(ACHIEVEMENT_ID).unlockedで対象Achievementが開放されていないか確認。
//まだ開放されていなければACHIEVEMENT_IDに入っているIDのAchievementの開放処理へ。
//※本来はさらにこの前にスコアが1000を超えてたらなどの分岐処理もいれる感じです。
if (swarm_achievements != null &&swarm_achievements.get(ACHIEVEMENT_ID).unlocked == false){
//Map<Integer, SwarmAchievement>.get(ACHIEVEMENT_ID).unlock()で開放処理をします。
swarm_achievements.get(ACHIEVEMENT_ID).unlock();
}
break;
//Achievementsを参照
case R.id.show_Achievements:
//showAchievementsでAchievementsを参照できます。
Swarm.showAchievements();
break;
default:
break;
}
}
};
//swarm_leaderboardに送られてきたLeaderboard IDをセットするコールバック****************************
GotLeaderboardCB callback = new GotLeaderboardCB() {
public void gotLeaderboard(SwarmLeaderboard leaderboard) {
if (leaderboard != null) {
// Save the leaderboard for later use
swarm_leaderboard = leaderboard;
}
}
};
//************************************************************************************
//Achievementsを取得するコールバック**********************************************************
GotAchievementsMapCB Achievecallback = new GotAchievementsMapCB() {
public void gotMap(Map
// Store the map of achievements somewhere to be used later.
swarm_achievements = achievements;
}
};
//************************************************************************************
}
------------------------------------------------------
コメントが分かりづらかったらごめんなさい。。
んで動作を確認してみましょう。
まずAchievementsを参照してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/a0/de/p/t02200367_0480080012362638881.png?caw=800)
Swarmに登録したSuper manが表示されています。
まだ開放されていないのでトロフィーがグレー表示です。
開放してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/57/a5/p/t02200367_0480080012362638883.png?caw=800)
成功するとカスタムトーストで「Achievement Unlocked!」とでます。
またAchievementsを参照してみましょう。
![$うつ病miwawaの日記帳](https://stat.ameba.jp/user_images/20130104/18/miwawa08/84/83/p/t02200367_0480080012362638882.png?caw=800)
今度はトロフィーに色がつきました。
以上でAchievementsも簡単に実装できます。
お疲れ様でした。
説明がおかしくて逆に難しくなってたらごめんなさい。。
最後にプロジェクトも置いておきます。
>ここ