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

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

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

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

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