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

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

ทำได้มากกว่าแค่ข้อความแจ้งเตือน

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

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