Gửi tin nhắn thử nghiệm tới ứng dụng chạy nền

Để bắt đầu với FCM, hãy xây dựng trường hợp sử dụng đơn giản nhất: gửi tin nhắn thông báo thử nghiệm từ trình soạn thảo Thông báo tới thiết bị phát triển khi ứng dụng ở chế độ nền trên thiết bị. Trang này liệt kê tất cả các bước để đạt được điều này, từ thiết lập đến xác minh — trang này có thể bao gồm các bước bạn đã hoàn thành nếu bạn đã thiết lập ứng dụng Flutter cho FCM.

Cài đặt plugin FCM

  1. Cài đặt và khởi chạy SDK Firebase cho Flutter nếu bạn chưa làm như vậy.

  2. Từ thư mục gốc của dự án Flutter của bạn, hãy chạy lệnh sau để cài đặt plugin:

    flutter pub add firebase_messaging
    
  3. Sau khi hoàn tất, hãy xây dựng lại ứng dụng Flutter của bạn:

    flutter run
    

Truy cập mã thông báo đăng ký

Để gửi tin nhắn đến một thiết bị cụ thể, bạn cần biết mã thông báo đăng ký của thiết bị đó. Vì bạn sẽ cần nhập mã thông báo vào một trường trong bảng điều khiển Thông báo để hoàn thành hướng dẫn này nên hãy đảm bảo sao chép mã thông báo hoặc lưu trữ mã thông báo một cách an toàn sau khi bạn truy xuất.

Để truy xuất mã thông báo đăng ký hiện tại cho một phiên bản ứng dụng, hãy gọi getToken() . Nếu quyền thông báo chưa được cấp, phương pháp này sẽ yêu cầu người dùng cấp quyền thông báo. Nếu không, nó sẽ trả về mã thông báo hoặc từ chối tương lai do có lỗi.

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

Gửi tin nhắn thông báo kiểm tra

  1. Cài đặt và chạy ứng dụng trên thiết bị mục tiêu. Trên các thiết bị Apple, bạn sẽ cần chấp nhận yêu cầu cấp phép nhận thông báo từ xa.

  2. Đảm bảo ứng dụng chạy ở chế độ nền trên thiết bị.

  3. Trong bảng điều khiển Firebase, hãy mở trang Nhắn tin .

  4. Nếu đây là tin nhắn đầu tiên của bạn, hãy chọn Tạo chiến dịch đầu tiên của bạn .

    1. Chọn Thông báo thông báo Firebase và chọn Tạo .
  5. Nếu không, trên tab Chiến dịch , hãy chọn Chiến dịch mới rồi chọn Thông báo .

  6. Nhập nội dung tin nhắn. Tất cả các lĩnh vực khác là tùy chọn.

  7. Chọn Gửi tin nhắn kiểm tra từ khung bên phải.

  8. Trong trường có nhãn Thêm mã thông báo đăng ký FCM , hãy nhập mã thông báo đăng ký mà bạn nhận được trong phần trước của hướng dẫn này.

  9. Chọn Kiểm tra .

Sau khi bạn chọn Kiểm tra , thiết bị khách được nhắm mục tiêu (có ứng dụng chạy nền) sẽ nhận được thông báo.

Để biết thông tin chi tiết về việc gửi tin nhắn tới ứng dụng của bạn, hãy xem trang tổng quan báo cáo FCM , nơi ghi lại số lượng tin nhắn đã gửi và mở trên thiết bị Apple và Android, cùng với dữ liệu về "số lần hiển thị" (thông báo mà người dùng đã xem) cho ứng dụng Android.

Xử lý tương tác

Khi người dùng nhấn vào một thông báo, hành vi mặc định trên cả Android và iOS là mở ứng dụng. Nếu ứng dụng bị chấm dứt, nó sẽ được khởi động và nếu nó ở chế độ nền, nó sẽ được đưa lên nền trước.

Tùy thuộc vào nội dung thông báo, bạn có thể muốn xử lý tương tác của người dùng khi ứng dụng mở ra. Ví dụ: nếu một tin nhắn trò chuyện mới được gửi bằng thông báo và người dùng chọn nó, bạn có thể muốn mở cuộc trò chuyện cụ thể khi ứng dụng mở ra.

Gói firebase-messaging cung cấp hai cách để xử lý tương tác này:

  1. getInitialMessage() : Nếu ứng dụng được mở từ trạng thái kết thúc, phương thức này trả về Future chứa RemoteMessage . Sau khi sử dụng, RemoteMessage sẽ bị xóa.
  2. onMessageOpenedApp : Stream đăng RemoteMessage khi ứng dụng được mở ở trạng thái nền.

Để đảm bảo trải nghiệm suôn sẻ cho người dùng, bạn nên xử lý cả hai trường hợp. Ví dụ mã bên dưới phác thảo cách đạt được điều này:

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("...");
  }
}

Cách bạn xử lý tương tác tùy thuộc vào thiết lập ứng dụng của bạn. Ví dụ trên cho thấy một ví dụ cơ bản về việc sử dụng StatefulWidget .

Bước tiếp theo

Gửi tin nhắn đến các ứng dụng chạy trên nền trước

Sau khi bạn đã gửi thành công tin nhắn thông báo trong khi ứng dụng của bạn ở chế độ nền, hãy xem Nhận tin nhắn trong ứng dụng Flutter để bắt đầu gửi đến các ứng dụng ở nền trước.

Vượt xa tin nhắn thông báo

Để thêm hành vi khác, nâng cao hơn vào ứng dụng của bạn, bạn sẽ cần triển khai máy chủ .

Sau đó, trong ứng dụng khách của bạn: