Android
Real Time
Интеграция Live Query в Android приложения с Back4App
11 мин
приложение в реальном времени с использованием живых запросов введение живые запросы предназначены для использования в приложениях с реакцией в реальном времени , где использование традиционной парадигмы запросов может привести к некоторым проблемам, таким как увеличение времени отклика и высокая нагрузка на сеть и сервер живые запросы следует использовать в случаях, когда необходимо постоянно обновлять страницу свежими данными из базы данных, что часто происходит в, но не ограничивается, онлайн играх, мессенджерах и совместных списках дел этот раздел объясняет, как использовать живой запрос back4app в среде android через back4app этот учебник использует базовое приложение, созданное в android studio arctic fox 2020 3 1 patch 1 с compilesdk 30 compilesdk 30 , minsdk 21 minsdk 21 и targetsdk 30 targetsdk 30 в любое время вы можете получить доступ к полному проекту через наши репозитории на github репозиторий примера на kotlin репозиторий примера на java цель вот предварительный просмотр того, что мы собираемся достичь предварительные условия чтобы завершить этот учебник, нам нужно android studio приложение, созданное на back4app примечание следуйте за учебником по созданию нового parse app чтобы узнать, как создать parse app на back4app android приложение, подключенное к back4app примечание следуйте за учебником по установке parse sdk чтобы создать проект android studio, подключенный к back4app устройство (или виртуальное устройство ) с android 4 1 (jelly bean) или новее 1 включите live query перед тем как начать кодирование, необходимо иметь класс в вашей базе данных для включения live query для этого просто найдите ваше приложение на сайте back4app , и нажмите на панель управления панель управления > создать класс создать класс , как показано здесь теперь, чтобы включить функцию live query, войдите в свою учетную запись на сайте back4app , найдите свое приложение и нажмите на настройки сервера настройки сервера , затем найдите блок “url сервера и live query” и нажмите на настройки настройки затем вы попадете на страницу, подобную приведенной ниже на этой странице вам нужно будет проверить активировать ваш поддомен back4app активировать ваш поддомен back4app опцию, активировать live query активировать live query опцию и все классы, для которых вы хотите активировать live query, как показано ниже необходимо активировать webhosting для использования live queries, потому что ваш домен будет работать как живой сервер примечание чтобы узнать больше о webhosting, смотрите учебник по webhosting back4app 2 настройка клиента livequery официальный github parse server содержит реализацию клиента live query для android https //github com/parse community/parselivequery android необходимо реализовать официальный клиент 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 для вас для этого вам нужно будет предоставить идентификатор приложения, его javascript ключ и также url сервера live query, который вы настроили на первом шаге 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() у нас есть адаптер recyclerview с именем 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) сделано! на данный момент у вас есть знания о том, как использовать live queries для создания реактивных приложений в реальном времени в среде android, а также о том, как настроить live query с помощью back4app теперь вы можете начать внедрять это в своем собственном приложении теперь вы готовы исследовать основные функции parse server https //www back4app com/product/parse server и дополнения back4app https //www back4app com/product/addons