ใช้ Android SDK ที่สร้างขึ้น

SDK ของไคลเอ็นต์ Firebase Data Connect ช่วยให้คุณเรียกใช้การค้นหาและการดัดแปลงฝั่งเซิร์ฟเวอร์ได้โดยตรงจากแอป Firebase คุณสามารถสร้าง SDK ของไคลเอ็นต์ที่กําหนดเองควบคู่ไปกับการออกแบบสคีมา การค้นหา และการดัดแปลงที่จะติดตั้งใช้งานในบริการ Data Connect จากนั้นผสานรวมเมธอดจาก SDK นี้เข้ากับตรรกะไคลเอ็นต์

ดังที่ได้กล่าวไว้ก่อนหน้านี้ โปรดทราบว่าData Connect โค้ดไคลเอ็นต์ไม่ได้ส่งการค้นหาและการดัดแปลง และไม่ได้ดำเนินการบนเซิร์ฟเวอร์ แต่ระบบจะจัดเก็บการดำเนินการ Data Connect ไว้ในเซิร์ฟเวอร์ เช่น Cloud Functions เมื่อทำให้ใช้งานได้ ซึ่งหมายความว่าคุณต้องทําการเปลี่ยนแปลงฝั่งไคลเอ็นต์ที่เกี่ยวข้องเพื่อไม่ให้ผู้ใช้เดิมได้รับผลกระทบ (เช่น ในแอปเวอร์ชันเก่า)

ด้วยเหตุนี้ Data Connect จึงมอบสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์และเครื่องมือที่ช่วยให้คุณสร้างต้นแบบของสคีมา คำค้นหา และการกลายพันธุ์ที่เซิร์ฟเวอร์ใช้งานได้ นอกจากนี้ ยังสร้าง SDK ฝั่งไคลเอ็นต์โดยอัตโนมัติในขณะที่คุณสร้างต้นแบบอยู่

เมื่ออัปเดตบริการและแอปไคลเอ็นต์ซ้ำแล้ว การอัปเดตทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์จะพร้อมใช้งาน

สร้าง Kotlin SDK

เช่นเดียวกับโปรเจ็กต์ Firebase ส่วนใหญ่ การทำงานกับโค้ดFirebase Data Connectไคลเอ็นต์จะทําในไดเรกทอรีโปรเจ็กต์ในเครื่อง ทั้งส่วนขยาย Data Connect VS Code และ Firebase CLI เป็นเครื่องมือสำคัญในเครื่องสำหรับการสร้างและจัดการรหัสไคลเอ็นต์

ตัวเลือกการสร้าง SDK จะเชื่อมโยงกับหลายรายการในไฟล์ dataconnect.yaml ที่สร้างขึ้นเมื่อคุณเริ่มต้นโปรเจ็กต์

เริ่มต้นการสร้าง SDK

ใน connector.yaml ให้เพิ่ม outputDir, package และ (สําหรับ SDK เว็บ) packageJsonDir
connectorId: movies
generate:
  kotlinSdk:
    outputDir: ../../../src/main/java/com/myapplication
    package: com.myapplication

แทนที่ outputDir ด้วยเส้นทางของไดเรกทอรีที่จะวางโค้ดที่สร้างขึ้น เส้นทางนี้สัมพัทธ์กับไดเรกทอรีที่มีไฟล์ connector.yaml อยู่ แทนที่ package ด้วยคำสั่งแพ็กเกจ Kotlin เพื่อใช้ในไฟล์ที่สร้างขึ้น หรือละเว้น package เพื่อใช้แพ็กเกจเริ่มต้น

อัปเดต SDK ขณะสร้างต้นแบบ

