เอกสารนี้มีรายการตรวจสอบแนวทางปฏิบัติแนะนำและสิ่งที่ควรพิจารณาก่อนเปิดตัวแอป Firebase ในเวอร์ชันที่ใช้งานจริง
แนวทางปฏิบัติแนะนำทั่วไปสำหรับการเปิดตัว
ตรวจสอบว่าคุณได้ทดสอบการเปลี่ยนแปลงทั้งหมดใน Firebase Local Emulator Suite (สำหรับผลิตภัณฑ์ที่รองรับ) ก่อนที่จะติดตั้งใช้งานในเวอร์ชันที่ใช้งานจริง การทดสอบอย่างละเอียดจะช่วยป้องกันข้อผิดพลาดที่อาจมีค่าใช้จ่ายสูง
เริ่ม บังคับใช้ Firebase App Check สำหรับทุกบริการที่รองรับ App Check ช่วยให้มั่นใจว่ามีเพียงแอปจริงของคุณเท่านั้นที่เข้าถึง บริการและทรัพยากรแบ็กเอนด์ได้
ใช้ Firebase Remote Config การเปิดตัว เพื่อ เปิดตัวฟีเจอร์และการอัปเดตใหม่ๆ ในแอปอย่างปลอดภัยและค่อยๆ เป็นค่อยๆ ไป
หากยังไม่ได้ดำเนินการ ให้พิจารณาตั้งค่า Firebase Crashlytics ซึ่งเป็นเครื่องมือรายงานข้อขัดข้องแบบเรียลไทม์ที่มีขนาดเล็ก ซึ่งจะช่วยให้คุณติดตาม จัดลำดับความสำคัญ และแก้ไขปัญหาด้านความเสถียรที่ทำให้คุณภาพของแอปแย่ลง
ทราบขีดจำกัดของแพ็กเกจราคาและตั้งค่าการแจ้งเตือนงบประมาณ
ตรวจสอบว่าคุณไม่ได้ใช้งานถึงขีดจำกัดการใช้งานและโควต้าหลังจากเปิดตัวแอปในเวอร์ชันที่ใช้งานจริง โดยเฉพาะอย่างยิ่งหากคุณใช้แพ็กเกจ Spark แบบไม่มีค่าใช้จ่าย พิจารณาอัปเกรดเป็นแพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้
ตั้งค่า การแจ้งเตือนงบประมาณ สำหรับโปรเจ็กต์
โปรดทราบว่าการแจ้งเตือนงบประมาณ ไม่ใช่ ขีดจำกัดสูงสุด ของงบประมาณ ระบบจะส่งการแจ้งเตือนให้คุณเมื่อคุณใช้งานใกล้ถึงหรือเกินเกณฑ์ที่กำหนดไว้ เพื่อให้คุณดำเนินการในแอปหรือโปรเจ็กต์ได้
พิจารณาตั้งค่า การแจ้งเตือนและการดำเนินการขั้นสูง, เช่น ฟังก์ชันที่จะปิดใช้การเรียกเก็บเงินเมื่อได้รับการแจ้งเตือน
หากคุณใช้ Firebase AI Logic, Firebase App Hosting, Cloud Functions for Firebase และ Firebase Extensions เราขอแนะนำอย่างยิ่งให้ คุณตั้งค่าขีดจำกัดการใช้จ่าย ด้วย ซึ่งจะหยุดบริการที่เกี่ยวข้องชั่วคราวหากโปรเจ็กต์ของคุณใช้งบประมาณถึงจำนวนที่ตั้งไว้สำหรับบริการนั้น
ตรวจสอบการใช้งานในแดชบอร์ดเฉพาะผลิตภัณฑ์หรือ ใน การใช้งานและการเรียกเก็บเงินแดชบอร์ด ในFirebaseคอนโซล
ตรวจสอบว่าโปรเจ็กต์และแอป Firebase เป็นไปตามแนวทางปฏิบัติแนะนำ
ไม่ว่าคุณจะเป็นนักพัฒนาแอปเพียงคนเดียวหรือเป็นทีมขนาดใหญ่ สิ่งสำคัญคือต้องตรวจสอบว่าโปรเจ็กต์ แอป และทรัพยากร Firebase ได้รับการปกป้อง ปลอดภัย และสามารถพัฒนาไปพร้อมกับการเปลี่ยนแปลงในทีมได้
โปรดทราบว่าโปรเจ็กต์ Firebase เป็นเพียงGoogle Cloud โปรเจ็กต์ที่เปิดใช้บริการและการกำหนดค่า Firebase ซึ่งหมายความว่าแนวทางปฏิบัติแนะนำมากมายที่ Google Cloud แนะนำนั้นใช้ได้กับ Firebase ด้วย
ใช้โปรเจ็กต์ Firebase ที่แตกต่างกันสำหรับการพัฒนา การทดสอบ และการใช้งานจริง
พยายามจำกัดการเปิดเผยโปรเจ็กต์ที่เชื่อมโยงกับ แอปเวอร์ชันที่ใช้งานจริงโดยไม่คาดคิด ดูข้อมูลเพิ่มเติมเกี่ยวกับ การตั้งค่าเวิร์กโฟลว์การพัฒนา
ปกป้องโปรเจ็กต์ที่สำคัญ โดยเฉพาะอย่างยิ่งโปรเจ็กต์ที่เชื่อมโยงกับแอปเวอร์ชันที่ใช้งานจริง
ใช้ การระงับสิทธิ์ของโปรเจ็กต์ เพื่อป้องกันการลบโปรเจ็กต์โดยไม่ตั้งใจ
ใช้ แท็ก"Prod" ภายใน Firebaseคอนโซล เพื่อให้ระบุสภาพแวดล้อม เวอร์ชันที่ใช้งานจริงได้ง่ายขึ้น
หากยังไม่ได้ดำเนินการ ให้พิจารณาตั้งค่า Google Cloud องค์กร และเพิ่ม โปรเจ็กต์ Firebase ลงในองค์กร
เพิ่มเจ้าของมากกว่า 1 คนในโปรเจ็กต์ Firebase โดยเฉพาะอย่างยิ่งหากโปรเจ็กต์ ไม่ได้ อยู่ในองค์กร Google Cloud ดูข้อมูลเพิ่มเติมเกี่ยวกับ เวลาและวิธีกำหนดเจ้าของ สำหรับโปรเจ็กต์ Firebase
เพิ่มสมาชิกโปรเจ็กต์ (หรือที่เรียกว่า "ผู้รับผิดชอบ") เป็น Google Groups แทนที่จะเพิ่มทีละคน
การใช้กลุ่มจะช่วยให้กำหนดบทบาทให้กับสมาชิกในทีมได้ง่ายขึ้น รวมถึงจัดการผู้ที่มีสิทธิ์เข้าถึงโปรเจ็กต์ Firebase โดยเฉพาะอย่างยิ่งหากสมาชิกในทีมมีการหมุนเวียนหรือออกจากทีม
ให้สิทธิ์เข้าถึงโปรเจ็กต์และทรัพยากร Firebase ในระดับที่เหมาะสมแก่สมาชิกโปรเจ็กต์แต่ละคน (หรือที่เรียกว่า "ผู้รับผิดชอบ") ดูข้อมูลเพิ่มเติมได้ที่ จัดการการเข้าถึงโปรเจ็กต์ด้วย Firebase IAM
ตรวจสอบว่าสมาชิกโปรเจ็กต์แต่ละคน (หรือที่เรียกว่า "ผู้รับผิดชอบ") ตั้งค่ากำหนดให้รับการแจ้งเตือนเกี่ยวกับผลิตภัณฑ์หรือสถานะโปรเจ็กต์ที่เฉพาะเจาะจง (เช่น การเปลี่ยนแปลงแพ็กเกจการเรียกเก็บเงินหรือขีดจำกัดโควต้า) ดูข้อมูลเพิ่มเติมได้ที่ รับการแจ้งเตือนจาก Firebase
นอกจากนี้ คุณยังเลือกปรับแต่ง "ผู้ติดต่อที่จำเป็น" ของโปรเจ็กต์ได้หากต้องการให้สมาชิกโปรเจ็กต์ที่เฉพาะเจาะจงหรือเพิ่มเติมได้รับการแจ้งเตือน ซึ่งจะเป็นประโยชน์อย่างยิ่งในการตรวจสอบว่ามีผู้รับการแจ้งเตือนเกี่ยวกับการเรียกเก็บเงิน กฎหมาย และการเปลี่ยนแปลงผลิตภัณฑ์มากกว่าเพียงเจ้าของโปรเจ็กต์
จำกัดคีย์ API ของ Firebase ให้ใช้ได้เฉพาะ API ที่ ต้องอยู่ใน รายการที่อนุญาตของคีย์ API นอกจากนี้ โปรดดูข้อมูลเกี่ยวกับคีย์ API ใน รายการตรวจสอบความปลอดภัยของ Firebase
เตรียมบริการเฉพาะที่ใช้ในแอป
ผลิตภัณฑ์และบริการแต่ละรายการที่ใช้ในแอปอาจมีสิ่งที่ควรพิจารณาที่เฉพาะเจาะจงเมื่อใช้ในเวอร์ชันที่ใช้งานจริง
Firebase AI Logic
Google Analytics
กำหนดเงื่อนไขกลุ่มเป้าหมายสำหรับ Google Analytics เพื่อเริ่มรวบรวมข้อมูลวิเคราะห์ เมื่อเปิดตัวแอป
พิจารณา เปิดใช้การส่งออกข้อมูล Google Analytics ไปยัง BigQuery เพื่อให้คุณวิเคราะห์ข้อมูลด้วย BigQuery SQL หรือส่งออก ข้อมูลเพื่อใช้กับเครื่องมือของคุณเองได้
จำกัดพร็อพเพอร์ตี้ผู้ใช้ให้มีเฉพาะข้อมูลที่เกี่ยวข้อง กับวงจรชีวิตของแอปทั้งหมด โดย คุณสร้างพร็อพเพอร์ตี้ได้ไม่เกินจำนวนที่กำหนด, และจะเก็บพร็อพเพอร์ตี้ไว้ไม่ได้
ตรวจสอบการตั้งค่าสำหรับ Google Analytics บทบาท สำหรับ Google Analyticsพร็อพเพอร์ตี้และบัญชีของคุณ ระบบจะจัดการสิทธิ์เหล่านี้แยกต่างหากจากสิทธิ์และบทบาท IAM ของโปรเจ็กต์ Firebase
ตรวจสอบว่า App Store ID และ Team ID (หากจำเป็น) ถูกต้องในการ ตั้งค่าโปรเจ็กต์ ของคอนโซล Firebase
App Check
ตรวจสอบว่า Team ID ถูกต้องในการตั้งค่า โปรเจ็กต์ ของคอนโซล Firebase
หากยังไม่ได้ดำเนินการ ให้เริ่ม บังคับใช้ Firebase App Check สำหรับทุกบริการที่รองรับ App Check ช่วยให้มั่นใจว่ามีเพียงแอปจริงของคุณเท่านั้นที่เข้าถึง บริการและทรัพยากรแบ็กเอนด์ได้
Authentication
ปิดใช้ ผู้ให้บริการ ที่คุณไม่ได้ใช้ (โดยเฉพาะการตรวจสอบสิทธิ์แบบไม่ระบุตัวตน)
หากแอปใช้การลงชื่อเข้าใช้ด้วย Google ให้ปรับเปลี่ยน หน้าจอขอความยินยอม OAuth ในแบบของคุณ
ปรับแต่งโดเมนและผู้ส่งสำหรับ Authentication บริการส่งอีเมล
หากคุณใช้บริการยืนยันทาง SMS ของ Identity Platform ให้เริ่ม บังคับใช้ Firebase App Check และกำหนดค่านโยบาย ภูมิภาค SMS เพื่อปกป้องแอปจากการละเมิดทาง SMS
ใช้การจัดการข้อผิดพลาดในแพลตฟอร์ม Apple สำหรับ ข้อผิดพลาดAuthenticationที่พบบ่อย
เพิ่มแฮช SHA-1 สำหรับใบรับรองการลงนามของแอปใน การตั้งค่าโปรเจ็กต์ ของคอนโซล Firebase ระบบต้องใช้แฮช SHA-1 หากแอปใช้การลงชื่อเข้าใช้ด้วยหมายเลขโทรศัพท์หรือการลงชื่อเข้าใช้ด้วย Google (ซึ่งมีข้อกำหนดเกี่ยวกับไคลเอ็นต์ OAuth)
เพิ่มการควบคุมการเข้าถึงสำหรับโดเมนเพื่อป้องกันการใช้งานที่ไม่ได้รับอนุญาต โดยเฉพาะอย่างยิ่ง ให้สิทธิ์เข้าถึงโดเมนเวอร์ชันที่ใช้งานจริงใน ส่วน Authentication ของคอนโซล Firebase (สำคัญอย่างยิ่งหากคุณใช้ผลิตภัณฑ์ที่ ต้องอาศัย Firebase Security Rules)
Cloud Firestore
กำหนดค่า Cloud Firestore Security Rules เพื่อป้องกัน การเข้าถึงข้อมูลโดยไม่ตั้งใจ
ใช้ ProGuard เพื่อการลดขนาดโค้ด ในบิลด์ที่เผยแพร่ หากไม่มี ProGuard, Cloud Firestore SDK และทรัพยากร Dependency อาจทำให้ขนาด APK เพิ่มขึ้น
Cloud Messaging
พิจารณา เปิดใช้การส่งออกข้อมูล Cloud Messaging ไปยัง BigQuery เพื่อให้คุณวิเคราะห์ข้อมูลด้วย BigQuery SQL หรือส่งออก ข้อมูลเพื่อใช้กับเครื่องมือของคุณเองได้
อัปโหลดคีย์การให้สิทธิ์ APNS สำหรับ Cloud Messaging ใน แอป Apple ใน Firebase คอนโซล หากใช้ใบรับรอง APNS ให้ตรวจสอบว่าได้อัปโหลดใบรับรอง APNS เวอร์ชันที่ใช้งานจริงแล้ว
พิจารณาเปิดใช้ การบันทึกการตรวจสอบระบบคลาวด์ สำหรับ Cloud Messaging เพื่อให้คุณสร้างบันทึกการตรวจสอบที่บันทึกกิจกรรมการดูแลระบบและการเข้าถึง ภายในทรัพยากร Google Cloud ได้
อย่าลืมอัปเดตเป็น SDK เวอร์ชันล่าสุดเป็นประจำเพื่อให้ได้รับฟีเจอร์ใหม่และการอัปเดตความปลอดภัย
ทำตามแนวทางปฏิบัติแนะนำในการจัดการโทเค็นการลงทะเบียน Cloud Messagingในเซิร์ฟเวอร์แอป บันทึกโทเค็นการลงทะเบียนพร้อมการประทับเวลา อัปเดตโทเค็นเมื่อมีการเปลี่ยนแปลง และนำโทเค็นที่ล้าสมัย (ไม่มีการใช้งานมานานกว่า 1 เดือน) ออกเพื่อให้การรายงานการส่งมีความถูกต้องและการกำหนดเป้าหมายข้อความมีประสิทธิภาพ
ทำตาม แนวทางปฏิบัติแนะนำเมื่อส่ง Cloud Messaging ข้อความใน วงกว้าง ใช้ HTTP v1 API หรือ Firebase Admin SDK, ใช้ Exponential Backoff พร้อม Jitter สำหรับการลองใหม่ และปฏิบัติตาม
Retry-Afterส่วนหัวเพื่อหลีกเลี่ยงการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็วและการจำกัดอัตราคำขอ
Cloud Storage
- กำหนดค่า Cloud Storage Security Rules เพื่อป้องกันการเข้าถึงข้อมูลโดยไม่ตั้งใจ
Crashlytics
ตรวจสอบว่าสมาชิกโปรเจ็กต์แต่ละคน (หรือที่เรียกว่า "ผู้รับผิดชอบ") ตั้งค่ากำหนดให้รับการแจ้งเตือนเกี่ยวกับ Crashlytics หรือสถานะโปรเจ็กต์ (เช่น การเปลี่ยนแปลงแพ็กเกจการเรียกเก็บเงินหรือขีดจำกัดโควต้า ) ดูข้อมูลเพิ่มเติมได้ที่ รับการแจ้งเตือนจาก Firebase
พิจารณา เปิดใช้การส่งออกข้อมูล Crashlytics ไปยัง BigQuery เพื่อให้คุณวิเคราะห์ข้อมูลด้วย BigQuery SQL หรือส่งออก ข้อมูลเพื่อใช้กับเครื่องมือของคุณเองได้
(Android และ iOS แบบเนทีฟเท่านั้น) พิจารณาเปิดใช้ ความช่วยเหลือจาก AI ใน Crashlytics เพื่อช่วย เร่งเวลาที่คุณใช้ในการทำความเข้าใจสาเหตุที่ทำให้เกิดข้อขัดข้องและ สิ่งที่ต้องทำ
อัปโหลดไฟล์ dSYM สำหรับบิลด์เวอร์ชันที่ใช้งานจริงเพื่อใช้ใน Crashlytics ตรวจสอบว่า Xcode สามารถ ประมวลผล dSYM และอัปโหลดไฟล์ได้โดยอัตโนมัติ
อัปโหลด การแมป ProGuard สำหรับบิลด์เวอร์ชันที่ใช้งานจริงเพื่อใช้ใน Crashlytics คุณอัปโหลดได้โดยใช้ Firebase CLI
ลิงก์ Firebase กับ Google Play เพื่อดูข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับสถานะของแอป Android เช่น คุณสามารถ กรองรายงานข้อขัดข้องของแอปตามแทร็กGoogle Play ซึ่งช่วยให้คุณ มุ่งเน้นแดชบอร์ดไปที่บิลด์ที่เฉพาะเจาะจงได้ดียิ่งขึ้น
สำหรับบิลด์ที่กำหนดเป้าหมายเป็น Android และใช้ IL2CPP ให้ ตรวจสอบว่าคุณได้ อัปโหลดสัญลักษณ์แบบเนทีฟ สำหรับการเรียกใช้บิลด์แต่ละครั้งที่คุณต้องการให้มีสัญลักษณ์ ไม่ว่าจะมี โค้ดหรือการเปลี่ยนแปลงการกำหนดค่าหรือไม่ก็ตาม
Dynamic Links
- Dynamic Links เลิกใช้งานแล้ว ดังนั้นเราขอแนะนำให้ย้ายข้อมูลออกจาก บริการ ดูข้อมูลเพิ่มเติมได้ในคำถามที่พบบ่อยเกี่ยวกับการเลิกใช้งาน
Firebase ML
Performance Monitoring
ตรวจสอบว่าสมาชิกโปรเจ็กต์แต่ละคน (หรือที่เรียกว่า "ผู้รับผิดชอบ") ตั้งค่ากำหนดให้รับการแจ้งเตือนเกี่ยวกับ Performance Monitoring หรือสถานะโปรเจ็กต์ (เช่น การเปลี่ยนแปลงแพ็กเกจการเรียกเก็บเงินหรือขีดจำกัดโควต้า) ดูข้อมูลเพิ่มเติมได้ที่ รับการแจ้งเตือนจาก Firebase
พิจารณา เปิดใช้การส่งออกข้อมูล Performance Monitoring ไปยัง BigQuery เพื่อให้คุณวิเคราะห์ข้อมูลด้วย BigQuery SQL หรือส่งออก ข้อมูลเพื่อใช้กับเครื่องมือของคุณเองได้
Realtime Database
กำหนดค่า Realtime Database Security Rules เพื่อป้องกันการเข้าถึงข้อมูลโดยไม่ตั้งใจ
ตรวจสอบว่าคุณพร้อมที่จะขยายขนาดแล้ว Realtime Database มี โควต้าเริ่มต้น ที่เพียงพอสำหรับแอปพลิเคชันส่วนใหญ่ แต่บางแอปอาจต้องใช้ความจุเพิ่มเติม
กำหนดค่ากฎ ProGuard ให้ทำงานร่วมกับ Realtime Database.
Remote Config
ตรวจสอบว่ากฎ Remote Config ที่เป็นแบบทดลองไม่ส่งผลกระทบต่อผู้ใช้เวอร์ชันที่ใช้งานจริง และมีการเผยแพร่ค่าเริ่มต้นของเซิร์ฟเวอร์และค่าเริ่มต้นในแอปที่เหมาะสมในแอป
พิจารณา กำหนดค่าพารามิเตอร์
minimum_versionใน Remote Config เพื่อให้คุณแจ้งหรือกำหนดให้ผู้ใช้อัปเดต แอปได้หากเวอร์ชันก่อนหน้าไม่เข้ากันหรือเลิกใช้งานแล้ว