Android
Real Time
การเข้ารหัส Live Queries บนแอป Android ด้วย Back4App
10 นาที
แอปพลิเคชันเรียลไทม์โดยใช้ live queries บทนำ live queries ถูกออกแบบมาเพื่อใช้ใน แอปพลิเคชันที่ตอบสนองแบบเรียลไทม์ , ซึ่งการใช้พาราดิ้มการค้นหาแบบดั้งเดิมจะมีปัญหาบางอย่าง เช่น เวลาในการตอบสนองที่เพิ่มขึ้นและการใช้เครือข่ายและเซิร์ฟเวอร์ที่สูง live queries ควรใช้ในกรณีที่คุณต้องการอัปเดตหน้าเว็บอย่างต่อเนื่องด้วยข้อมูลใหม่จากฐานข้อมูล ซึ่งมักเกิดขึ้นในเกมออนไลน์ โปรแกรมส่งข้อความ และรายการที่ต้องทำที่แชร์กัน ส่วนนี้อธิบายวิธีการใช้ live query ของ 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 , ค้นหาแอปของคุณและคลิกที่ การตั้งค่าเซิร์ฟเวอร์ การตั้งค่าเซิร์ฟเวอร์ , จากนั้นค้นหาบล็อก “server url and live query” และคลิกที่ การตั้งค่า การตั้งค่า จากนั้น คุณจะมาถึงหน้าที่เหมือนกับด้านล่างนี้ ในหน้านี้คุณจะต้องตรวจสอบ เปิดใช้งานซับโดเมน back4app ของคุณ เปิดใช้งานซับโดเมน back4app ของคุณ ตัวเลือก เปิดใช้งาน live query เปิดใช้งาน live query ตัวเลือกและทุกคลาสที่คุณต้องการให้เปิดใช้งาน live query ตามที่แสดงด้านล่าง จำเป็นต้องเปิดใช้งาน webhosting เพื่อใช้ live queries เพราะโดเมนของคุณจะทำงานเป็นเซิร์ฟเวอร์สด หมายเหตุ เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับ webhosting ดูที่ คู่มือ webhosting ของ back4app 2 ตั้งค่า livequery client github อย่างเป็นทางการของ parse server มีการใช้งาน live query client สำหรับ android https //github com/parse community/parselivequery android จำเป็นต้องใช้งาน live query client อย่างเป็นทางการซึ่งทำงานได้ดี เพื่อทำเช่นนี้ให้เพิ่มบรรทัดต่อไปนี้ในแอปของคุณ app/build gradle app/build gradle ในส่วนของ dependencies และซิงค์โปรเจกต์ของคุณ 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 สำหรับคุณ เพื่อทำเช่นนี้คุณจะต้องให้ application id, javascript key และ 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