หากคุณสร้างต้นแบบแบบอินเทอร์แอกทีฟด้วยส่วนขยาย Data Connect ใน VS Code และData Connectโปรแกรมจำลองของส่วนขยายดังกล่าว ระบบจะสร้างและอัปเดตไฟล์ซอร์ส SDK โดยอัตโนมัติขณะที่คุณแก้ไขไฟล์ .gql ที่กําหนดสคีมา การค้นหา และการดัดแปลง ซึ่งอาจเป็นฟีเจอร์ที่มีประโยชน์ในเวิร์กโฟลว์การโหลด (ซ้ำ) อย่างรวดเร็ว

ในกรณีอื่นๆ หากคุณใช้โปรแกรมจำลอง Data Connect จาก CLI ของ Firebase คุณสามารถตั้งค่าการติดตามการอัปเดต .gql และอัปเดตแหล่งที่มาของ SDK โดยอัตโนมัติได้ด้วย

หรือจะใช้ CLI เพื่อสร้าง SDK อีกครั้งทุกครั้งที่มีการเปลี่ยนแปลงไฟล์ .gql ก็ได้ โดยทำดังนี้

firebase dataconnect:sdk:generate --watch

สร้าง SDK สำหรับการผสานรวมและสำหรับรุ่นที่ใช้งานจริง

ในบางกรณี เช่น การเตรียมแหล่งที่มาของโปรเจ็กต์ที่จะส่งสำหรับการทดสอบ CI คุณจะเรียกใช้ CLI ของ Firebase สำหรับการอัปเดตเป็นกลุ่มได้

ในกรณีเหล่านี้ ให้ใช้ firebase dataconnect:sdk:generate

ตั้งค่ารหัสไคลเอ็นต์

รวม Data Connect ไว้ในโค้ดไคลเอ็นต์

หากต้องการตั้งค่าโค้ดไคลเอ็นต์ให้ใช้ Data Connect และ SDK ที่สร้างขึ้น ให้ทําตามวิธีการตั้งค่า Firebase มาตรฐานก่อน

จากนั้นเพิ่มข้อมูลต่อไปนี้ลงในส่วน plugins ใน app/build.gradle.kts

// The Firebase team tests with version 1.8.22; however, other 1.8 versions,
// and all newer versions are expected work too.
kotlin("plugin.serialization") version "1.8.22" // MUST match the version of the Kotlin compiler

จากนั้นเพิ่มข้อมูลต่อไปนี้ลงในส่วน dependencies ใน app/build.gradle.kts

implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta01")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1")
implementation("com.google.firebase:firebase-auth:23.1.0") // Optional
implementation("com.google.firebase:firebase-appcheck:18.0.0") // Optional

เริ่มต้น Data Connect Android SDK

เริ่มต้นอินสแตนซ์ Data Connect โดยใช้ข้อมูลที่คุณใช้ตั้งค่าการเชื่อมต่อข้อมูล (มีทั้งหมดในแท็บการเชื่อมต่อข้อมูลของคอนโซล Firebase)

ออบเจ็กต์ ConnectorConfig

SDK ต้องใช้ออบเจ็กต์การกําหนดค่าของเครื่องมือเชื่อมต่อ

ออบเจ็กต์นี้สร้างขึ้นโดยอัตโนมัติจาก serviceId และ location ใน dataconnect.yaml และ connectorId ใน connector.yaml

การรับอินสแตนซ์เครื่องมือเชื่อมต่อ

เมื่อตั้งค่าออบเจ็กต์การกําหนดค่าแล้ว ให้รับData Connect อินสแตนซ์ของคอนเน็กเตอร์ โปรแกรมจำลอง Data Connect จะสร้างรหัสสำหรับเครื่องมือเชื่อมต่อของคุณ หากชื่อเครื่องมือเชื่อมต่อของคุณคือ movies และแพ็กเกจ Kotlin คือ com.myapplication ตามที่ระบุไว้ใน connector.yaml ให้ดึงออบเจ็กต์เครื่องมือเชื่อมต่อด้วยการเรียกใช้

val connector = com.myapplication.MoviesConnector.instance

เรียกใช้การค้นหาและการดัดแปลง

คุณเรียกใช้การค้นหาและการเปลี่ยนแปลงตามที่กำหนดไว้ในซอร์สโค้ด GraphQL ได้ด้วยออบเจ็กต์เครื่องมือเชื่อมต่อ สมมติว่าเครื่องมือเชื่อมต่อของคุณกําหนดการดําเนินการเหล่านี้ไว้

mutation createMovie($title: String!, $releaseYear: Int!, $genre: String!, $rating: Int!) {
  movie_insert(data: {
    title: $title
    releaseYear: $releaseYear
    genre: $genre
    rating: $rating
  })
}

query getMovieByKey($key: Movie_Key!) {
  movie(key: $key) { id title }
}

query listMoviesByGenre($genre: String!) {
  movies(where: {genre: {eq: $genre}}) {
    id
    title
  }
}

จากนั้นคุณจะสร้างและเรียกข้อมูลภาพยนตร์ได้โดยทำดังนี้

val connector = MoviesConnector.instance

val addMovieResult1 = connector.createMovie.execute(
  title = "Empire Strikes Back",
  releaseYear = 1980,
  genre = "Sci-Fi",
  rating = 5
)

val movie1 = connector.getMovieByKey.execute(addMovieResult1.data.key)

println("Empire Strikes Back: ${movie1.data.movie}")

นอกจากนี้ คุณยังเรียกข้อมูลภาพยนตร์หลายรายการได้ด้วย โดยทำดังนี้

val connector = MoviesConnector.instance

val addMovieResult2 = connector.createMovie.execute(
  title="Attack of the Clones",
  releaseYear = 2002,
  genre = "Sci-Fi",
  rating = 5
)

val listMoviesResult = connector.listMoviesByGenre.execute(genre = "Sci-Fi")

println(listMoviesResult.data.movies)

นอกจากนี้ คุณยังรวบรวม Flow ที่จะแสดงผลลัพธ์เฉพาะเมื่อมีการเรียกใช้ผลการค้นหาใหม่โดยใช้การเรียกใช้เมธอด execute() ของคําค้นหาได้ด้วย

val connector = MoviesConnector.instance

connector.listMoviesByGenre.flow(genre = "Sci-Fi").collect { data ->
  println(data.movies)
}

connector.createMovie.execute(
  title="A New Hope",
  releaseYear = 1977,
  genre = "Sci-Fi",
  rating = 5
)

connector.listMoviesByGenre.execute(genre = "Sci-Fi") // will cause the Flow to get notified

สร้างต้นแบบและทดสอบแอปพลิเคชัน Android

เครื่องมือสำหรับลูกค้าเพื่อใช้โปรแกรมจำลองในเครื่อง

คุณสามารถใช้โปรแกรมจำลอง Data Connect ได้จากส่วนขยาย Data Connect ใน VS Code หรือจาก CLI

เครื่องมือวัดผลแอปเพื่อเชื่อมต่อกับโปรแกรมจําลองจะเหมือนกันทั้ง 2 สถานการณ์

val connector = MoviesConnector.instance

// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)

// Make calls from your app

หากต้องการเปลี่ยนไปใช้ทรัพยากรเวอร์ชันที่ใช้งานจริง ให้ยกเลิกการคอมเมนต์บรรทัดสำหรับการเชื่อมต่อกับโปรแกรมจำลอง

ประเภทข้อมูลใน SDK ของ Data Connect

เซิร์ฟเวอร์ Data Connect แสดงประเภทข้อมูล GraphQL ทั่วไปและที่กำหนดเอง ซึ่งจะแสดงใน SDK ดังนี้

ประเภทการเชื่อมต่อข้อมูล Kotlin
สตริง สตริง
Int Int (32 บิต)
ทศนิยม คู่ (ทศนิยม 64 บิต)
บูลีน บูลีน
UUID java.util.UUID
วันที่ java.util.Date
การประทับเวลา com.google.firebase.Timestamp
Int64 ยาว
เวลาใดก็ได้ com.google.firebase.dataconnect.AnyValue