Gửi tin nhắn thử nghiệm cho một ứng dụng ở chế độ nền

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

Thiết lập SDK

Phần này đề cập đến những việc bạn có thể đã hoàn thành nếu đã bật các tính năng khác của Firebase cho ứng dụng của mình.

Trước khi bắt đầu

  • Cài đặt hoặc cập nhật Android Studio lên phiên bản mới nhất.

  • Đảm bảo dự án của bạn đáp ứng các yêu cầu sau (lưu ý rằng một số sản phẩm có thể có các yêu cầu nghiêm ngặt hơn):

    • Nhắm đến API cấp 19 (KitKat) trở lên
    • Sử dụng Android 4.4 trở lên
    • Sử dụng Jetpack (AndroidX), bao gồm cả việc đáp ứng các yêu cầu về phiên bản sau:
      • com.android.tools.build:gradle phiên bản 7.3.0 trở lên
      • compileSdkVersion 28 trở lên
  • Thiết lập một thiết bị thực hoặc dùng một trình mô phỏng để chạy ứng dụng.
    Xin lưu ý rằng Firebase SDK có phần phụ thuộc trên Dịch vụ Google Play yêu cầu thiết bị hoặc trình mô phỏng phải cài đặt Dịch vụ Google Play.

  • Đăng nhập vào Firebase bằng Tài khoản Google của bạn.

Nếu chưa có dự án Android và chỉ muốn dùng thử sản phẩm của Firebase, bạn có thể tải một trong các mẫu bắt đầu nhanh của chúng tôi xuống.

Tạo một dự án Firebase

Trước khi có thể thêm Firebase vào ứng dụng Android, bạn cần tạo một dự án Firebase để kết nối với ứng dụng Android của mình. Hãy xem bài viết Tìm hiểu các dự án Firebase để tìm hiểu thêm về các dự án Firebase.

Đăng ký ứng dụng của bạn với Firebase

Để sử dụng Firebase trong ứng dụng Android, bạn cần đăng ký ứng dụng của mình với dự án Firebase. Việc đăng ký ứng dụng thường được gọi là "thêm" ứng dụng vào dự án.

  1. Truy cập vào bảng điều khiển của Firebase.

  2. Ở giữa trang tổng quan về dự án, hãy nhấp vào biểu tượng Android () hoặc Thêm ứng dụng để bắt đầu quy trình thiết lập.

  3. Nhập tên gói của ứng dụng vào trường Android package name (Tên gói Android).

  4. (Không bắt buộc) Nhập các thông tin khác về ứng dụng: Biệt hiệu ứng dụngChứng chỉ ký gỡ lỗi SHA-1.

  5. Nhấp vào Đăng ký ứng dụng.

Thêm tệp cấu hình Firebase

  1. Tải xuống rồi thêm tệp cấu hình Android của Firebase (google-services.json) vào ứng dụng của bạn:

    1. Nhấp vào Download google-services.json xuống để lấy tệp cấu hình Android Firebase.

    2. Di chuyển tệp cấu hình vào thư mục gốc mô-đun (cấp ứng dụng) của ứng dụng.

  2. Để có thể truy cập vào các giá trị trong tệp cấu hình google-services.json của bạn trong Firebase SDK, bạn cần có Trình bổ trợ Gradle cho các dịch vụ của Google (google-services).

    1. Trong tệp Gradle cấp gốc (cấp dự án) (<project>/build.gradle.kts hoặc <project>/build.gradle), hãy thêm trình bổ trợ các dịch vụ của Google làm phần phụ thuộc:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.2" apply false
      }
      

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.2' apply false
      }
      
    2. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm trình bổ trợ các dịch vụ của Google:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }
      

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }
      

Thêm Firebase SDK vào ứng dụng của bạn

  1. Trong tệp Gradle (ở cấp ứng dụng) mô-đun (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện Giải pháp gửi thông báo qua đám mây của Firebase dành cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.

    Để có trải nghiệm tối ưu với Giải pháp gửi thông báo qua đám mây của Firebase, bạn nên bật Google Analytics trong dự án Firebase và thêm Firebase SDK cho Google Analytics vào ứng dụng của mình.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android trên Firebase.

    (Thay thế) Thêm các phần phụ thuộc của thư viện Firebase mà không sử dụng BoM

    Nếu chọn không sử dụng BoM của Firebase, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc.

    Xin lưu ý rằng nếu sử dụng nhiều thư viện Firebase trong ứng dụng, thì bạn nên sử dụng BoM để quản lý các phiên bản thư viện, qua đó đảm bảo tất cả các phiên bản đều tương thích.

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging:24.0.0")
        implementation("com.google.firebase:firebase-analytics:22.0.1")
    }
    
    Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Kể từ tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, vui lòng xem Câu hỏi thường gặp về sáng kiến này).

  2. Đồng bộ hoá dự án Android với các tệp Gradle.

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 mã thông báo đăng ký của thiết bị đó. Vì 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 hoặc lưu trữ mã thông báo an toàn sau khi bạn truy xuất.

Khi khởi động ứng dụng lần đầu, SDK FCM sẽ tạo một mã thông báo đăng ký cho phiên bản ứng dụng khách. Nếu muốn nhắm đến các thiết bị đơn lẻ hoặc tạo nhóm thiết bị, bạn cần truy cập vào mã thông báo này bằng cách mở rộng FirebaseMessagingService và ghi đè onNewToken.

Phần này mô tả cách truy xuất mã thông báo và cách theo dõi các thay đổi đối với mã thông báo. Vì mã thông báo có thể được xoay vòng sau lần khởi động đầu tiên, nên bạn nên truy xuất mã thông báo đăng ký đã cập nhật mới nhất.

Mã thông báo đăng ký có thể thay đổi khi:

  • Ứng dụng đó được khôi phục trên một thiết bị mới
  • Người dùng gỡ cài đặt/cài đặt lại ứng dụng
  • Người dùng xoá dữ liệu ứng dụng.

Truy xuất mã thông báo đăng ký hiện tại

Khi bạn cần truy xuất mã thông báo hiện tại, hãy gọi FirebaseMessaging.getInstance().getToken():

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Giám sát quá trình tạo mã thông báo

Lệnh gọi lại onNewToken sẽ kích hoạt bất cứ khi nào mã thông báo mới được tạo.

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Sau khi nhận được mã thông báo, bạn có thể gửi mã đó đến máy chủ ứng dụng và lưu trữ bằng phương thức bạn ưa dùng.

Gửi tin nhắn thông báo thử nghiệm

  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 cần chấp nhận yêu cầu cấp quyền nhận thông báo từ xa.

  2. Hãy đảm bảo ứng dụng đang chạy trong nền trên thiết bị.

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

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

    1. Chọn Tin nhắn thông báo Firebase rồi chọn Tạo.
  5. Nếu không, trên thẻ 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 trường khác là không bắt buộc.

  7. Chọn Gửi tin nhắn thử nghiệm trên ngăn 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ý bạn nhận được ở phần trước của hướng dẫn này.

  9. Chọn Kiểm tra.

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

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

Các 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 khi ứng dụng đang chạy ở chế độ nền, hãy xem phần Nhận tin nhắn trong ứng dụng Android để bắt đầu gửi đến các ứng dụng chạy trên nền trước.

Không chỉ dừng lại ở nội dung thông báo

Để xem không chỉ tin nhắn thông báo và thêm hành vi khác, nâng cao hơn vào ứng dụng, hãy xem: