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

Làm theo các bước sau để thiết lập ứng dụng FCM trên Flutter.

Chế độ thiết lập theo nền tảng cụ thể và các yêu cầu

Một số bước cần thiết phụ thuộc vào nền tảng mà bạn đang nhắm đến.

iOS trở lên

Bật các chức 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 thông báo, bạn phải bật chế độ đẩy các thông báo và chế độ nền trong dự án Xcode của mình.

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

Tải khoá xác thực APN lên

Trước khi bạn sử dụng FCM, hãy tải chứng chỉ APN lên Firebase. Nếu không đã có chứng chỉ APN, hãy tạo một chứng chỉ trong Trung tâm thành viên dành cho 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 của Firebase, hãy chọn biểu tượng bánh răng, chọn Project Settings (Cài đặt dự án) rồi chọn thẻ Cloud Messaging (Gửi thông báo qua đám mây).
  2. Chọn nút Tải chứng chỉ lên cho chứng chỉ phát triển của bạn, chứng chỉ sản xuất của bạn hoặc cả hai. Phải có ít nhất 1 hình ảnh.
  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ó) bất kỳ. Hãy đảm bảo mã nhận dạng gói của chứng chỉ này khớp với mã nhận dạng gói của ứng dụng của bạn. Chọn Lưu.

Phương thức xoáy

Để sử dụng trình bổ trợ Flutter FCM trên các thiết bị của Apple, bạn không được tắt phương pháp này nhấp nháy. Bạn bắt buộc phải bật hoặc tắt, nếu không có tính năng này, các tính năng chính của Firebase như Quá trình xử lý mã thông báo FCM không hoạt động đúng cách.

Android

Dịch vụ Google Play

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

Ứng dụng dựa vào SDK Dịch vụ Play phải luôn kiểm tra thiết bị để tìm APK tương thích với các dịch vụ của Google Play trước khi truy cập vào Dịch vụ Google Play các tính năng AI mới. Bạn nên thực hiện việc này ở 2 nơi: trong phần hoạt động chính Phương thức onCreate() và trong phương thức onResume() của phương thức đó. Xác nhận có mặt vào onCreate() đảm bảo rằng chỉ có thể sử dụng ứng dụng nếu không được kiểm tra thành công. Xác nhận có mặt 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ố các phương tiện khác, chẳng hạn như thông qua nút quay lại, quá trình 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ó thể gọi GoogleApiAvailability.makeGooglePlayServicesAvailable() để cho phép người dùng tải Dịch vụ Google Play xuống từ Cửa hàng Play.

Web

Định cấu hình thông tin xác thực web bằng FCM

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

Tạo một cặp khoá mới
  1. Mở ứng dụng Gửi thông báo qua đám mây thẻ trong ngăn Cài đặt của bảng điều khiển Firebase rồi cuộn đến Phần Cấu hình web.

  2. Trong thẻ Web Push Certificate (Chứng chỉ về thông báo đẩy trên web), hãy nhấp vào Generate Key Play (Tạo cặp khoá). Chiến lược phát hành đĩa đơn bảng điều khiển hiển thị một thông báo rằng cặp khoá đã được tạo, đồng thời cho thấy chuỗi khoá công khai và ngày được thêm.

Nhập một cặp khoá hiện có

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

  1. Mở ứng dụng Gửi thông báo qua đám mây thẻ trong ngăn Cài đặt của bảng điều khiển Firebase rồi cuộn đến Phần Cấu hình web.

  2. Trong thẻ Web Push Certificate (Chứng chỉ về thông báo đẩy trên web), hãy tìm và chọn văn bản của đường liên kết, "nhập" một cặp khoá hiện có".

  3. Trong hộp thoại Nhập cặp khoá, hãy cung cấp khoá công khai và riêng tư của bạn trong 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 khoá công khai và ngày được thêm.

Để biết thêm thông tin về định dạng của khoá và cách tạo khoá, xem Khoá máy chủ ứng dụng.

Cài đặt trình bổ trợ FCM

  1. Cài đặt và khởi chạy các trình bổ trợ 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, hãy chạy lệnh sau để cài đặt trình bổ trợ:

    flutter pub add firebase_messaging
    
  3. Sau khi hoàn tất, hãy tạo lại ứng dụng Flutter:

    flutter run
    

Truy cập vào 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 thiết bị đó mã thông báo đăng ký. Do bạn 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 tất hướng dẫn này, hãy nhớ sao chép mã thông báo hoặc lưu trữ 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 bạn chưa cấp quyền gửi thông báo, phương pháp này sẽ hãy yêu cầu người dùng cấp quyền gửi thông báo. Nếu không, hàm này sẽ trả về một mã thông báo hoặc từ chối tương lai do xảy ra 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 các nền tảng web, hãy chuyển khoá công khai VAPID của bạn đến getToken():

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

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

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 việc khởi chạy tự động

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

iOS

Trên iOS, hãy thêm giá trị siêu dữ liệu vào Info.plist của bạn:

FirebaseMessagingAutoInitEnabled = NO

Android

Trên Android, tắt tính năng thu thập Analytics và tự động khởi chạy FCM (bạn phải hãy 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 nhập FCM trong thời gian 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 sẽ vẫn tồn tại khi ứng dụng khởi động lại sau khi đặt.

Các bước tiếp theo

Sau khi thiết lập ứng dụng, bạn đã sẵn sàng bắt đầu gửi cho người khác tin nhắn có Trình soạn thông báo. Xem phần Gửi tin nhắn thử nghiệm đến ứng dụng chạy trong nền.

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

Sau đó, trong ứng dụng khách: