Удалить google-services.json из build.gradle
Создать класс приложения
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId("0")
.build();
FirebaseApp.initializeApp(this, options);
}
}
Зарегистрировать этот класс в манифесте
<application
android:name=".extra.MyApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
В своей основной деятельности вынужно вызвать ниже метод, который генерирует токен FCM, (который похож на FirebaseInstanceIdService)
new GetFCMToken().execute();
private class GetFCMToken extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... params) {
//you can update this id based on your flavour
String senderId = "1223";//put your FireBase project Sender Id
String sToken = "";
try {
// Check for current token
// Resets Instance ID and revokes all tokens.
FirebaseInstanceId.getInstance().deleteInstanceId();
// Clear current saved token
// Check for success of empty token
// Now manually call onTokenRefresh()
Log.d("TAG", "Getting new token");
sToken = FirebaseInstanceId.getInstance().getToken(senderId, "FCM");
Log.d("TAG", "s" + sToken);
} catch (IOException e) {
e.printStackTrace();
Log.e("e", "e", e);
}
return sToken;
}
@Override
protected void onPostExecute(String fcmToken) {
super.onPostExecute(fcmToken);
//Use this token to send notification
Log.e("FCM_TOKEN",fcmToken);
//Send Token server
}
}
Вы можете найти SenderId из пожарной базы, потому что -> Настройка проекта -> Облачные сообщения.И убедитесь, что вы добавили имя вашего пакета в Fcm Console.
FirebaseMessegingReceiver.class работает как есть.
Основное преимущество этого кода в том, что
- Нет необходимости добавлять google-services.json
- Несколько проектов Firebase работают с одним кодом.
- Нет необходимости добавлять FirebaseInstanceIdService в Manifest.