เริ่มต้นใช้งานการกำหนดค่าระยะไกลของ Firebase


คุณใช้ Firebase Remote Config เพื่อกำหนดพารามิเตอร์ในแอปและอัปเดตได้ ค่านั้นในระบบคลาวด์ ซึ่งทำให้คุณปรับแต่งรูปลักษณ์และลักษณะการทำงานของ แอปของคุณโดยไม่เผยแพร่การอัปเดตแอป คู่มือนี้จะแนะนําขั้นตอนในการเริ่มต้นใช้งานและ โค้ดตัวอย่าง ซึ่งทั้งหมดสามารถโคลนหรือดาวน์โหลดได้จาก firebase/quickstart-androidในที่เก็บ GitHub

ขั้นตอนที่ 1: เพิ่ม Firebase และ SDK การกำหนดค่าระยะไกลลงในแอป

  1. หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android

  2. สำหรับ Remote Config ต้องมี Google Analytics สำหรับพารามิเตอร์ การกำหนดเป้าหมายแบบมีเงื่อนไขของอินสแตนซ์แอป สำหรับพร็อพเพอร์ตี้ผู้ใช้และกลุ่มเป้าหมาย โปรดตรวจสอบว่า คุณจะเปิดใช้ Google Analytics ในโปรเจ็กต์

  3. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (ปกติ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) เพิ่มทรัพยากร Dependency สำหรับไลบรารี Remote Config สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันไลบรารี

    นอกจากนี้ คุณต้องเพิ่ม Firebase SDK ในฐานะส่วนหนึ่งของการตั้งค่า Analytics สำหรับ Google Analytics ไปยังแอปของคุณ

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.0"))
    
        // 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:22.0.0")
        implementation("com.google.firebase:firebase-analytics:22.1.0")
    }
    หากกำลังมองหาโมดูลไลบรารีสำหรับ Kotlin โดยเฉพาะ จะเริ่มต้นใน ตุลาคม 2023 (Firebase BoM 32.5.0) ทั้งนักพัฒนา Kotlin และ Java สามารถ ขึ้นอยู่กับโมดูลไลบรารีหลัก (ดูรายละเอียดได้ที่ คําถามที่พบบ่อยเกี่ยวกับโครงการริเริ่มนี้)

ขั้นตอนที่ 2: ดาวน์โหลดออบเจ็กต์ Singleton ของ Remote Config

รับอินสแตนซ์ออบเจ็กต์ Remote Config และตั้งค่า ช่วงเวลาการดึงข้อมูลขั้นต่ำเพื่อให้มีการรีเฟรชบ่อยๆ:

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: ตั้งค่าพารามิเตอร์เริ่มต้นในแอป

คุณตั้งค่าพารามิเตอร์เริ่มต้นในแอปได้ใน Remote Config เพื่อให้แอปทำงานตามที่ตั้งใจไว้ก่อนที่จะเชื่อมต่อกับ แบ็กเอนด์ Remote Config เพื่อให้ใช้ค่าเริ่มต้นได้หากไม่มี ที่ตั้งไว้ในแบ็กเอนด์

  1. กำหนดชุดของชื่อพารามิเตอร์และค่าพารามิเตอร์เริ่มต้นโดยใช้ จับคู่ออบเจ็กต์หรือ ไฟล์ทรัพยากร XML จัดเก็บไว้ในโฟลเดอร์ res/xml ของแอป คู่มือเริ่มต้นฉบับย่อสำหรับ Remote Config แอปตัวอย่างใช้ ไฟล์ XML เพื่อกำหนดชื่อและค่าพารามิเตอร์เริ่มต้น

    หากคุณกําหนดค่าพารามิเตอร์แบ็กเอนด์ Remote Config แล้ว คุณสามารถดาวน์โหลดไฟล์ 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

    1. ในพารามิเตอร์ เปิดเมนู และ เลือกดาวน์โหลดค่าเริ่มต้น

    2. เมื่อมีข้อความแจ้ง ให้เปิดใช้ .xml สำหรับ Android แล้วคลิก ดาวน์โหลดไฟล์

  2. เพิ่มค่าเหล่านี้ลงในออบเจ็กต์ Remote Config โดยใช้ setDefaultsAsync(int), ดังต่อไปนี้

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

ขั้นตอนที่ 4: รับค่าพารามิเตอร์เพื่อใช้ในแอป

ตอนนี้คุณรับค่าพารามิเตอร์จากออบเจ็กต์ Remote Config ได้แล้ว หากตั้งค่าไว้ ในแบ็กเอนด์ ดึงข้อมูล แล้วเปิดใช้งาน ค่าเหล่านั้นจะมีให้ในแอป ไม่เช่นนั้น คุณจะได้รับการซื้อในแอป ค่าพารามิเตอร์ที่กำหนดค่าโดยใช้ setDefaultsAsync(int) ในการรับค่าเหล่านี้ ให้เรียกใช้เมธอดด้านล่างซึ่งจับคู่กับประเภทข้อมูล ตามที่แอปของคุณต้องการ โดยระบุคีย์พารามิเตอร์เป็นอาร์กิวเมนต์ ดังนี้

ขั้นตอนที่ 5: ตั้งค่าค่าพารามิเตอร์ในแบ็กเอนด์ Remote Config

การใช้คอนโซล Firebase หรือ API แบ็กเอนด์ Remote Config รายการ คุณสามารถสร้างค่าเริ่มต้นฝั่งเซิร์ฟเวอร์ใหม่ๆ ที่ลบล้างค่าในแอป ตามตรรกะตามเงื่อนไขหรือการกำหนดเป้าหมายผู้ใช้ที่คุณต้องการ ส่วนนี้ อธิบายขั้นตอนในคอนโซลของ Firebase ในการสร้างค่าเหล่านี้

  1. เปิดโปรเจ็กต์ในคอนโซล Firebase
  2. เลือก Remote Config จากเมนูเพื่อดู Remote Config หน้าแดชบอร์ด
  3. กำหนดพารามิเตอร์ด้วยชื่อเดียวกับพารามิเตอร์ที่คุณกำหนดใน แอปของคุณ สำหรับแต่ละพารามิเตอร์ คุณสามารถกำหนดค่าเริ่มต้น (ซึ่ง ลบล้างค่าเริ่มต้นที่เกี่ยวข้องในแอป) และคุณยังสามารถ กำหนดค่าแบบมีเงื่อนไข หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่Remote Config พารามิเตอร์และ เงื่อนไข

ขั้นตอนที่ 6: ดึงข้อมูลและเปิดใช้งานค่า

  1. หากต้องการดึงข้อมูลค่าพารามิเตอร์จากแบ็กเอนด์ Remote Config ให้เรียกเมธอด fetch() ระบบจะดึงข้อมูลค่าใดก็ตามที่คุณกำหนดในแบ็กเอนด์ และจัดเก็บไว้ในออบเจ็กต์ Remote Config
  2. หากต้องการให้ค่าพารามิเตอร์ที่ดึงข้อมูลไว้ใช้กับแอปได้ ให้เรียกใช้เมธอด activate()

    สำหรับกรณีที่คุณต้องการดึงข้อมูลและเปิดใช้งานค่าในการเรียกครั้งเดียว สามารถใช้คำขอ fetchAndActivate() เพื่อดึงค่าจาก Remote Config และทำให้ใช้งานได้ในแอป

    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: ฟังข้อมูลอัปเดตแบบเรียลไทม์

หลังจากดึงข้อมูลค่าพารามิเตอร์แล้ว คุณจะใช้ Remote Config แบบเรียลไทม์เพื่อทำสิ่งต่อไปนี้ได้ ฟังอัปเดตจากแบ็กเอนด์ Remote Config เรียลไทม์ Remote Config ส่งสัญญาณไปยังอุปกรณ์ที่เชื่อมต่อเมื่อมีอัปเดตและ ดึงข้อมูลการเปลี่ยนแปลงโดยอัตโนมัติหลังจากที่คุณเผยแพร่ Remote Config ใหม่ เวอร์ชัน

