Thiết lập ứng dụng khách Nhắn tin qua đám mây Firebase trên Flutter

Thực hiện theo các bước sau để thiết lập ứng dụng khách FCM trên Flutter.

Yêu cầu và thiết lập dành riêng cho nền tảng

Một số bước bắt buộc tùy thuộc vào nền tảng bạn đang nhắm mục tiêu.

iOS+

Kích hoạt khả năng của ứng dụng trong Xcode

Trước khi ứng dụng của bạn có thể bắt đầu nhận tin nhắn, bạn phải bật thông báo đẩy và chế độ nền trong dự án Xcode của mình.

  1. Mở không gian làm việc của dự án Xcode của bạn ( ios/Runner.xcworkspace ).
  2. Bật thông báo đẩy .
  3. Bật Tìm nạp nềnchế độ thực thi nền Thông báo từ xa .

Tải khóa xác thực APN của bạn lên

Trước khi bạn sử dụng FCM, hãy tải chứng chỉ APN của bạn lên Firebase. Nếu bạn chưa có chứng chỉ APN, hãy tạo một chứng chỉ trong Trung tâm thành viên nhà phát triển của Apple .

  1. Bên trong dự án của bạn trong bảng điều khiển Firebase, hãy chọn biểu tượng bánh răng, chọn Cài đặt dự án rồi chọn tab Nhắn tin qua đám mây .
  2. Chọn nút Tải lên chứng chỉ cho chứng chỉ phát triển, chứng chỉ sản xuất của bạn hoặc cả hai. Ít nhất một là bắt buộc.
  3. Đối với mỗi chứng chỉ, hãy chọn tệp .p12 và cung cấp mật khẩu, nếu có. Đảm bảo ID gói cho chứng chỉ này khớp với ID gói ứng dụng của bạn. Chọn Lưu .

Phương pháp swizzle

Để sử dụng plugin FCM Flutter trên thiết bị Apple, bạn không được tắt tính năng chuyển đổi phương thức. Cần phải có tính năng chuyển đổi nhanh và nếu không có nó, các tính năng chính của Firebase như xử lý mã thông báo FCM sẽ không hoạt động bình thường.

Android

Dịch vụ Google Play

Ứng dụng khách FCM yêu cầu các thiết bị chạy Android 4.4 trở lên cũng đã cài đặt dịch vụ Google Play hoặc trình mô phỏng chạy Android 4.4 với API Google. Lưu ý rằng bạn không bị giới hạn trong việc triển khai ứng dụng Android của mình thông qua Cửa hàng Google Play.

Các ứng dụng dựa trên SDK dịch vụ Play phải luôn kiểm tra thiết bị để tìm APK dịch vụ Google Play tương thích trước khi truy cập các tính năng của Dịch vụ Google Play. Bạn nên thực hiện việc này ở hai nơi: trong phương thức onCreate() của hoạt động chính và trong phương thức onResume() của hoạt động chính. Việc đăng ký onCreate() đảm bảo rằng ứng dụng không thể sử dụng được nếu không kiểm tra thành công. Việc kiểm tra onResume() đảm bảo rằng nếu người dùng quay lại ứng dụng đang chạy thông qua một số phương tiện khác, chẳng hạn như thông qua nút quay lại, thì việc kiểm tra vẫn được thực hiện.

Nếu thiết bị không có phiên bản tương thích của dịch vụ Google Play, ứng dụng của bạn có thể gọi GoogleApiAvailability.makeGooglePlayServicesAvailable() để cho phép người dùng tải xuống dịch vụ Google Play từ Cửa hàng Play.

Web

Định cấu hình thông tin xác thực web với FCM

Giao diện Web FCM sử dụng thông tin xác thực Web được gọi là khóa "Nhận dạng máy chủ ứng dụng tự nguyện" hoặc "VAPID" để ủy quyền gửi yêu cầu đến các dịch vụ đẩy web được hỗ trợ. Để đăng ký ứng dụng của bạn nhận thông báo đẩy, bạn cần liên kết một cặp khóa với dự án Firebase của mình. Bạn có thể tạo cặp khóa mới hoặc nhập cặp khóa hiện có của mình thông qua bảng điều khiển Firebase.

Tạo cặp khóa mới
  1. Mở tab Nhắn tin qua đám mây của ngăn Cài đặt bảng điều khiển Firebase và cuộn đến phần Cấu hình web .

  2. Trong tab Chứng chỉ đẩy Web , nhấp vào Tạo cặp khóa . Bảng điều khiển hiển thị thông báo rằng cặp khóa đã được tạo và hiển thị chuỗi khóa chung cũng như ngày thêm.

Nhập cặp khóa hiện có

Nếu bạn có cặp khóa hiện có mà bạn đang sử dụng với ứng dụng web của mình, bạn có thể nhập cặp khóa đó vào FCM để có thể tiếp cận các phiên bản ứng dụng web hiện có của mình thông qua API FCM. Để nhập khóa, bạn phải có quyền truy cập cấp chủ sở hữu vào dự án Firebase. Nhập khóa chung và khóa riêng hiện có của bạn ở dạng được mã hóa an toàn URL base64:

  1. Mở tab Nhắn tin qua đám mây của ngăn Cài đặt bảng điều khiển Firebase và cuộn đến phần Cấu hình web .

  2. Trong tab Chứng chỉ đẩy Web , tìm và chọn văn bản liên kết, "nhập cặp khóa hiện có".

  3. Trong hộp thoại Nhập cặp khóa , hãy cung cấp khóa chung và khóa riêng của bạn vào các trường tương ứng rồi nhấp vào Nhập . Bảng điều khiển hiển thị chuỗi khóa công khai và ngày thêm.

Để biết thêm thông tin về định dạng của khóa và cách tạo chúng, hãy xem Khóa máy chủ ứng dụng .

Cài đặt plugin FCM

  1. Cài đặt và khởi chạy plugin 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.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

Trên nền tảng web, chuyển khóa công khai VAPID của bạn tới getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Để được thông báo bất cứ khi nào mã thông báo được cập nhật, hãy đăng ký luồng onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Ngăn chặn tự động khởi tạo

Khi mã thông báo đăng ký FCM được tạo, thư viện sẽ tải dữ liệu nhận dạng và cấu hình lên Firebase. Nếu bạn muốn ngăn việc tự động tạo mã thông báo, hãy tắt tính năng tự động khởi tạo tại thời điểm xây dựng.

iOS

Trên iOS, thêm giá trị siêu dữ liệu vào Info.plist :

FirebaseMessagingAutoInitEnabled = NO

Android

Trên Android, hãy tắt bộ sưu tập Analytics và tự động khởi tạo FCM (bạn phải tắt cả hai) bằng cách thêm các giá trị siêu dữ liệu này vào AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Bật lại tính năng tự động khởi tạo FCM khi chạy

Để bật tính năng tự động khởi tạo cho một phiên bản ứng dụng cụ thể, hãy gọi setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Giá trị này vẫn tồn tại khi khởi động lại ứng dụng sau khi được đặt.

Bước tiếp theo

Sau khi thiết lập ứng dụng khách, bạn đã sẵn sàng bắt đầu gửi tin nhắn xuôi dòng bằng Trình soạn thảo thông báo . Xem Gửi tin nhắn thử nghiệm tới ứng dụng chạy nền .

Để 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: