It`s my first to use FCM.
I download a sample from firebase/quickstart-android and I install the FCM Quickstart.But I can`t get any token from the log even hit the LOG TOKEN button in the app.
Then I try to send message with Firebase console and set to target to my app package name.I got any incoming message.
I want to know can FCM be used?GCM everything is ok.
Solution:
Because I am not a Android developer,just a backend developer.So it takes me some time to solve it.In my opinion,there`re some bug in the sample app.
Code:
RegistrationIntentService.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.
}
}
Add this in the MainActivity.java.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
After do above,you can get the Token in logcat.But finally I find a convenient way to get it.Just use debug mode to install the sample app and you can get the token when you first time to install it.
But I dont why it can
t print the log when I install it.Maybe be related to mobile system.
And then why I can`t get the Notification. FirebaseMessagingService.onMessageReceived did not call sendNotification
This line should get you the firebase FCM token.
Do Log.d to print it out to the android monitor.
The team behind Firebase Android SDK change API a little bit. I've implemented "Token to Server" logic like this:
In my instance of FirebaseMessagingService:
Keep in mind that token is per device, and it can updated by Firebase regardless of your login logic. So, if you have Login and Logout functionality, you have to consider extra cases:
Using new API, you can get token like this:
Good luck!
Try this. Why are you using
RegistrationIntentService
?try this
Important information.
If play service working properly then
FirebaseInstanceId.getInstance().getToken()
method returnstoken
You can use the following in Firebase (FCM) to get the token: