Androidデベロッパーのための手軽なOCAP統合

Android開発者のための手間いらずなOCAP統合
著者:Nate Robinson(ArcBlockのモバイルエンジニア)
以前にiOS向けの簡単な統合ウォークスルーをご覧になったかと思いますが、Androidユーザーの方々は手をこまねいているのではないかと思います。本日は、最初のいくつかの記事をベースに、ArcBlock Android SDKを使ったクイック統合をご紹介します。この記事の全体的なコンセプトはiOSと同じです:ArcBlock Android SDKを使ってシンプルなアプリを開発する方法です。さっそく始めましょう!
1. ArcBlock Android SDKの詳細な入門ドキュメント
リンクをクリックして、ArcBlock Android SDKの詳細な入門ドキュメントを一読されることをお勧めします。このドキュメントには、SDK全体の使い方が詳しく記載されています。
以下は入門ドキュメントの概要です:
- Maven を適切に設定し、ライブラリを
implementationに追加する - schema.jsonをダウンロードし、.graphqlファイルを作成して、ファイルディレクトリを設定する
- 一般的なデータクエリ
- CoreKitBeanMapperの初期化
- Query の初期化
- データキャプチャリスニングイベントのセットアップを含むCoreKitViewModelの初期化
- ページングデータクエリ
- CoreKitPagedHelperの初期化
- CoreKitBeanMapperの初期化
- データキャプチャリスニングイベントのセットアップを含むCoreKitPagedViewModelの初期化
- リスニングを伴うデータのサブスクライブ
- 対応するABCoreKitClientのSocketスイッチを開く
- Subscription の初期化
- データキャプチャリスニングイベントのセットアップを含むCoreKitSubViewModelの初期化
CustomType と ABCoreKitClient の初期化に関するセクションには特に注意してください。ArcBlock Android SDK入門ドキュメント - その他の設定には、詳細な説明とコード例が記載されています。
2. ArcBlock Android SDKを使ったアプリ開発の例
まず、最終的なアプリの外観から始めましょう。全体的な機能はそれほど複雑ではありません。ブロックはページングによってクエリされ、各四角いブロックはそこで行われるトランザクションを表しています。四角いブロックの色の濃さはトランザクションのサイズによって決まります。ブロックをクリックするとトランザクション詳細インターフェースに移動し、「view more」をクリックするとブロックトランザクションページビューインターフェースにスキップします:

このアプリは3つのデータクエリを使用しています:
- ブロックページングクエリ
- ブロックトランザクションページングクエリ
- ブロックトランザクション詳細クエリ
上記の3つのクエリはOCAP Playgroundに保存されています。興味があれば、クエリ全体とPlaybookを探索してみてください。
アプリのプロジェクトコードはここに保存されています:プロジェクトコード
リポジトリをローカルに直接クローンして実行し、具体的なコードを確認してください。
2.1 ホームブロックページネーションインターフェース
ブロックのページングクエリの中核ロジックは MainActivity.java の initData() メソッドに実装されており、以下のコードに注目してください:
mBlocksByHeightQueryViewModel.getCleanQueryData().observe(this, new Observer<CoreKitPagedBean<List<BlocksByHeightQuery.Datum>>>() {
@Override
public void onChanged(@Nullable CoreKitPagedBean<List<BlocksByHeightQuery.Datum>> coreKitPagedBean) {
//1. handle return data
if (coreKitPagedBean.getStatus() == CoreKitBean.SUCCESS_CODE) {
if (coreKitPagedBean.getData() != null) {
// new a old list
List<BlocksByHeightQuery.Datum> oldList = new ArrayList<>();
oldList.addAll(mBlocks);
// set mBlocks with new data
mBlocks = coreKitPagedBean.getData();
DiffUtil.DiffResult result = DiffUtil.calculateDiff(new CoreKitDiffUtil<>(oldList, mBlocks), true);
// need this line , otherwise the update will have no effect
mListBlocksAdapter.setNewListData(mBlocks);
result.dispatchUpdatesTo(mListBlocksAdapter);
refreshNextAndPre();
}
}
//2. view status change and loadMore component need
if (coreKitPagedHelper.isHasMore()) {
mListBlocksAdapter.setEnableLoadMore(true);
mListBlocksAdapter.loadMoreComplete();
} else {
mListBlocksAdapter.loadMoreEnd();
}
}
});ABCoreKitClient を初期化する際に ResponseFetcher を ApolloResponseFetchers.CACHE_AND_NETWORK に設定しているため、実際にはクエリごとにコールバックイベントが 2 回発生します。ページを効率よく再読み込みして更新するために、ここでは Android の DiffUtil を使用しています。
2.2 ブロックトランザクションページングインターフェース
BlockTxsActivity.java でも、ページネーションロジックは最初の画面と同様です。
2.3 ブロックトランザクション詳細
具体的なコードは TxsDetailActivity.java にあり、シンプルなクエリと結果表示を使用しています。
3. まとめ
Android SDK の入門を読み、コードを確認し、デモアプリを実行すれば、ArcBlock Android SDK を使ったアプリ開発の流れを一通り体験できます。もちろん、ArcBlock Android SDK の価値はこれだけではありません。その機能をさらに探るために、引き続き OCAP Playground を試してみてください。自分自身のアイデアを考え、ArcBlock Android SDK を使って Android クライアントで実装してみましょう。
頑張ってください!
このページに関わるもの
製品
-
OCAP
active
チェーンごとにクライアントを用意するのではなく、一つのインターフェースでチェーン上のデータを問い合わせるためのプロトコル。ArcBlock が関連特許を保有しています。