Quickstarters
Feature Overview
How to build a backend for SwiftUI?
40 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการสร้างแบ็กเอนด์ที่สมบูรณ์สำหรับแอป swiftui บน ios โดยใช้ back4app เราจะแสดงให้คุณเห็นวิธีการรวม parse swift sdk เข้ากับโปรเจกต์ swiftui ของคุณและใช้ประโยชน์จากฟีเจอร์สำคัญของ back4app—เช่น การจัดการฐานข้อมูล, ฟังก์ชัน cloud code, rest และ graphql apis, การตรวจสอบสิทธิ์ผู้ใช้, และการค้นหาแบบเรียลไทม์—เพื่อสร้างแบ็กเอนด์ที่ปลอดภัยและสามารถขยายได้ วิธีการนี้ช่วยให้คุณเก็บข้อมูลได้อย่างปลอดภัย, ดำเนินการ ฝั่งเซิร์ฟเวอร์ โดยไม่ต้องตั้งค่าโครงสร้างพื้นฐานของคุณเอง, และขยาย แอป ios หรือ แอปเว็บ ได้อย่างง่ายดายตามที่ต้องการ คุณจะเห็นด้วยว่า การตั้งค่า back4app ที่รวดเร็วและสภาพแวดล้อมที่ใช้งานง่ายสามารถลดเวลาและความพยายามได้อย่างมากเมื่อเปรียบเทียบกับการกำหนดค่าเซิร์ฟเวอร์และฐานข้อมูลของคุณเองด้วยตนเอง เมื่อสิ้นสุด คุณจะเข้าใจ วิธีการสร้างแบ็กเอนด์สำหรับ swiftui ที่สามารถขยายไปยังการตั้งค่าการผลิตหรือรวมกับตรรกะและ apis ที่กำหนดเอง มาลงมือสร้างแบ็กเอนด์ที่แข็งแกร่งและ สามารถขยายได้ โดยมีค่าใช้จ่ายน้อยที่สุด! ข้อกำหนดเบื้องต้น บัญชี back4app และโปรเจกต์ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณยังไม่มีบัญชี คุณสามารถสร้างบัญชีได้ฟรี ตามคำแนะนำด้านบนเพื่อเตรียมโปรเจกต์ของคุณ สภาพแวดล้อมการพัฒนา swiftui พื้นฐาน คุณจะต้องติดตั้ง xcode บนเครื่องของคุณและตั้งค่าโปรเจกต์ swiftui หรือ ios เบื้องต้น swift package manager หรือ cocoapods เพื่อเพิ่ม parse swift sdk เอกสารประกอบ parse swift sdk https //github com/netreconlab/parse swift ความคุ้นเคยกับ swift และ swiftui หากคุณเป็นมือใหม่ใน swiftui ให้ตรวจสอบ เอกสารประกอบ swiftui ของ apple https //developer apple com/documentation/swiftui ก่อนเริ่ม ตรวจสอบให้แน่ใจว่าทุกอย่างอยู่ในที่ที่เหมาะสมก่อนที่คุณจะเริ่มต้น การตั้งค่าโปรเจกต์ back4app ของคุณและเตรียมสภาพแวดล้อม swiftui ในเครื่องของคุณจะช่วยให้คุณติดตามได้ง่ายขึ้น ขั้นตอนที่ 1 – การตั้งค่าโปรเจกต์ back4app สร้างโปรเจกต์ใหม่ ขั้นตอนแรกในการสร้างแบ็กเอนด์ swiftui ของคุณบน back4app คือการสร้างโปรเจกต์ใหม่ หากคุณยังไม่ได้สร้างโปรเจกต์หนึ่ง โปรดทำตามขั้นตอนเหล่านี้ เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “แอปใหม่” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “swiftui backend tutorial”) เมื่อโปรเจกต์ถูกสร้างขึ้น คุณจะเห็นมันถูกแสดงในแดชบอร์ด back4app ของคุณ โปรเจกต์นี้จะเป็นพื้นฐานสำหรับการตั้งค่าทั้งหมดที่กล่าวถึงในบทแนะนำนี้ เชื่อมต่อกับ parse swift sdk back4app ขึ้นอยู่กับ parse platform ในการจัดการข้อมูลของคุณ ให้ฟีเจอร์เรียลไทม์ จัดการการตรวจสอบสิทธิ์ผู้ใช้ และอื่นๆ การเชื่อมต่อแอปพลิเคชัน swiftui ของคุณกับ back4app เกี่ยวข้องกับการติดตั้ง parse swift sdk และเริ่มต้นด้วยข้อมูลประจำตัวจากแดชบอร์ด back4app ของคุณ ดึงคีย์ parse ของคุณ ในแดชบอร์ด back4app ของคุณ ให้ไปที่ “การตั้งค่าแอป” หรือ “ความปลอดภัย & คีย์” เพื่อค้นหา หมายเลขประจำแอปพลิเคชัน และ คีย์ลูกค้า (หรือคีย์ javascript) คุณจะพบ url ของ parse server (มักอยู่ในรูปแบบ https //parseapi back4app com ) ติดตั้ง parse swift sdk หากใช้ swift package manager , เปิดโปรเจกต์ของคุณใน xcode และจากนั้น ไฟล์ → เพิ่มแพ็กเกจ → ป้อน url https //github com/netreconlab/parse swift git เลือก “ขึ้นไปยังเวอร์ชันหลักถัดไป” จากกฎเวอร์ชันและยืนยัน หากใช้ cocoapods pod 'parseswiftog' เริ่มต้น parse ในแอปของคุณ ตัวอย่างเช่น ใน โครงสร้างแอป ของคุณ @main struct myapp app { init() { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } var body some scene { windowgroup { contentview() } } } เมื่อคุณทำขั้นตอนนี้เสร็จสิ้น คุณได้สร้างการเชื่อมต่อที่ปลอดภัยระหว่างส่วนหน้าของ swiftui และแบ็กเอนด์ของ back4app แล้ว ทุกคำขอและการทำธุรกรรมข้อมูลจะถูกจัดการโดย parse swift sdk ซึ่งช่วยลดความซับซ้อนของการเรียก rest หรือ graphql ด้วยตนเอง (แม้ว่าคุณยังสามารถใช้เมื่อจำเป็น) ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล การบันทึกและการค้นหาข้อมูล เมื่อคุณตั้งค่าโครงการ back4app และรวม parse swift sdk แล้ว คุณสามารถเริ่มบันทึกและเรียกคืนข้อมูลได้ ตอนนี้เรามีตัวอย่าง parseobject สมมติว่าเรามี todo struct import parseswift struct todo parseobject { // parseobject conformance var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } การบันทึก todo ใหม่ func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { let savedtodo = try await todo save() print("todo saved successfully \\(savedtodo)") } catch { print("error saving todo \\(error)") } } การค้นหาทุก todo func fetchtodos() async { do { let todos = try await todo query() find() print("fetched todos \\(todos)") } catch { print("error fetching todos \\(error)") } } หรือคุณสามารถใช้ back4app’s rest api endpoints, หรือ graphql curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } การมีตัวเลือกหลายอย่าง (parse swift sdk, rest, graphql) ช่วยให้คุณเลือกวิธีการที่เหมาะสมที่สุดสำหรับการทำงานของคุณ การออกแบบสคีมาและประเภทข้อมูล โดยค่าเริ่มต้น, parse อนุญาตให้ สร้างสคีมาแบบทันที , แต่คุณยังสามารถกำหนดคลาสของคุณในแดชบอร์ด back4app เพื่อควบคุมได้มากขึ้น ไปที่ส่วน “database” ในแดชบอร์ด back4app ของคุณ สร้างคลาสใหม่ (เช่น “todo”) และเพิ่มคอลัมน์ที่เกี่ยวข้อง เช่น title (string) และ iscompleted (boolean) back4app รองรับประเภทข้อมูลต่างๆ string , number , boolean , object , date , file , pointer , array , relation , geopoint , และ polygon คุณสามารถเลือกประเภทที่เหมาะสมสำหรับแต่ละฟิลด์ back4app ยังมี ai agent ที่สามารถช่วยคุณออกแบบโมเดลข้อมูลของคุณ เปิด ai agent จากแดชบอร์ดแอปของคุณ อธิบายโมเดลข้อมูลของคุณ ด้วยภาษาง่ายๆ (เช่น “กรุณาสร้างสคีมาคลาส todo ใหม่ ”) ให้ ai agent สร้างสคีมาสำหรับคุณ ข้อมูลเชิงสัมพันธ์ หากคุณมีข้อมูลเชิงสัมพันธ์—เช่น, หมวดหมู่ ที่ชี้ไปยังหลาย งานที่ต้องทำ —คุณสามารถใช้ พอยเตอร์ หรือ ความสัมพันธ์ ใน parse ได้ ตัวอย่างเช่น struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtodowithcategory(categoryid string, title string) async { var todo = todo() todo title = title // construct pointer let categorypointer = pointer\<category>(objectid categoryid) todo category = categorypointer do { try await todo save() } catch { print("error creating todo with category relationship \\(error)") } } เมื่อทำการค้นหา คุณยังสามารถ include ข้อมูลพอยเตอร์ let query = todo query() include("category") do { let todoswithcategory = try await query find() print("todos with category \\(todoswithcategory)") } catch { print("error fetching todos \\(error)") } การค้นหาสด สำหรับการอัปเดตแบบเรียลไทม์ back4app มี live queries ในแอป swiftui ของคุณ คุณสามารถสมัครสมาชิกการเปลี่ยนแปลงในคลาสเฉพาะ เปิดใช้งาน live queries ในแดชบอร์ด back4app ของคุณภายใต้ server settings สมัครสมาชิก ในโค้ด // example snippet using the parse swift subscription system task { let subscription = try todo query() subscribecallback() // react to events for await event in subscription { switch event { case entered(let todo) print("new todo entered \\(todo)") case updated(let todo) print("todo updated \\(todo)") case left(let todo) print("todo deleted or left subscription \\(todo)") default break } } } เมื่อใดก็ตามที่ todo ถูกสร้าง อัปเดต หรือถูกลบบนเซิร์ฟเวอร์ แอปของคุณจะได้รับการแจ้งเตือนแบบเรียลไทม์ ฟีเจอร์นี้มีประโยชน์มากสำหรับแอปที่ทำงานร่วมกันหรือแอปที่มีความไดนามิกซึ่งต้องการการซิงค์ข้อมูลทันที ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps กลไกความปลอดภัยของ back4app back4app ให้ access control lists (acls) และ class level permissions (clps) เพื่อความปลอดภัยของข้อมูลที่แข็งแกร่ง สิ่งเหล่านี้ช่วยให้คุณจำกัดว่าใครสามารถอ่านหรือเขียนข้อมูลได้ตามวัตถุหรือคลาส ทำให้มั่นใจได้ว่าผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถแก้ไขข้อมูลของคุณได้ access control lists (acls) an acl ถูกนำไปใช้กับวัตถุแต่ละรายการ ตัวอย่างเช่น เพื่อให้แน่ใจว่าผู้ใช้เฉพาะสามารถอ่าน/เขียน todo func createprivatetodo(title string, user user) async { var todo = todo() todo title = title var acl = parseacl() // grant read/write to the owner only acl setreadaccess(true, for user) acl setwriteaccess(true, for user) todo acl = acl do { let saved = try await todo save() print("private todo saved \\(saved)") } catch { print("error saving private todo \\(error)") } } class level permissions (clps) clps กำหนดค่าเริ่มต้นของคลาสทั้งหมด เช่น คลาสนั้นสามารถอ่านหรือเขียนได้สาธารณะหรือไม่ หรือเฉพาะบทบาทบางอย่างเท่านั้นที่สามารถเข้าถึงได้ ไปที่แดชบอร์ด back4app และเลือกแอปของคุณ เปิด database ส่วน เลือกคลาส (เช่น todo ) เปิดแท็บ class level permissions กำหนดค่าเริ่มต้นเช่น “ต้องการการตรวจสอบสิทธิ์” หรือ “ไม่มีการเข้าถึง ” สิทธิ์เหล่านี้ตั้งค่าพื้นฐานที่กว้างขวาง ในขณะที่ acls ช่วยให้คุณปรับแต่งความปลอดภัยในระดับวัตถุ การรวมกันทั้งสองนี้ช่วยให้มั่นใจในโมเดลความปลอดภัยที่แข็งแกร่ง สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ แนวทางความปลอดภัยของแอป https //www back4app com/docs/security/parse security ขั้นตอนที่ 4 – การเขียนและการปรับใช้ฟังก์ชันคลาวด์ cloud code ช่วยให้คุณสามารถเรียกใช้โค้ด swift (หรือ javascript) ที่กำหนดเองในฝั่งเซิร์ฟเวอร์โดยไม่ต้องจัดการเซิร์ฟเวอร์ เหมาะสำหรับการเพิ่มตรรกะทางธุรกิจ การตรวจสอบข้อมูล ทริกเกอร์ หรือการรวมระบบแบ็กเอนด์ที่ไม่ควรทำจากไคลเอนต์ มันทำงานอย่างไร เขียน cloud code ของคุณในไฟล์เช่น main js (javascript) หรือใช้ประโยชน์จากสภาพแวดล้อม cloud code ที่ใช้ swift ปรับใช้ ไปยังโปรเจ็กต์ back4app ของคุณ โค้ดจะทำงานในสภาพแวดล้อมของ parse server ดังนั้นคุณจึงไม่จำเป็นต้องดูแลเซิร์ฟเวอร์ของคุณเอง เรียกใช้ cloud code ของคุณจากไคลเอนต์ผ่าน swift sdk, rest หรือ graphql กรณีการใช้งานทั่วไป ตรรกะทางธุรกิจ การตรวจสอบข้อมูลที่ซับซ้อน การคำนวณฟิลด์ หรือการรวมระบบภายนอก ทริกเกอร์ข้อมูล ดำเนินการตรรกะเมื่อมีการบันทึก อัปเดต หรือลบวัตถุ ความปลอดภัย ปกป้องการดำเนินการที่ละเอียดอ่อนจากไคลเอนต์โดยการเรียกใช้บนฝั่งเซิร์ฟเวอร์ ฟังก์ชันตัวอย่าง ด้านล่างนี้คือตัวอย่าง javascript cloud code (เนื่องจาก cloud code ใช้ js เป็นหลักใน back4app) ที่คำนวณความยาวของข้อความ main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); การปรับใช้ผ่าน cli ติดตั้ง back4app cli https //www back4app com/docs/local development/parse cli กำหนดค่า คีย์บัญชีของคุณ b4a configure accountkey ปรับใช้ cloud code b4a deploy การเรียกใช้ฟังก์ชันของคุณ จาก swift struct cloudfunction { static func calculatetextlength(text string) async throws > int { do { if let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) as? \[string any], let length = result\["length"] as? int { return length } } catch { throw error } return 0 } } task { do { let len = try await cloudfunction calculatetextlength(text "hello back4app") print("text length \\(len)") } catch { print("error calling cloud function \\(error)") } } ผ่าน rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ์ผู้ใช้ การตรวจสอบสิทธิ์ผู้ใช้ใน back4app back4app ใช้ parseuser คลาสในการจัดการการตรวจสอบสิทธิ์ที่ปลอดภัย การแฮชรหัสผ่าน โทเค็นเซสชัน และข้อมูลจะถูกจัดการโดยอัตโนมัติ ทำให้คุณสามารถมุ่งเน้นไปที่ตรรกะของแอปได้ การตั้งค่าการตรวจสอบสิทธิ์ผู้ใช้ ลงทะเบียนผู้ใช้ใหม่ struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // required fields var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } เข้าสู่ระบบผู้ใช้ที่มีอยู่ func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } โทเค็นเซสชัน ถูกจัดการโดยอัตโนมัติด้วย parse คุณสามารถออกจากระบบ func logout() async { do { try await user logout() print("user logged out ") } catch { print("error logging out \\(error)") } } การรวมเข้าสังคม การรวมกับ google , apple , facebook , ฯลฯ เป็นไปได้ด้วยการตั้งค่าเพิ่มเติม ตรวจสอบที่ เอกสารการเข้าสู่ระบบสังคม https //www back4app com/docs/platform/sign in with apple เพื่อดูรายละเอียดเพิ่มเติม การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน เปิดใช้งานการตรวจสอบอีเมลในแดชบอร์ด back4app ของคุณ และกำหนดค่าอีเมลการรีเซ็ตรหัสผ่านเพื่อให้ผู้ใช้สามารถกู้คืนบัญชีของตนได้อย่างปลอดภัย สำหรับการรีเซ็ตรหัสผ่าน try await user passwordreset(email "user\@example com") ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ การอัปโหลดและการดึงไฟล์ parse รวมถึง parsefile สำหรับการจัดการการอัปโหลดไฟล์ func uploadimage(filedata data) async { let parsefile = parsefile(name "photo jpg", data filedata) do { let savedfile = try await parsefile save() print("file saved at \\(savedfile url ?? "no url")") } catch { print("error uploading file \\(error)") } } แนบมันไปยัง parseobject struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(filedata data) async { var photo = photo() photo imagefile = parsefile(name "image jpg", data filedata) do { = try await photo save() } catch { print("error saving photo object \\(error)") } } ความปลอดภัยของไฟล์ ตามค่าเริ่มต้น ไฟล์สามารถเข้าถึงได้ผ่าน url สาธารณะ คุณสามารถกำหนดค่าความปลอดภัยของไฟล์โดยใช้ การตั้งค่า parse server https //www back4app com/docs/platform/file storage สำหรับการควบคุมไฟล์ที่เข้มงวดมากขึ้น ให้แน่ใจว่าผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์หรือบทบาทที่กำหนดเท่านั้นที่สามารถอัปโหลดหรือดึงไฟล์ได้ ขั้นตอนที่ 7 – การกำหนดตารางงานด้วย cloud jobs cloud jobs ช่วยให้คุณสามารถกำหนดตารางและรันงานที่เกิดขึ้นซ้ำได้ เช่น การทำความสะอาดข้อมูลหรือการส่งอีเมล // main js (javascript cloud code) parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); หลังจากการปรับใช้, กำหนดตาราง มันผ่านแดชบอร์ด back4app ภายใต้ การตั้งค่าเซิร์ฟเวอร์ > งานเบื้องหลัง ขั้นตอนที่ 8 – การรวม webhooks webhooks ช่วยให้แอป back4app ของคุณส่งคำขอ http ไปยังบริการภายนอก (เช่น stripe) เมื่อเกิดเหตุการณ์บางอย่าง นี่มีประโยชน์สำหรับการเชื่อมต่อกับเครื่องมือของบุคคลที่สามหรือการรวม ฝั่งเซิร์ฟเวอร์ อื่น ๆ ไปที่ webhooks ในแดชบอร์ด back4app ของคุณ > เพิ่มเติม > webhooks เพิ่ม endpoint (เช่น, https //your service com/webhook ) กำหนดค่า ว่าเหตุการณ์ใด (เช่น, บันทึกใหม่ในคลาส todo) จะกระตุ้น webhook ตัวอย่างเช่น คุณสามารถส่งข้อความ slack ทุกครั้งที่ผู้ใช้สร้าง todo ใหม่ นี่ช่วยให้คุณสามารถทำให้บริการภายนอกซิงค์กับข้อมูล back4app ของคุณได้ ขั้นตอนที่ 9 – สำรวจแผงผู้ดูแล back4app แอป back4app admin app เป็นอินเตอร์เฟซการจัดการที่ใช้เว็บสำหรับผู้ใช้ที่ไม่ใช่เทคนิคในการทำ crud บนข้อมูลของคุณ มันมี ui ที่ใช้งานง่ายซึ่งแยกจาก parse dashboard ทำให้การจัดการข้อมูลในผลิตภัณฑ์ง่ายขึ้น การเปิดใช้งาน admin app ไปที่ app dashboard > more > admin app และคลิก “เปิดใช้งาน admin app ” สร้างผู้ใช้ admin , ซึ่งจะสร้างบทบาทผู้ดูแลระบบและคลาสที่เกี่ยวข้องโดยอัตโนมัติ เลือกซับโดเมนสำหรับอินเตอร์เฟซผู้ดูแล จากนั้นเข้าสู่ระบบเพื่อจัดการข้อมูลของคุณผ่าน ui ที่ใช้งานง่าย บทสรุป โดยการติดตามคู่มือนี้อย่างละเอียด คุณได้เรียนรู้ วิธีการสร้าง backend สำหรับ swiftui โดยใช้ back4app และ parse swift sdk วิธีการจัดเก็บข้อมูล อย่างปลอดภัยด้วย schema คลาสที่กำหนดเองและความสัมพันธ์ วิธีการรวมการค้นหาข้อมูลแบบเรียลไทม์ (live queries) เพื่อการอัปเดตข้อมูลทันที วิธีการใช้มาตรการรักษาความปลอดภัย โดยใช้ acls และ clps เพื่อปกป้องและจัดการการเข้าถึงข้อมูล วิธีการดำเนินธุรกิจ ผ่าน cloud code วิธีการจัดการการจัดเก็บไฟล์ , การตรวจสอบสิทธิ์ และการกำหนดเวลางานเบื้องหลังด้วย cloud jobs วิธีการรวม แอปของคุณกับบริการภายนอกโดยใช้ webhooks ด้วยทักษะเหล่านี้ คุณสามารถสร้าง แอป ios หรือ แอปเว็บ ที่จัดการได้ง่าย ปลอดภัย และพร้อมที่จะขยายตัว สำรวจฟีเจอร์ที่ซับซ้อนมากขึ้น—เช่น สิทธิ์ตามบทบาท การแจ้งเตือนแบบพุช หรือการแคชขั้นสูง คุณยังสามารถรวม api อื่น ๆ หรือปรับแต่ง cloud code ของคุณให้เหมาะกับกรณีการใช้งานเฉพาะ การเขียนโค้ดที่มีความสุข , และสนุกกับการสร้างแอปที่ยอดเยี่ยมบน back4app! ขั้นตอนถัดไป แอป swiftui ที่พร้อมใช้งานในผลิตภัณฑ์ ขยายแบ็กเอนด์นี้เพื่อจัดการกับโมเดลข้อมูลที่ซับซ้อนมากขึ้น การแคช และการปรับปรุงประสิทธิภาพ ฟีเจอร์ขั้นสูง ดำดิ่งลึกลงไปในการตรวจสอบสิทธิ์เฉพาะทาง การเข้าถึงตามบทบาท หรือการรวม api ของบุคคลที่สาม (เช่น stripe) สำรวจเอกสารทางการของ back4app สำหรับการเจาะลึกเกี่ยวกับ ความปลอดภัยด้านเซิร์ฟเวอร์ , การวิเคราะห์บันทึก และการปรับแต่งฐานข้อมูลขั้นสูง ตรวจสอบบทเรียนเพิ่มเติม แชทแบบเรียลไทม์ บริการตามตำแหน่ง หรือแอปพลิเคชันหลายผู้เช่า—รวมวิธีการที่เรียนรู้ที่นี่กับ api ภายนอกเพื่อสร้างโซลูชันที่ซับซ้อนในโลกจริง