【Android】簡単にランキング機能を実装

1.目的

Androidアプリ開発において、無料、かつ、簡単にランキング機能が実装できたので備忘の意味を込めて記事を投稿します。サーバ等のインフラ構築も不要です。

2.前提

本記事ではJavaを使用しております。また、対象とするSDKバージョンは下記の通りです。

minSdkVersion 19
targetSdkVersion 26

3.調査した背景

以前はLobiのRanking SDKを使用してランキング機能を実現できた様ですが、2018年2月28日でサービスが終了していました。
そこで代替手段として、ニフクラ mobile backendを使用したところ簡単にランキング機能が実装できたので本記事を投稿するに至りました。

4.実装手順

設定
SDKのダウンロードやAPIキーの取得などを行います。下記マニュアルが非常に分かりやすいです。ご参照下さい。
http://mb.cloud.nifty.com/doc/current/introduction/quickstart_android.html

実装
Gitにアップしたソースの重要部分を記載します。

■ランキング登録部分(EditFragment.java)

// 初期処理
NCMB.initialize(getContext(), /**ニフクラで発行したアプリケーションキー*/,  /**ニフクラで発行したクライアントキー*/);
// クラスのNCMBObjectを作成
NCMBObject obj = new NCMBObject(/**ニフクラで登録したアプリ名*/)
// オブジェクトの値を設定
obj.put(/**クラス(テーブル)の項目名*/, /**パラメータ名*/);
// データストアへの登録
obj.saveInBackground(new DoneCallback() {
  @Override
  public void done(NCMBException e) {
      if (e != null) {
          // 保存に失敗した場合の処理
      } else {
          // 保存に成功した場合の処理
     }
  }
});

■ランキング取得部分(RankingFragment.java)

// ランキングを取得
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発生時の処理
}

5.関連リンク

■ニフクラ mobile backend:
http://mb.cloud.nifty.com/
■GitのURL:
https://github.com/nemuiKani/SampleNC-repository

この記事が気に入ったらサポートをしてみませんか?