ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าไคลเอ็นต์ FCM ใน Flutter
การตั้งค่าและข้อกำหนดเฉพาะแพลตฟอร์ม
ขั้นตอนที่จำเป็นบางอย่างจะขึ้นอยู่กับแพลตฟอร์มที่คุณกำหนดเป้าหมาย
iOS+
เปิดใช้ความสามารถของแอปใน Xcode
ก่อนที่แอปพลิเคชันจะเริ่มรับข้อความได้ คุณต้องเปิดใช้การแจ้งเตือนแบบพุชและโหมดพื้นหลังในโปรเจ็กต์ Xcode
- เปิดพื้นที่ทำงานของโปรเจ็กต์ Xcode (
ios/Runner.xcworkspace
) - เปิดใช้ข้อความ Push
- เปิดใช้การดึงข้อมูลในเบื้องหลังและการแจ้งเตือนจากระยะไกล โหมดการดำเนินการในเบื้องหลัง
อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs
ก่อนใช้ FCM ให้อัปโหลดใบรับรอง APNs ไปยัง Firebase หากยังไม่มีใบรับรอง APNs ให้สร้างในศูนย์สมาชิกนักพัฒนาซอฟต์แวร์ของ Apple
- ภายในโปรเจ็กต์ในคอนโซล Firebase ให้เลือกไอคอนรูปเฟือง เลือกการตั้งค่าโปรเจ็กต์ แล้วเลือกแท็บ Cloud Messaging
- เลือกปุ่มอัปโหลดใบรับรองสำหรับใบรับรองการพัฒนา ใบรับรองเวอร์ชันที่ใช้งานจริง หรือทั้ง 2 อย่าง โดยต้องระบุอย่างน้อย 1 รายการ
- สำหรับใบรับรองแต่ละรายการ ให้เลือกไฟล์ .p12 แล้วระบุรหัสผ่าน (หากมี) ตรวจสอบว่ารหัสแพ็กเกจสำหรับใบรับรองนี้ตรงกับรหัสแพ็กเกจของ แอปของคุณ แล้วเลือกบันทึก
การแลกเปลี่ยนเมธอด
หากต้องการใช้ปลั๊กอิน FCM Flutter ในอุปกรณ์ Apple คุณต้องไม่ปิดใช้การสลับเมธอด คุณต้องใช้ Swizzling และหากไม่มีฟีเจอร์นี้ ฟีเจอร์หลักของ Firebase เช่น การจัดการโทเค็น FCM จะทำงานไม่ถูกต้อง
Android
บริการ Google Play
ไคลเอ็นต์ FCM ต้องใช้อุปกรณ์ที่ใช้ Android 4.4 ขึ้นไปซึ่งติดตั้งบริการ Google Play ไว้ด้วย หรือโปรแกรมจำลองที่ใช้ Android 4.4 ที่มี Google APIs โปรดทราบว่าคุณไม่ได้ถูกจำกัดให้ใช้งานแอป Android ผ่าน Google Play Store เท่านั้น
แอปที่ใช้ SDK ของบริการ Play ควรตรวจสอบ APK ของบริการ Google Play ที่เข้ากันได้ในอุปกรณ์ก่อนเสมอ
ที่จะเข้าถึงฟีเจอร์ของบริการ Google Play เราขอแนะนำให้ดำเนินการนี้ใน 2 ที่ ได้แก่ ในเมธอด onCreate()
ของกิจกรรมหลัก และในเมธอด onResume()
ของกิจกรรมหลัก การตรวจสอบใน onCreate()
ช่วยให้มั่นใจว่าแอปจะใช้งานไม่ได้หากตรวจสอบไม่สำเร็จ การเช็คอิน
onResume()
ช่วยให้มั่นใจได้ว่าหากผู้ใช้กลับมาที่แอปที่กำลังทำงานผ่านวิธีอื่น
เช่น ผ่านปุ่มย้อนกลับ ระบบจะยังคงทำการเช็คอิน
หากอุปกรณ์ไม่มีบริการ Google Play เวอร์ชันที่เข้ากันได้ แอปของคุณจะเรียก GoogleApiAvailability.makeGooglePlayServicesAvailable()
เพื่ออนุญาตให้ผู้ใช้ดาวน์โหลดบริการ Google Play จาก Play Store ได้
เว็บ
กำหนดค่าข้อมูลเข้าสู่ระบบเว็บด้วย FCM
อินเทอร์เฟซเว็บของ FCM ใช้ข้อมูลเข้าสู่ระบบเว็บที่เรียกว่า "การระบุเซิร์ฟเวอร์แอปพลิเคชันโดยสมัครใจ" หรือคีย์ "VAPID" เพื่อให้สิทธิ์คำขอส่งไปยังบริการพุชบนเว็บที่รองรับ หากต้องการสมัครรับการแจ้งเตือนแบบพุชในแอป คุณต้องเชื่อมโยงคู่คีย์กับโปรเจ็กต์ Firebase คุณจะสร้างคู่คีย์ใหม่หรือนำเข้าคู่คีย์ที่มีอยู่ผ่านคอนโซล Firebase ก็ได้
สร้างคู่คีย์ใหม่
เปิดแท็บ Cloud Messaging ของแผงการตั้งค่าในคอนโซล Firebase แล้วเลื่อนไปที่ส่วนการกำหนดค่าเว็บ
ในแท็บใบรับรองการแจ้งเตือนแบบพุชบนเว็บ ให้คลิกสร้างคู่คีย์ คอนโซลจะแสดงการแจ้งเตือนว่ามีการสร้างคู่คีย์แล้ว รวมถึงแสดง สตริงคีย์สาธารณะและวันที่เพิ่ม
นำเข้าคู่คีย์ที่มีอยู่
หากมีคู่คีย์ที่ใช้กับเว็บแอปอยู่แล้ว คุณสามารถนำเข้าคู่คีย์ดังกล่าวไปยัง FCM เพื่อให้เข้าถึงอินสแตนซ์ของเว็บแอปที่มีอยู่ผ่าน FCM API ได้ หากต้องการนำเข้าคีย์ คุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ Firebase ในระดับเจ้าของ นำเข้าคีย์สาธารณะและคีย์ส่วนตัวที่มีอยู่ของคุณในรูปแบบที่เข้ารหัส Base64 URL ที่ปลอดภัย
เปิดแท็บ Cloud Messaging ของแผงการตั้งค่าในคอนโซล Firebase แล้วเลื่อนไปที่ส่วนการกำหนดค่าเว็บ
ในแท็บใบรับรองการแจ้งเตือนแบบพุชบนเว็บ ให้ค้นหาและเลือกข้อความลิงก์ "นำเข้า คู่คีย์ที่มีอยู่"
ในกล่องโต้ตอบนำเข้าคู่คีย์ ให้ระบุคีย์สาธารณะและคีย์ส่วนตัวใน ช่องที่เกี่ยวข้อง แล้วคลิกนำเข้า คอนโซลจะแสดง สตริงคีย์สาธารณะและวันที่เพิ่ม
ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบของคีย์และวิธีสร้างคีย์ได้ที่คีย์เซิร์ฟเวอร์แอปพลิเคชัน
ติดตั้งปลั๊กอิน FCM
ติดตั้งและเริ่มต้นใช้งานปลั๊กอิน Firebase สำหรับ Flutter หากยังไม่ได้ดำเนินการ
จากรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง ปลั๊กอิน
flutter pub add firebase_messaging
เมื่ออัปเดตเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ใหม่โดยทำดังนี้
flutter run
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ที่เฉพาะเจาะจง คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องใน คอนโซลการแจ้งเตือนเพื่อทำบทแนะนำนี้ให้เสร็จสมบูรณ์ โปรดคัดลอกโทเค็น หรือจัดเก็บอย่างปลอดภัยหลังจากดึงข้อมูลแล้ว
หากต้องการเรียกโทเค็นการลงทะเบียนปัจจุบันสำหรับอินสแตนซ์แอป ให้เรียกใช้
getToken()
หากไม่ได้รับสิทธิ์การแจ้งเตือน วิธีนี้จะ
ขอสิทธิ์การแจ้งเตือนจากผู้ใช้ ไม่เช่นนั้น ระบบจะแสดงผลโทเค็นหรือ
ปฏิเสธ Future เนื่องจากข้อผิดพลาด
// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);
// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
// APNS token is available, make FCM plugin API requests...
}
ในแพลตฟอร์มบนเว็บ ให้ส่งคีย์สาธารณะ 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
ใน Android ให้ปิดใช้การเก็บรวบรวมข้อมูล Analytics และการเริ่มต้น FCM โดยอัตโนมัติ (คุณต้อง
ปิดใช้ทั้ง 2 อย่าง) โดยเพิ่มค่าข้อมูลเมตาต่อไปนี้ลงใน 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 อีกครั้งที่รันไทม์
หากต้องการเปิดใช้การเริ่มต้นอัตโนมัติสำหรับอินสแตนซ์แอปที่เฉพาะเจาะจง ให้เรียกใช้ setAutoInitEnabled()
await FirebaseMessaging.instance.setAutoInitEnabled(true);
ค่านี้จะยังคงอยู่เมื่อรีสตาร์ทแอปเมื่อตั้งค่าแล้ว
ขั้นตอนถัดไป
หลังจากตั้งค่าแอปไคลเอ็นต์แล้ว คุณก็พร้อมที่จะเริ่มส่งข้อความดาวน์สตรีมด้วยเครื่องมือแต่งการแจ้งเตือน ดูส่งข้อความทดสอบไปยังแอปที่ทำงานในเบื้องหลัง
หากต้องการเพิ่มลักษณะการทำงานอื่นๆ ที่ซับซ้อนมากขึ้นให้กับแอป คุณจะต้องมีการติดตั้งใช้งานฝั่งเซิร์ฟเวอร์
จากนั้นในไคลเอ็นต์แอป ให้ทำดังนี้