คุณใช้การกำหนดค่าระยะไกลของ Firebase เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตค่าในระบบคลาวด์ได้ ซึ่งช่วยให้แก้ไขรูปลักษณ์และลักษณะการทำงานของแอปได้โดยไม่ต้องกระจายการอัปเดตแอป คู่มือนี้จะแนะนำขั้นตอนในการเริ่มต้นใช้งานและให้โค้ดตัวอย่าง ซึ่งทั้งหมดพร้อมสำหรับการโคลนหรือดาวน์โหลดจากที่เก็บ GitHub firebase/quickstart-android
ขั้นตอนที่ 1: เพิ่ม Firebase และ SDK การกำหนดค่าระยะไกลลงในแอป
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ทำ
สำหรับการกำหนดค่าระยะไกล คุณต้องใช้ Google Analytics สำหรับการกำหนดเป้าหมายแบบมีเงื่อนไขของอินสแตนซ์แอปไปยังพร็อพเพอร์ตี้ผู้ใช้และกลุ่มเป้าหมาย ตรวจสอบว่าได้เปิดใช้ Google Analytics ในโปรเจ็กต์แล้ว
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารีการกำหนดค่าระยะไกลสำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารีนอกจากนี้ ในการตั้งค่า Analytics คุณต้องเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณด้วย
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.1")) // Add the dependencies for the Remote Config and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config") implementation("com.google.firebase:firebase-analytics") }
การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM
หากเลือกไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการในแอป เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันไลบรารี ซึ่งจะทำให้มั่นใจได้ว่าทุกเวอร์ชันจะใช้งานร่วมกันได้
dependencies { // Add the dependencies for the Remote Config and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-config:21.6.3") implementation("com.google.firebase:firebase-analytics:21.6.2") }
ขั้นตอนที่ 2: ดาวน์โหลดออบเจ็กต์ Singleton สำหรับการกำหนดค่าระยะไกล
รับอินสแตนซ์ของออบเจ็กต์การกำหนดค่าระยะไกลและตั้งค่าช่วงการดึงข้อมูลขั้นต่ำเพื่อให้มีการรีเฟรชบ่อยๆ ดังนี้
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
ออบเจ็กต์ Singleton ใช้สำหรับจัดเก็บค่าพารามิเตอร์เริ่มต้นในแอป ดึงค่าพารามิเตอร์ที่อัปเดตแล้วจากแบ็กเอนด์ และควบคุมช่วงเวลาที่แอปจะใช้ค่าที่ดึงข้อมูลได้
ในระหว่างการพัฒนา เราขอแนะนำให้กำหนดช่วงการดึงข้อมูลขั้นต่ำที่ค่อนข้างต่ำ ดูข้อมูลเพิ่มเติมในการควบคุม
ขั้นตอนที่ 3: ตั้งค่าค่าพารามิเตอร์เริ่มต้นในแอป
คุณจะตั้งค่าค่าพารามิเตอร์เริ่มต้นในแอปได้ในออบเจ็กต์การกำหนดค่าระยะไกล เพื่อให้แอปทำงานตามที่ต้องการก่อนเชื่อมต่อกับแบ็กเอนด์ของการกำหนดค่าระยะไกล และเพื่อให้ค่าเริ่มต้นพร้อมใช้งานหากไม่มีการตั้งค่าใดๆ ในแบ็กเอนด์
กำหนดชุดของชื่อพารามิเตอร์และค่าพารามิเตอร์เริ่มต้นโดยใช้ออบเจ็กต์ Map หรือไฟล์ทรัพยากร XML ที่จัดเก็บไว้ในโฟลเดอร์
res/xml
ของแอป แอปตัวอย่างการเริ่มต้นอย่างรวดเร็วสำหรับการกำหนดค่าระยะไกลใช้ไฟล์ XML เพื่อกำหนดชื่อและค่าพารามิเตอร์เริ่มต้นหากกำหนดค่าพารามิเตอร์แบ็กเอนด์ของการกำหนดค่าระยะไกลไว้แล้ว คุณจะดาวน์โหลดไฟล์ XML ที่สร้างขึ้นซึ่งมีค่าเริ่มต้นทั้งหมด และบันทึกลงในไดเรกทอรี
res/xml
ของแอปได้ ดังนี้REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
คอนโซล Firebase
ในแท็บพารามิเตอร์ ให้เปิด เมนู แล้วเลือกดาวน์โหลดค่าเริ่มต้น
เมื่อมีข้อความแจ้ง ให้เปิดใช้ .xml สำหรับ Android แล้วคลิกดาวน์โหลดไฟล์
เพิ่มค่าเหล่านี้ลงในออบเจ็กต์การกำหนดค่าระยะไกลโดยใช้
setDefaultsAsync(int)
ดังที่แสดงKotlin+KTX
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
ขั้นตอนที่ 4: รับค่าพารามิเตอร์ไว้ใช้ในแอป
ตอนนี้คุณสามารถรับค่าพารามิเตอร์จากออบเจ็กต์การกำหนดค่าระยะไกล หากคุณกำหนดค่า
ในแบ็กเอนด์ ให้ดึงข้อมูลแล้วเปิดใช้งาน
ค่าเหล่านั้นจะพร้อมใช้งานในแอป มิฉะนั้นคุณจะกำหนดค่าพารามิเตอร์ในแอปที่กำหนดค่าโดยใช้
setDefaultsAsync(int)
หากต้องการรับค่าเหล่านี้ ให้เรียกใช้เมธอดที่แสดงด้านล่างที่แมปกับประเภทข้อมูลที่แอปคาดการณ์ โดยระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์
ขั้นตอนที่ 5: กำหนดค่าพารามิเตอร์ในแบ็กเอนด์การกำหนดค่าระยะไกล
คุณสามารถใช้คอนโซล Firebase หรือ API แบ็กเอนด์ของการกำหนดค่าระยะไกลเพื่อสร้างค่าเริ่มต้นฝั่งเซิร์ฟเวอร์ใหม่ที่ลบล้างค่าในแอปตามตรรกะแบบมีเงื่อนไขหรือการกำหนดเป้าหมายผู้ใช้ที่คุณต้องการ ส่วนนี้จะอธิบายขั้นตอนในคอนโซล Firebase ในการสร้างค่าเหล่านี้
- เปิดโปรเจ็กต์ในคอนโซล Firebase
- เลือกการกำหนดค่าระยะไกลจากเมนูเพื่อดูหน้าแดชบอร์ดการกำหนดค่าระยะไกล
- กำหนดพารามิเตอร์ที่มีชื่อเดียวกับพารามิเตอร์ที่กําหนดไว้ในแอป โดยคุณจะตั้งค่าเริ่มต้นสําหรับพารามิเตอร์แต่ละรายการได้ (ซึ่งสุดท้ายแล้วจะลบล้างค่าเริ่มต้นที่เกี่ยวข้องในแอป) และยังกำหนดค่าแบบมีเงื่อนไขได้อีกด้วย โปรดดูข้อมูลเพิ่มเติมที่หัวข้อพารามิเตอร์และเงื่อนไขสำหรับการกำหนดค่าระยะไกล
ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า
- หากต้องการดึงค่าพารามิเตอร์จากแบ็กเอนด์การกำหนดค่าระยะไกล ให้เรียกใช้เมธอด
fetch()
ระบบจะดึงค่าที่คุณกำหนดในแบ็กเอนด์ขึ้นมา และจัดเก็บไว้ในออบเจ็กต์การกำหนดค่าระยะไกล หากต้องการทำให้ค่าพารามิเตอร์ที่ดึงข้อมูลมาใช้งานกับแอปได้ ให้เรียกใช้เมธอด
activate()
ในกรณีที่ต้องการดึงข้อมูลและเปิดใช้งานค่าในการเรียกครั้งเดียว ให้ใช้คำขอ
fetchAndActivate()
เพื่อดึงค่าจากแบ็กเอนด์การกำหนดค่าระยะไกลและทำให้ค่าดังกล่าวพร้อมใช้งานกับแอป ดังนี้Kotlin+KTX
remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result Log.d(TAG, "Config params updated: $updated") Toast.makeText( this, "Fetch and activate succeeded", Toast.LENGTH_SHORT, ).show() } else { Toast.makeText( this, "Fetch failed", Toast.LENGTH_SHORT, ).show() } displayWelcomeMessage() }
Java
mFirebaseRemoteConfig.fetchAndActivate() .addOnCompleteListener(this, new OnCompleteListener<Boolean>() { @Override public void onComplete(@NonNull Task<Boolean> task) { if (task.isSuccessful()) { boolean updated = task.getResult(); Log.d(TAG, "Config params updated: " + updated); Toast.makeText(MainActivity.this, "Fetch and activate succeeded", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "Fetch failed", Toast.LENGTH_SHORT).show(); } displayWelcomeMessage(); } });
เนื่องจากค่าพารามิเตอร์ที่อัปเดตใหม่เหล่านี้ส่งผลต่อพฤติกรรมและรูปลักษณ์ของแอป คุณจึงควรเปิดใช้งานค่าที่ดึงมาในแต่ละครั้งเพื่อให้แน่ใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานที่ราบรื่น เช่น ในครั้งถัดไปที่ผู้ใช้เปิดแอป ดูกลยุทธ์การโหลดการกำหนดค่าระยะไกลสำหรับข้อมูลเพิ่มเติมและตัวอย่าง
ขั้นตอนที่ 7: ฟังอัปเดตแบบเรียลไทม์
หลังจากดึงข้อมูลค่าพารามิเตอร์แล้ว คุณจะใช้การกำหนดค่าระยะไกลแบบเรียลไทม์เพื่อฟังการอัปเดตจากแบ็กเอนด์การกำหนดค่าระยะไกลได้ แบบเรียลไทม์ ส่งสัญญาณการกำหนดค่าระยะไกลไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีอัปเดตพร้อมใช้งานและ จะดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากเผยแพร่การกำหนดค่าระยะไกลเวอร์ชันใหม่
Firebase SDK สำหรับ Android เวอร์ชัน 21.3.0 ขึ้นไป (Firebase BoM v31.2.4 ขึ้นไป) รองรับการอัปเดตแบบเรียลไทม์
ในแอป ให้ใช้
addOnConfigUpdateListener()
เพื่อเริ่มฟังอัปเดตและดึงค่าพารามิเตอร์ใหม่โดยอัตโนมัติ ใช้โค้ดเรียกกลับonUpdate()
เพื่อเปิดใช้งานการกำหนดค่าที่อัปเดตแล้วKotlin+KTX
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { override fun onUpdate(configUpdate : ConfigUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.updatedKeys); if (configUpdate.updatedKeys.contains("welcome_message")) { remoteConfig.activate().addOnCompleteListener { displayWelcomeMessage() } } } override fun onError(error : FirebaseRemoteConfigException) { Log.w(TAG, "Config update error with code: " + error.code, error) } })
Java
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() { @Override public void onUpdate(ConfigUpdate configUpdate) { Log.d(TAG, "Updated keys: " + configUpdate.getUpdatedKeys()); mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener
() { @Override public void onComplete(@NonNull Task task) { displayWelcomeMessage(); } }); } @Override public void onError(FirebaseRemoteConfigException error) { Log.w(TAG, "Config update error with code: " + error.getCode(), error); } }); ครั้งต่อไปที่คุณเผยแพร่การกำหนดค่าระยะไกลเวอร์ชันใหม่ อุปกรณ์ที่เรียกใช้แอปของคุณและรอฟังการเปลี่ยนแปลงจะเรียกใช้
ConfigUpdateListener
การควบคุม
หากแอปดึงข้อมูลหลายครั้งเกินไปในระยะเวลาสั้นๆ ระบบจะควบคุมการเรียกการดึงข้อมูลและ SDK จะแสดงผล FirebaseRemoteConfigFetchThrottledException
ก่อน SDK เวอร์ชัน 17.0.0 ขีดจำกัดคือ 5 คำขอดึงข้อมูลในช่วงเวลา 60 นาที (เวอร์ชันใหม่ๆ มีข้อจำกัดมากกว่า)
ในระหว่างการพัฒนาแอป คุณอาจต้องการดึงข้อมูลและเปิดใช้งานการกำหนดค่าบ่อยๆ (หลายครั้งต่อชั่วโมง) เพื่อให้คุณสามารถทำซ้ำได้อย่างรวดเร็วในขณะที่พัฒนาและทดสอบแอป การอัปเดตการกำหนดค่าระยะไกลแบบเรียลไทม์จะข้ามแคชโดยอัตโนมัติเมื่อมีการอัปเดตการกำหนดค่าบนเซิร์ฟเวอร์ หากต้องการรองรับการทำซ้ำอย่างรวดเร็วในโปรเจ็กต์ที่มีนักพัฒนาซอฟต์แวร์ไม่เกิน 10 คน ให้ตั้งค่าออบเจ็กต์FirebaseRemoteConfigSettings
ชั่วคราวโดยมีช่วงการดึงข้อมูลขั้นต่ำต่ำ(setMinimumFetchIntervalInSeconds
) ในแอป
ช่วงเวลาการดึงข้อมูลขั้นต่ำเริ่มต้นสำหรับการกำหนดค่าระยะไกลคือ 12 ชั่วโมง ซึ่งหมายความว่าระบบจะไม่ดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่า 1 ครั้งในกรอบเวลา 12 ชั่วโมง ไม่ว่าจริงๆ แล้วจะมีการเรียกการดึงข้อมูลกี่ครั้งก็ตาม ช่วงการดึงข้อมูลขั้นต่ำจะกำหนดตามลำดับต่อไปนี้
- พารามิเตอร์ใน
fetch(long)
- พารามิเตอร์ใน
FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
- ค่าเริ่มต้นคือ 12 ชั่วโมง
หากต้องการตั้งช่วงการดึงข้อมูลขั้นต่ำเป็นค่าที่กำหนดเอง ให้ใช้ FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
ขั้นตอนถัดไป
ลองสำรวจกรณีการใช้งานการกำหนดค่าระยะไกลและดูเอกสารแนวคิดสำคัญและเอกสารกลยุทธ์ขั้นสูงต่อไปนี้หากยังไม่ได้ดู