Android
Real Time
ライブクエリでAndroidリアルタイム機能を実装する方法
10 分
ライブクエリを使用したリアルタイムアプリケーション はじめに ライブクエリは、 リアルタイム反応型アプリケーション で使用されることを目的としています。従来のクエリパラダイムを使用するだけでは、応答時間の増加や高いネットワークおよびサーバー使用量などの問題が発生する可能性があります。ライブクエリは、データベースから新しいデータが継続的に更新されるページが必要な場合に使用されるべきであり、これはオンラインゲーム、メッセージングクライアント、共有のtodoリストなどでよく発生しますが、これに限りません。 このセクションでは、 back4app のライブクエリをandroid環境で使用する方法を説明します。 このチュートリアルでは、 compilesdk 30 compilesdk 30 、 minsdk 21 minsdk 21 、および targetsdk 30 targetsdk 30 を使用して、android studio arctic fox 2020 3 1 patch 1で作成された基本アプリを使用します。 いつでも、私たちのgithubリポジトリを通じて完全なプロジェクトにアクセスできます。 kotlinの例リポジトリ javaの例リポジトリ 目標 ここに、私たちが達成しようとしていることのプレビューがあります: 前提条件 このチュートリアルを完了するには、 android studio back4appで作成されたアプリ。 注意 新しいparseアプリのチュートリアル を参照して、back4appでparseアプリを作成する方法を学んでください。 back4appに接続されたandroidアプリ。 注意 parse sdkのインストールチュートリアル を参照して、back4appに接続されたandroid studioプロジェクトを作成してください。 android 4 1(jelly bean)以上を実行しているデバイス(または 仮想デバイス )。 1 ライブクエリを有効にする コーディングを始める前に、ライブクエリを有効にするためにデータベースにクラスを持っている必要があります。そのためには、単にアプリを見つけてください back4appのウェブサイト , そして ダッシュボード ダッシュボード > クラスを作成 クラスを作成 をクリックします。 今、ライブクエリ機能を有効にするには、 back4appのウェブサイト にログインし、アプリを見つけて、 サーバー設定 サーバー設定 をクリックし、「サーバーurlとライブクエリ」ブロックを見つけて、 設定 設定 をクリックします。 次に、以下のようなページに到着します。このページでは、 バック4アプリのサブドメインを有効にする バック4アプリのサブドメインを有効にする オプション、 ライブクエリを有効にする ライブクエリを有効にする オプション、そしてライブクエリを有効にしたいすべてのクラスをチェックする必要があります。以下のように ライブクエリを使用するには、 webhosting を有効にする必要があります。なぜなら、あなたのドメインがライブサーバーとして機能するからです。 注意 webhostingについて詳しく知りたい場合は、 back4app webhostingチュートリアル 2 livequeryクライアントの設定 parse serverの公式github には、 android https //github com/parse community/parselivequery android 用のlive query clientの実装があります。公式のlive queryクライアントを実装する必要があります。これを行うには、アプリの app/build gradle app/build gradle ファイルの依存関係セクションに以下の行を追加し、プロジェクトを同期してください app/build gradle 1 dependencies { 2 3 // don't forget to change the line below with the latest version of parse sdk for android 4 implementation "com github parse community parse sdk android\ parse 1 26 0" 5 implementation 'com github parse community\ parselivequery android 1 2 2' 6 7 } このプロジェクトでは、 message message という名前のクラスも作成します。このクラスにはメッセージが含まれます。 3 クエリにサブスクライブする live queriesを使用するには、まず livequeryclient livequeryclient を作成して、websocket接続を管理します。これを行うには、アプリケーションid、javascriptキー、および最初のステップで設定したlive queryのサーバーurlを提供する必要があります。 1 parse initialize(new parse configuration builder(this) 2 applicationid(getstring(r string back4app app id)) 3 clientkey(getstring(r string back4app client key)) 4 server(getstring(r string back4app server url)) 5 build());1 parse initialize(parse configuration builder(this) 2 applicationid(getstring(r string back4app app id)) 3 clientkey(getstring(r string back4app client key)) 4 server(getstring(r string back4app server url)) 5 build()) 初期化のためのコードは、 livequeryclient livequeryclient は以下の通りです 1 parselivequeryclient parselivequeryclient = parselivequeryclient factory getclient();1 val parselivequeryclient = parselivequeryclient factory getclient() リサイクラービューアダプターの名前は messageadapter messageadapter messageadapter 関数は、オブジェクトが追加、削除、または更新されたときにトリガーされます。ここでは、私たちの messageadapter messageadapter 関数です。 1 public void additem(parseobject t) { 2 this list add(t); 3 notifyiteminserted(list size() 1); 4 } 5 6 public void removeitem(parseobject object) { 7 for (int i = 0; i < list size(); i++) { 8 if (list get(i) getobjectid() equals(object getobjectid())){ 9 list remove(i); 10 notifyitemremoved(i); 11 notifyitemrangechanged(i, list size()); 12 return; 13 } 14 } 15 } 16 public void updateitem(parseobject object) { 17 for (int i = 0; i < list size(); i++) { 18 if (list get(i) getobjectid() equals(object getobjectid())){ 19 list set(i,object); 20 notifydatasetchanged(); 21 return; 22 } 23 } 24 }1 fun additem(t parseobject?) { 2 list!! add(t!!) 3 notifydatasetchanged() 4 } 5 6 fun removeitem(`object` parseobject) { 7 for (i in list!! indices) { 8 if (list!!\[i] objectid == `object` objectid) { 9 list!! removeat(i) 10 notifyitemremoved(i) 11 notifyitemrangechanged(i, list!! size) 12 return 13 } 14 } 15 } 16 17 fun updateitem(`object` parseobject) { 18 for (i in list!! indices) { 19 if (list!!\[i] objectid == `object` objectid) { 20 list!!\[i] = `object` 21 notifydatasetchanged() 22 return 23 } 24 } 25 } 次に、どのタイプのオブジェクトを購読したいかに応じて parsequery parsequery を作成する必要があります。サブスクリプションはイベントエミッターであり、クエリを満たすオブジェクトに変更があったときにイベントを発火します。 この例では、基本的なクエリを作成し、すべての変更を message message オブジェクトに対して購読します。 クエリとサブスクリプションの詳細については、 parse公式クエリドキュメント を参照してください。 1 parsequery\<parseobject> parsequery = new parsequery<>("message"); 2 subscriptionhandling = parselivequeryclient subscribe(parsequery); 3 subscriptionhandling handlesubscribe(q > { 4 subscriptionhandling handleevent(subscriptionhandling event create, (query, object) > { 5 mainactivity this runonuithread(() > { 6 messagesadapter additem(object); 7 }); 8 }); 9 subscriptionhandling handleevent(subscriptionhandling event delete, (query, object) > { 10 mainactivity this runonuithread(() > { 11 messagesadapter removeitem(object); 12 }); 13 }); 14 subscriptionhandling handleevent(subscriptionhandling event update, (query, object) > { 15 mainactivity this runonuithread(() > { 16 messagesadapter updateitem(object); 17 }); 18 }); 19 });1 val parsequery = parsequery\<parseobject>("message") 2 subscriptionhandling = parselivequeryclient!! subscribe(parsequery) 3 subscriptionhandling!! handlesubscribe { subscriptionhandling!! handleevent(subscriptionhandling event create 4 ) { parsequery\<parseobject?>?, `object` parseobject? > 5 runonuithread { messagesadapter!! additem(`object`) } 6 } 7 subscriptionhandling!! handleevent(subscriptionhandling event delete 8 ) { parsequery\<parseobject?>?, `object` parseobject? > 9 runonuithread { messagesadapter!! removeitem(`object`!!) } 10 } 11 subscriptionhandling!! handleevent(subscriptionhandling event update 12 ) { parsequery\<parseobject?>?, `object` parseobject? > 13 runonuithread { messagesadapter!! updateitem(`object`!!) } 14 } 15 } 注意 アプリ内でこれらのイベントがすべてトリガーされます。また、back4app(テーブルまたはjavascriptコンソールから)からこれらの作成、更新、削除イベントをトリガーすることもできます。 完了しました! この時点で、android環境でリアルタイムの反応型アプリケーションを作成するためのlive queriesの使用方法と、back4appを使用してlive queryを設定する方法についての知識を持っています。これで、自分のアプリに実装を開始できます。 あなたは今、 parse serverのコア機能 https //www back4app com/product/parse server と back4appのアドオン https //www back4app com/product/addons を探求する準備が整いました。