ทำตามขั้นตอนเหล่านี้เพื่อตั้งค่าไคลเอนต์ FCM บน Flutter
การตั้งค่าและข้อกำหนดเฉพาะแพลตฟอร์ม
ขั้นตอนที่จำเป็นบางขั้นตอนขึ้นอยู่กับแพลตฟอร์มที่คุณกำหนดเป้าหมาย
iOS+
เปิดใช้งานความสามารถของแอพใน Xcode
ก่อนที่แอปพลิเคชันของคุณจะเริ่มรับข้อความได้ คุณต้องเปิดใช้งานการแจ้งเตือนแบบพุชและโหมดเบื้องหลังในโครงการ Xcode ของคุณ
- เปิดพื้นที่ทำงานโครงการ Xcode ของคุณ (
ios/Runner.xcworkspace
) - เปิดใช้งานการแจ้งเตือนแบบพุช
- เปิดใช้ งานการดึงพื้นหลัง และ โหมดการดำเนินการพื้นหลัง การแจ้งเตือนระยะไกล
อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ
ก่อนที่คุณจะใช้ FCM ให้อัปโหลดใบรับรอง APN ของคุณไปยัง Firebase หากคุณยังไม่มีใบรับรอง APN ให้สร้างใบรับรองใน Apple Developer Member Center
- ภายในโครงการของคุณในคอนโซล Firebase เลือกไอคอนรูปเฟือง เลือก การตั้งค่าโครงการ จากนั้นเลือกแท็บ Cloud Messaging
- เลือกปุ่ม อัปโหลดใบรับรอง สำหรับใบรับรองการพัฒนา ใบรับรองการผลิต หรือทั้งสองอย่าง ต้องมีอย่างน้อยหนึ่งรายการ
- สำหรับใบรับรองแต่ละรายการ ให้เลือกไฟล์ .p12 และระบุรหัสผ่าน หากมี ตรวจสอบให้แน่ใจว่ารหัสชุดสำหรับใบรับรองนี้ตรงกับรหัสชุดของแอปของคุณ เลือก บันทึก
วิธีการหมุนวน
หากต้องการใช้ปลั๊กอิน FCM Flutter บนอุปกรณ์ Apple คุณต้องไม่ปิดใช้งานวิธีการหมุนวน จำเป็นต้องมีการ Swizzling และหากไม่มีฟีเจอร์ Firebase ที่สำคัญ เช่น การจัดการโทเค็น FCM จะทำงานไม่ถูกต้อง
แอนดรอยด์
บริการ Google Play
ไคลเอนต์ FCM ต้องการอุปกรณ์ที่ใช้ Android 4.4 ขึ้นไปซึ่งติดตั้งบริการ Google Play หรือโปรแกรมจำลองที่ใช้ Android 4.4 พร้อม Google API โปรดทราบว่าคุณไม่จำกัดเฉพาะการปรับใช้แอป Android ผ่าน Google Play Store
แอปที่ใช้ Play Services SDK ควรตรวจสอบอุปกรณ์เพื่อหา APK ของบริการ Google Play ที่ใช้งานร่วมกันได้ก่อนที่จะเข้าถึงคุณลักษณะของบริการ Google Play ขอแนะนำให้ทำเช่นนี้ในสองที่: ในเมธอด onCreate()
ของกิจกรรมหลัก และในเมธอด onResume()
การเช็คอิน onCreate()
ทำให้แน่ใจว่าแอปไม่สามารถใช้งานได้หากไม่มีการตรวจสอบที่สำเร็จ การเช็คอิน onResume()
ช่วยให้มั่นใจว่าหากผู้ใช้กลับไปที่แอพที่กำลังทำงานอยู่ด้วยวิธีอื่น เช่น ผ่านปุ่มย้อนกลับ การตรวจสอบจะยังคงดำเนินการอยู่
หากอุปกรณ์ไม่มีบริการ Google Play เวอร์ชันที่ใช้งานร่วมกันได้ แอปของคุณสามารถเรียก GoogleApiAvailability.makeGooglePlayServicesAvailable()
เพื่อให้ผู้ใช้ดาวน์โหลดบริการ Google Play จาก Play Store
เว็บ
กำหนดค่าข้อมูลรับรองเว็บด้วย FCM
เว็บอินเตอร์เฟส FCM ใช้ข้อมูลรับรองของเว็บที่เรียกว่าคีย์ "Voluntary Application Server Identification" หรือ "VAPID" เพื่ออนุญาตให้ส่งคำขอไปยังบริการพุชผ่านเว็บที่รองรับ หากต้องการติดตามแอปของคุณเพื่อรับการแจ้งเตือน คุณต้องเชื่อมโยงคีย์คู่หนึ่งกับโปรเจ็กต์ Firebase คุณสามารถสร้างคู่คีย์ใหม่หรือนำเข้าคู่คีย์ที่มีอยู่ผ่านคอนโซล Firebase
สร้างคู่คีย์ใหม่
เปิดแท็บ Cloud Messaging ของบานหน้าต่าง การตั้งค่า คอนโซล Firebase และเลื่อนไปที่ส่วน การกำหนดค่าเว็บ
ในแท็บ ใบรับรอง Web Push คลิก สร้างคู่คีย์ คอนโซลแสดงการแจ้งเตือนว่าคู่คีย์ถูกสร้างขึ้น และแสดงสตริงคีย์สาธารณะและวันที่เพิ่ม
นำเข้าคู่คีย์ที่มีอยู่
หากคุณมีคู่คีย์ที่คุณใช้กับเว็บแอปอยู่แล้ว คุณสามารถนำเข้าไปยัง FCM เพื่อให้คุณสามารถเข้าถึงอินสแตนซ์ของเว็บแอปที่มีอยู่ผ่าน FCM API คุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ Firebase ระดับเจ้าของจึงจะนำเข้าคีย์ได้ นำเข้าคีย์สาธารณะและส่วนตัวที่มีอยู่ในรูปแบบการเข้ารหัสที่ปลอดภัยของ URL ฐาน 64:
เปิดแท็บ Cloud Messaging ของบานหน้าต่าง การตั้งค่า คอนโซล Firebase และเลื่อนไปที่ส่วน การกำหนดค่าเว็บ
ในแท็บ ใบรับรอง Web Push ให้ค้นหาและเลือกข้อความลิงก์ "นำเข้าคู่คีย์ที่มีอยู่"
ในกล่อง โต้ตอบนำเข้าคู่คีย์ ให้ระบุคีย์สาธารณะและคีย์ส่วนตัวของคุณในฟิลด์ที่เกี่ยวข้อง แล้วคลิก นำเข้า คอนโซลแสดงสตริงคีย์สาธารณะและวันที่เพิ่ม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบของคีย์และวิธีสร้างคีย์ โปรดดูที่ คีย์ของเซิร์ฟเวอร์แอ็พพลิเค ชัน
ติดตั้งปลั๊กอิน FCM
ติดตั้งและเริ่มต้นปลั๊กอิน Firebase สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ
จากรูทของโปรเจ็กต์ Flutter ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:
flutter pub add firebase_messaging
เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:
flutter run
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ใดอุปกรณ์หนึ่ง คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทำบทช่วยสอนนี้ให้เสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้คัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกคืน
หากต้องการดึงโทเค็นการลงทะเบียนปัจจุบันสำหรับอินสแตนซ์ของแอป ให้เรียก getToken()
หากไม่ได้รับอนุญาตในการแจ้งเตือน วิธีนี้จะถามผู้ใช้ถึงสิทธิ์ในการแจ้งเตือน มิฉะนั้น จะส่งคืนโทเค็นหรือปฏิเสธอนาคตเนื่องจากข้อผิดพลาด
final fcmToken = await FirebaseMessaging.instance.getToken();
บนแพลตฟอร์มเว็บ ให้ส่งรหัสสาธารณะ VAPID ของคุณไปยัง getToken()
:
final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");
หากต้องการรับการแจ้งเตือนเมื่อมีการอัปเดตโทเค็น ให้สมัครรับสตรีม onTokenRefresh
:
FirebaseMessaging.instance.onTokenRefresh
.listen((fcmToken) {
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
})
.onError((err) {
// Error getting token.
});
ป้องกันการเริ่มต้นอัตโนมัติ
เมื่อสร้างโทเค็นการลงทะเบียน FCM ไลบรารีจะอัปโหลดตัวระบุและข้อมูลการกำหนดค่าไปยัง Firebase หากคุณต้องการป้องกันการสร้างโทเค็นอัตโนมัติ ให้ปิดใช้งานการเริ่มต้นอัตโนมัติในขณะสร้าง
iOS
ใน iOS ให้เพิ่มค่าข้อมูลเมตาใน Info.plist
ของคุณ :
FirebaseMessagingAutoInitEnabled = NO
แอนดรอยด์
ใน Android ให้ปิดใช้งานการรวบรวม Analytics และการเริ่มต้น FCM อัตโนมัติ (คุณต้องปิดใช้งานทั้งสองอย่าง) โดยเพิ่มค่าข้อมูลเมตาเหล่านี้ใน AndroidManifest.xml
:
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
เปิดใช้งาน FCM auto-init อีกครั้งเมื่อรันไทม์
หากต้องการเปิดใช้งาน auto-init สำหรับอินสแตนซ์ของแอปเฉพาะ ให้เรียก setAutoInitEnabled()
:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
ค่านี้จะคงอยู่ตลอดการรีสตาร์ทแอปเมื่อตั้งค่า
ขั้นตอนถัดไป
หลังจากตั้งค่าแอปไคลเอนต์แล้ว คุณก็พร้อมที่จะเริ่มส่งข้อความดาวน์สตรีมด้วย ตัวเขียนการแจ้งเตือน โปรดดู ส่งข้อความทดสอบไปยังแอปที่ทำงานเบื้องหลัง
หากต้องการเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ คุณจะต้อง ติดตั้งเซิร์ฟเวอร์
จากนั้นในไคลเอนต์แอปของคุณ: