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

หากต้องการเริ่มต้นใช้งาน FCM ให้สร้าง Use Case ที่ง่ายที่สุด ซึ่งก็คือการส่งข้อความการแจ้งเตือนทดสอบจาก เครื่องมือเขียนข้อความการแจ้งเตือนไปยังอุปกรณ์สำหรับพัฒนาแอปเมื่อแอปทำงานอยู่เบื้องหลังในอุปกรณ์ หน้านี้จะแสดงขั้นตอนทั้งหมดตั้งแต่การตั้งค่าไปจนถึงการยืนยัน ซึ่งอาจครอบคลุมขั้นตอนที่คุณทำไปแล้วหากคุณตั้งค่าแอป 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 มี 2 วิธีในการจัดการการโต้ตอบนี้ ดังนี้

  1. getInitialMessage(): หากแอปพลิเคชันเปิดจากสถานะสิ้นสุดแล้ว เมธอดนี้จะแสดงผล Future ที่มี RemoteMessage เมื่อใช้แล้ว ระบบจะนำ RemoteMessage ออก
  2. onMessageOpenedApp: Stream ที่โพสต์ RemoteMessage เมื่อเปิดแอปพลิเคชันจากสถานะเบื้องหลัง

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

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 เพื่อเริ่มส่งไปยังแอปที่ทำงานอยู่เบื้องหน้า

ใช้ประโยชน์จากข้อความการแจ้งเตือนได้มากกว่า

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

จากนั้นทำดังนี้ในไคลเอ็นต์แอป