ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: การส่งข้อความแจ้งเตือนการทดสอบจาก ผู้แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังของอุปกรณ์ หน้านี้แสดงขั้นตอนทั้งหมดเพื่อให้บรรลุตามนี้ ตั้งแต่การตั้งค่าไปจนถึงการยืนยัน — อาจครอบคลุมขั้นตอนที่คุณได้ทำไปแล้วหากคุณ ตั้งค่าแอพ Flutter สำหรับ FCM
ติดตั้งปลั๊กอิน FCM
ติดตั้งและเริ่มต้น Firebase SDK สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ
จากรูทของโปรเจ็กต์ Flutter ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:
flutter pub add firebase_messaging
เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:
flutter run
เข้าถึงโทเค็นการลงทะเบียน
หากต้องการส่งข้อความไปยังอุปกรณ์ใดอุปกรณ์หนึ่ง คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทำบทช่วยสอนนี้ให้เสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้คัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกคืน
หากต้องการดึงโทเค็นการลงทะเบียนปัจจุบันสำหรับอินสแตนซ์ของแอป ให้เรียก getToken()
หากไม่ได้รับอนุญาตในการแจ้งเตือน วิธีนี้จะถามผู้ใช้ถึงสิทธิ์ในการแจ้งเตือน มิฉะนั้น จะส่งคืนโทเค็นหรือปฏิเสธอนาคตเนื่องจากข้อผิดพลาด
final fcmToken = await FirebaseMessaging.instance.getToken();
ส่งข้อความแจ้งเตือนการทดสอบ
ติดตั้งและเรียกใช้แอพบนอุปกรณ์เป้าหมาย ในอุปกรณ์ Apple คุณจะต้องยอมรับคำขออนุญาตเพื่อรับการแจ้งเตือนระยะไกล
ตรวจสอบให้แน่ใจว่าแอปอยู่ในพื้นหลังของอุปกรณ์
ในคอนโซล Firebase ให้เปิด หน้าการรับส่งข้อความ
หากนี่คือข้อความแรกของคุณ ให้เลือก สร้างแคมเปญแรกของคุณ
- เลือก ข้อความแจ้งเตือนของ Firebase และเลือก สร้าง
มิฉะนั้น ในแท็บ แคมเปญ เลือก แคมเปญใหม่ จากนั้นเลือก การแจ้งเตือน
ป้อนข้อความ ฟิลด์อื่นๆ ทั้งหมดเป็นตัวเลือก
เลือก ส่งข้อความทดสอบ จากบานหน้าต่างด้านขวา
ในฟิลด์ที่มีป้ายกำกับ เพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้
เลือก ทดสอบ
หลังจากที่คุณเลือก ทดสอบ อุปกรณ์ไคลเอ็นต์เป้าหมาย (ที่มีแอปอยู่เบื้องหลัง) ควรได้รับการแจ้งเตือน
สำหรับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอปของคุณ โปรดดูแด ชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ Apple และ Android พร้อมด้วยข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android
โต้ตอบการจัดการ
เมื่อผู้ใช้แตะการแจ้งเตือน ลักษณะการทำงานเริ่มต้นของทั้ง Android และ iOS คือการเปิดแอปพลิเคชัน หากแอปพลิเคชันถูกยกเลิก แอปพลิเคชันจะเริ่มต้นและหากแอปพลิเคชันอยู่ในพื้นหลัง แอปพลิเคชันจะถูกนำไปที่ส่วนหน้า
ขึ้นอยู่กับเนื้อหาของการแจ้งเตือน คุณอาจต้องการจัดการการโต้ตอบของผู้ใช้เมื่อแอปพลิเคชันเปิดขึ้น ตัวอย่างเช่น ถ้าข้อความแชทใหม่ถูกส่งโดยใช้การแจ้งเตือนและผู้ใช้เลือกข้อความนั้น คุณอาจต้องการเปิดการสนทนาที่ต้องการเมื่อแอปพลิเคชันเปิดขึ้น
แพ็คเกจ firebase-messaging
มีสองวิธีในการจัดการการโต้ตอบนี้:
-
getInitialMessage()
: หากแอปพลิเคชันถูกเปิดจากสถานะสิ้นสุด เมธอดนี้จะส่งคืนFuture
ที่มีRemoteMessage
เมื่อใช้แล้วRemoteMessage
จะถูกลบออก -
onMessageOpenedApp
:Stream
ที่โพสต์RemoteMessage
เมื่อเปิดแอปพลิเคชันจากสถานะพื้นหลัง
เพื่อให้แน่ใจว่าผู้ใช้ของคุณได้รับประสบการณ์ที่ราบรื่น คุณควรจัดการทั้งสองสถานการณ์ ตัวอย่างโค้ดด้านล่างแสดงวิธีการบรรลุผลสำเร็จ:
class Application extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Application();
}
class _Application extends State<Application> {
// In this example, suppose that all messages contain a data field with the key 'type'.
Future<void> setupInteractedMessage() async {
// Get any messages which caused the application to open from
// a terminated state.
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
// If the message also contains a data property with a "type" of "chat",
// navigate to a chat screen
if (initialMessage != null) {
_handleMessage(initialMessage);
}
// Also handle any interaction when the app is in the background via a
// Stream listener
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
if (message.data['type'] == 'chat') {
Navigator.pushNamed(context, '/chat',
arguments: ChatArguments(message),
);
}
}
@override
void initState() {
super.initState();
// Run code required to handle interacted messages in an async function
// as initState() must not be async
setupInteractedMessage();
}
@override
Widget build(BuildContext context) {
return Text("...");
}
}
วิธีจัดการกับการโต้ตอบขึ้นอยู่กับการตั้งค่าแอปพลิเคชันของคุณ ตัวอย่างด้านบนแสดงตัวอย่างพื้นฐานของการใช้ StatefulWidget
ขั้นตอนถัดไป
ส่งข้อความไปยังแอปเบื้องหน้า
เมื่อคุณส่งข้อความแจ้งเตือนสำเร็จในขณะที่แอปของคุณอยู่ในพื้นหลัง ให้ดู ที่ รับข้อความในแอป Flutter เพื่อเริ่มต้นส่งไปยังแอปเบื้องหน้า
ไปไกลกว่าข้อความแจ้งเตือน
หากต้องการเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ คุณจะต้อง ติดตั้งเซิร์ฟเวอร์
จากนั้นในไคลเอนต์แอปของคุณ: