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
รายการที่กำหนดสคีมา ข้อความค้นหา
และการกลายพันธุ์ ซึ่งอาจเป็นฟีเจอร์ที่มีประโยชน์ในเวิร์กโฟลว์การโหลด (ซ้ำ) อย่างรวดเร็ว
.gql
และอัปเดตแหล่งที่มาของ SDK โดยอัตโนมัติได้ด้วย
หรือจะใช้ CLI เพื่อสร้าง SDK อีกครั้งทุกครั้งที่มีการเปลี่ยนแปลงไฟล์ .gql ก็ได้ โดยทำดังนี้
firebase dataconnect:sdk:generate --watch
สร้าง SDK สำหรับการผสานรวมและเวอร์ชันที่ใช้งานจริง
ในบางกรณี เช่น การเตรียมแหล่งที่มาของโปรเจ็กต์เพื่อส่งเข้ารับการทดสอบ CI คุณสามารถเรียกใช้ Firebase CLI เพื่ออัปเดตแบบเป็นกลุ่มได้
ในกรณีเหล่านี้ ให้ใช้ 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.0.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 |