Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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 mà 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 dự án Xcode của bạn ( ios/Runner.xcworkspace ).
  2. Bật thông báo đẩy .
  3. Bật chế độ Tìm nạp nềnChế độ thực thi nền thông báo từ xa .

Tải lên khóa xác thực APN của bạ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 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 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 xoáy

Để sử dụng plugin FCM Flutter trên các thiết bị Apple, bạn không được tắt phương thức swizzling. Bắt buộc phải có tính năng chuyển đổi và nếu không có tính năng này, 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ụ của Google Play

Ứng dụng khách FCM yêu cầu 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 giả lập 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 các ứ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ụ của Play phải luôn kiểm tra thiết bị để tìm APK dịch vụ của Google Play tương thích trước khi truy cập các tính năng của dịch vụ của 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 kiểm tra onCreate() đảm bảo rằng không thể sử dụng ứng dụng nếu không kiểm tra thành công. 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, kiểm tra vẫn được thực hiện.

Nếu thiết bị không có phiên bản dịch vụ Google Play tương thích, ứ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.

mạng

Đị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" để cho phép gửi yêu cầu tới 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 công khai và ngày được thêm vào.

Nhập một cặp khóa hiện có

Nếu bạn có một cặp khóa hiện có mà bạn đang sử dụng với ứng dụng web của mình, thì bạn có thể nhập cặp khóa đó vào FCM để bạn 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 công khai và khóa riêng hiện tại của bạn ở dạng được mã hóa an toàn cho 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 một 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 công khai và khóa riêng của bạn trong 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 được thêm vào.

Để biết thêm thông tin về định dạng của khóa và cách tạo khóa, 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, hãy đảm bảo sao chép 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 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. Mặt khác, nó trả về mã thông báo hoặc từ chối tương lai do lỗi.

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

Trên nền tảng web, hãy chuyển khóa công khai VAPID của bạn cho 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 khởi tạo tự động

Khi mã thông báo đăng ký FCM được tạo, thư viện sẽ tải mã định danh và dữ liệu cấu hình lên Firebase. Nếu bạn muốn ngăn tự động tạo mã thông báo, hãy tắt tự động khởi tạo khi 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 thu thập Analytics và tự động khởi chạy 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 của bạn :

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

Kích hoạt lại tự động khởi tạo FCM khi chạy

Để bật 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 trong các lần khởi động lại ứng dụng sau khi được đặt.

Bước tiếp theo

Sau khi ứng dụng khách được thiết lập, bạn đã sẵn sàng bắt đầu gửi tin nhắn xuôi dòng với trình tổng hợp 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:

,

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 mà 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 dự án Xcode của bạn ( ios/Runner.xcworkspace ).
  2. Bật thông báo đẩy .
  3. Bật chế độ Tìm nạp nềnChế độ thực thi nền thông báo từ xa .

Tải lên khóa xác thực APN của bạ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 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 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 xoáy

Để sử dụng plugin FCM Flutter trên các thiết bị Apple, bạn không được tắt phương thức swizzling. Bắt buộc phải có tính năng chuyển đổi và nếu không có tính năng này, 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ụ của Google Play

Ứng dụng khách FCM yêu cầu 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 giả lập 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 các ứ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ụ của Play phải luôn kiểm tra thiết bị để tìm APK dịch vụ của Google Play tương thích trước khi truy cập các tính năng của dịch vụ của 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 kiểm tra onCreate() đảm bảo rằng không thể sử dụng ứng dụng nếu không kiểm tra thành công. 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, kiểm tra vẫn được thực hiện.

Nếu thiết bị không có phiên bản dịch vụ Google Play tương thích, ứ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.

mạng

Đị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" để cho phép gửi yêu cầu tới 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 công khai và ngày được thêm vào.

Nhập một cặp khóa hiện có

Nếu bạn có một cặp khóa hiện có mà bạn đang sử dụng với ứng dụng web của mình, thì bạn có thể nhập cặp khóa đó vào FCM để bạn 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 công khai và khóa riêng hiện tại của bạn ở dạng được mã hóa an toàn cho 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 một 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 công khai và khóa riêng của bạn trong 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 được thêm vào.

Để biết thêm thông tin về định dạng của khóa và cách tạo khóa, 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, hãy đảm bảo sao chép 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 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. Mặt khác, nó trả về mã thông báo hoặc từ chối tương lai do lỗi.

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

Trên nền tảng web, hãy chuyển khóa công khai VAPID của bạn cho 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 khởi tạo tự động

Khi mã thông báo đăng ký FCM được tạo, thư viện sẽ tải mã định danh và dữ liệu cấu hình lên Firebase. Nếu bạn muốn ngăn tự động tạo mã thông báo, hãy tắt tự động khởi tạo khi 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 thu thập Analytics và tự động khởi chạy 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 của bạn :

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

Kích hoạt lại tự động khởi tạo FCM khi chạy

Để bật 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 trong các lần khởi động lại ứng dụng sau khi được đặt.

Bước tiếp theo

Sau khi ứng dụng khách được thiết lập, bạn đã sẵn sàng bắt đầu gửi tin nhắn xuôi dòng với trình tổng hợp 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: