I was testing fcm on two devices.
On one device with API level 23 onTokenRefresh method was called.
On another device with API level 19 the onTokenRefresh method was never called.
//MyFirebaseInstanceIdService class
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
//manifest
<application>
...
<service android:name=".Services.MyFirebaseInstanceIDService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</application>
//build.gradle
implementation 'com.google.firebase:firebase-messaging:11.6.0'
implementation 'com.google.firebase:firebase-core:11.6.0'
//build.gradle
classpath 'com.google.gms:google-services:3.2.0'
Reinstalling app did not help solve this problem.