ในการเริ่มต้นใช้งาน 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 เพื่อเริ่มส่งไปยังแอปที่อยู่เบื้องหน้า
ไปไกลกว่าข้อความแจ้งเตือน
หากต้องการเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ คุณจะต้องมี การใช้งานเซิร์ฟเวอร์
จากนั้นในไคลเอนต์แอปของคุณ: