#目的
Androidアプリ開発における無料、かつ、簡単にランキング機能実装ができたのでメモします。
自前でのサーバ構築も不要です。
#背景
以前はLobiのRanking SDKを使用してランキング機能を実現できた様ですが、2018年2月28日でサービスが終了していました。
そこで代替手段として、ニフクラ mobile backendを使用したところ簡単にランキング機能が実装できたので本記事を投稿するに至りました。
#実装手順
####導入
下記マニュアルが非常に分かりやすいので、ご参照下さい。
http://mb.cloud.nifty.com/doc/current/introduction/quickstart_android.html
####実装
後述「サンプルソース」の使用部分(一部修正)を記載します。
#####ランキング登録
// 初期処理
NCMB.initialize(getContext(), /**ニフクラで発行したアプリケーションキー*/, /**ニフクラで発行したクライアントキー*/);
// クラスのNCMBObjectを作成
NCMBObject obj = new NCMBObject(/**ニフクラで登録したアプリ名*/)
// オブジェクトの値を設定
obj.put(/**クラス(テーブル)の項目名*/, /**パラメータ名*/);
// データストアへの登録
obj.saveInBackground(new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e != null) {
// 保存に失敗した場合の処理
} else {
// 保存に成功した場合の処理
}
}
});
#####ランキング取得
// ランキングを取得
List<Map<String, String>> rankingList = new ArrayList<>();
// 初期処理
NCMB.initialize(getActivity().getApplicationContext(), /**ニフクラで発行したアプリケーションキー*/, /**ニフクラで発行したクライアントキー*/);
// クエリを作成
NCMBQuery<NCMBObject> query = new NCMBQuery<>(/**ニフクラで登録したアプリ名*/);
// 昇順指定
query.addOrderByAscending(/**クラス(テーブル)の項目名*/);
// 降順指定
query.addOrderByDescending(/**クラス(テーブル)の項目名*/);
//検索件数を100件に設定
query.setLimit(100);
try {
// データストアでの検索を行う
List<NCMBObject> objects = query.find();
// バックグランドにて行う場合は下記
//List<NCMBObject> objects = query.findInBackground();
for (NCMBObject obj :objects) {
Map<String,String> map = new HashMap<>();
map.put(/**マップのキー*/,obj.getString(/**クラス(テーブル)の項目名*/));
rankingList.add(map);
}
} catch (NCMBException e) {
// Exception発生時の処理
}
#リンク
■ニフクラ mobile backend
http://mb.cloud.nifty.com/
■サンプルで開発したアプリ:
https://play.google.com/store/apps/details?id=esetomin.com.samplenc&hl=ja
※ランキング投稿と閲覧しかできない、しょっぱいアプリです。
■サンプルで開発したアプリのソース(一部差異があります):
https://github.com/nemuiKani/SampleNC-repository
#最後に
ニフクラ mobile backendを使用するとプッシュ通知や会員管理などできる様なので、試していきたいです。