Firebase SDK สำหรับ Android v21.3.0 ขึ้นไป (Firebase BoM) รองรับการอัปเดตแบบเรียลไทม์ v31.2.4 ขึ้นไป)

  1. ในแอป ให้ใช้ addOnConfigUpdateListener() เพื่อเริ่มฟังข้อมูลอัปเดต และดึงข้อมูลค่าพารามิเตอร์ใหม่โดยอัตโนมัติ ใช้ onUpdate() Callback เพื่อเปิดใช้การกำหนดค่าที่อัปเดตแล้ว

    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<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    displayWelcomeMessage();
                }
            });
        }
        @Override
        public void onError(FirebaseRemoteConfigException error) {
            Log.w(TAG, "Config update error with code: " + error.getCode(), error);
        }
    });
  2. ครั้งต่อไปที่คุณเผยแพร่ Remote Config เวอร์ชันใหม่ อุปกรณ์ ที่กำลังใช้งานแอปของคุณอยู่และรอรับการเปลี่ยนแปลงอยู่การเรียกฟังก์ชัน ConfigUpdateListener

การควบคุม

หากแอปดึงข้อมูลหลายครั้งเกินไปในช่วงเวลาสั้นๆ การดึงข้อมูลจะ มีการควบคุมและ SDK กลับมา FirebaseRemoteConfigFetchThrottledException ก่อน SDK เวอร์ชัน 17.0.0 ขีดจำกัดคือคำขอดึงข้อมูล 5 รายการใน 60 นาที (เวอร์ชันใหม่จะมีขีดจำกัดที่อนุญาตมากกว่า)

ระหว่างการพัฒนาแอป คุณอาจต้องดึงข้อมูลและเปิดใช้งานการกำหนดค่า บ่อย (หลายครั้งต่อชั่วโมง) เพื่อให้คุณปรับปรุง ได้อย่างรวดเร็วเมื่อคุณพัฒนาและ ทดสอบแอปของคุณ การอัปเดต Remote Config แบบเรียลไทม์จะข้าม แคชเมื่อมีการอัปเดตการกำหนดค่าในเซิร์ฟเวอร์ รองรับการปรับปรุงซ้ำอย่างรวดเร็ว ในโปรเจ็กต์ที่มีนักพัฒนาซอฟต์แวร์ ไม่เกิน 10 คน คุณสามารถตั้งค่า ออบเจ็กต์ FirebaseRemoteConfigSettings ที่มีช่วงเวลาการดึงข้อมูลขั้นต่ำต่ำ (setMinimumFetchIntervalInSeconds) ในแอปของคุณ

ช่วงเวลาการดึงข้อมูลขั้นต่ำเริ่มต้นสำหรับ Remote Config คือ 12 ชั่วโมง ซึ่ง หมายความว่าระบบจะไม่ดึงข้อมูลการกำหนดค่าจากแบ็กเอนด์มากกว่า 1 ครั้งใน 12 ชั่วโมง โดยไม่คำนึงถึงว่ามีการดึงข้อมูลจริงๆ เป็นจำนวนเท่าใด โดยเฉพาะอย่างยิ่ง ช่วงเวลาการดึงข้อมูลขั้นต่ำจะกำหนดตามลำดับต่อไปนี้

  1. พารามิเตอร์ใน fetch(long)
  2. พารามิเตอร์ใน FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. ค่าเริ่มต้นคือ 12 ชั่วโมง

หากต้องการกำหนดช่วงเวลาการดึงข้อมูลขั้นต่ำเป็นค่าที่กำหนดเอง ให้ใช้ FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)

ขั้นตอนถัดไป

หากยังไม่ได้สำรวจ โปรดดู Remote Config กรณีการใช้งาน แล้วลองดูที่ แนวคิดหลักและเอกสารกลยุทธ์ขั้นสูง ได้แก่