ส่งข้อความทดสอบไปยังแอปที่ทำงานอยู่เบื้องหลัง

ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่ง่ายที่สุด: การส่งข้อความแจ้งเตือนการทดสอบจาก ผู้แต่งการแจ้งเตือน ไปยังอุปกรณ์การพัฒนาเมื่อแอปอยู่ในพื้นหลังของอุปกรณ์ หน้านี้แสดงขั้นตอนทั้งหมดเพื่อให้บรรลุตามนี้ ตั้งแต่การตั้งค่าไปจนถึงการยืนยัน — อาจครอบคลุมขั้นตอนที่คุณได้ทำไปแล้วหากคุณ ตั้งค่าแอพ Flutter สำหรับ FCM

ติดตั้งปลั๊กอิน FCM

  1. ติดตั้งและเริ่มต้น Firebase SDK สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ

  2. จากรูทของโปรเจ็กต์ Flutter ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน:

    flutter pub add firebase_messaging
    
  3. เมื่อเสร็จแล้ว ให้สร้างแอปพลิเคชัน Flutter ของคุณใหม่:

    flutter run
    

เข้าถึงโทเค็นการลงทะเบียน

หากต้องการส่งข้อความไปยังอุปกรณ์ใดอุปกรณ์หนึ่ง คุณต้องทราบโทเค็นการลงทะเบียนของอุปกรณ์นั้น เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอนโซลการแจ้งเตือนเพื่อทำบทช่วยสอนนี้ให้เสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้คัดลอกโทเค็นหรือเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกคืน

หากต้องการดึงโทเค็นการลงทะเบียนปัจจุบันสำหรับอินสแตนซ์ของแอป ให้เรียก getToken() หากไม่ได้รับอนุญาตในการแจ้งเตือน วิธีนี้จะถามผู้ใช้ถึงสิทธิ์ในการแจ้งเตือน มิฉะนั้น จะส่งคืนโทเค็นหรือปฏิเสธอนาคตเนื่องจากข้อผิดพลาด

final fcmToken = await FirebaseMessaging.instance.getToken();

ส่งข้อความแจ้งเตือนการทดสอบ

  1. ติดตั้งและเรียกใช้แอพบนอุปกรณ์เป้าหมาย ในอุปกรณ์ Apple คุณจะต้องยอมรับคำขออนุญาตเพื่อรับการแจ้งเตือนระยะไกล

  2. ตรวจสอบให้แน่ใจว่าแอปอยู่ในพื้นหลังของอุปกรณ์

  3. ในคอนโซล Firebase ให้เปิด หน้าการรับส่งข้อความ

  4. หากนี่คือข้อความแรกของคุณ ให้เลือก สร้างแคมเปญแรกของคุณ

    1. เลือก ข้อความแจ้งเตือนของ Firebase และเลือก สร้าง
  5. มิฉะนั้น ในแท็บ แคมเปญ เลือก แคมเปญใหม่ จากนั้นเลือก การแจ้งเตือน

  6. ป้อนข้อความ ฟิลด์อื่นๆ ทั้งหมดเป็นตัวเลือก

  7. เลือก ส่งข้อความทดสอบ จากบานหน้าต่างด้านขวา

  8. ในฟิลด์ที่มีป้ายกำกับ เพิ่มโทเค็นการลงทะเบียน FCM ให้ป้อนโทเค็นการลงทะเบียนที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้

  9. เลือก ทดสอบ

หลังจากที่คุณเลือก ทดสอบ อุปกรณ์ไคลเอ็นต์เป้าหมาย (ที่มีแอปอยู่เบื้องหลัง) ควรได้รับการแจ้งเตือน

สำหรับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปยังแอปของคุณ โปรดดูแด ชบอร์ดการรายงาน FCM ซึ่งบันทึกจำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ Apple และ Android พร้อมด้วยข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android

โต้ตอบการจัดการ

เมื่อผู้ใช้แตะการแจ้งเตือน ลักษณะการทำงานเริ่มต้นของทั้ง Android และ iOS คือการเปิดแอปพลิเคชัน หากแอปพลิเคชันถูกยกเลิก แอปพลิเคชันจะเริ่มต้นและหากแอปพลิเคชันอยู่ในพื้นหลัง แอปพลิเคชันจะถูกนำไปที่ส่วนหน้า

ขึ้นอยู่กับเนื้อหาของการแจ้งเตือน คุณอาจต้องการจัดการการโต้ตอบของผู้ใช้เมื่อแอปพลิเคชันเปิดขึ้น ตัวอย่างเช่น ถ้าข้อความแชทใหม่ถูกส่งโดยใช้การแจ้งเตือนและผู้ใช้เลือกข้อความนั้น คุณอาจต้องการเปิดการสนทนาที่ต้องการเมื่อแอปพลิเคชันเปิดขึ้น

แพ็คเกจ firebase-messaging มีสองวิธีในการจัดการการโต้ตอบนี้:

  1. getInitialMessage() : หากแอปพลิเคชันถูกเปิดจากสถานะสิ้นสุด เมธอดนี้จะส่งคืน Future ที่มี RemoteMessage เมื่อใช้แล้ว RemoteMessage จะถูกลบออก
  2. 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 เพื่อเริ่มต้นส่งไปยังแอปเบื้องหน้า

ไปไกลกว่าข้อความแจ้งเตือน

หากต้องการเพิ่มลักษณะการทำงานขั้นสูงอื่นๆ ให้กับแอปของคุณ คุณจะต้อง ติดตั้งเซิร์ฟเวอร์

จากนั้นในไคลเอนต์แอปของคุณ: