Đây là lần đầu tiên tôi sử dụng FCM.
Tôi tải xuống một mẫu từ firebase / quickstart-android và cài đặt FCM Quickstart. Nhưng tôi không thể nhận được bất kỳ mã thông báo nào từ nhật ký thậm chí nhấn vào nút ĐĂNG NHẬP TOKEN trong ứng dụng.
Sau đó, tôi cố gắng gửi tin nhắn bằng bảng điều khiển Firebase và đặt để nhắm mục tiêu tên gói ứng dụng của mình. Tôi nhận được tin nhắn đến.
Tôi muốn biết FCM có thể được sử dụng không? GCM mọi thứ đều ổn.
Giải pháp:
Bởi vì tôi không phải là nhà phát triển Android, chỉ là một nhà phát triển phụ trợ. Vì vậy, tôi phải mất một thời gian để giải quyết nó. Theo tôi, có một số lỗi trong ứng dụng mẫu.
Mã :
RegisterIntentService.java
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
String token = FirebaseInstanceId.getInstance().getToken();
Log.i(TAG, "FCM Registration Token: " + token);
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
// String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Log.d(TAG, "Refreshed token: " + refreshedToken);
//
// // TODO: Implement this method to send any registration to your app's servers.
// sendRegistrationToServer(refreshedToken);
//
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
// [END refresh_token]
/**
* Persist token to third-party servers.
* <p>
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
Thêm điều này vào MainActivity.java.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
Sau khi làm ở trên , bạn nhận được Mã thông báo trong Logcat. Nhưng cuối cùng, tôi tìm thấy một cách thuận tiện để lấy nó. Chỉ cần sử dụng chế độ gỡ lỗi để cài đặt ứng dụng mẫu và bạn có thể nhận được mã thông báo khi cài đặt lần đầu.
Nhưng không hiểu sao khi cài đặt nó không in được log. Có thể liên quan đến hệ thống di động.
Và tại sao tôi không thể nhận được Thông báo. FirebaseMessagingService.onMessageReceive đã không gọi sendNotification