Stack Overflow на русском Asked by ВуDengin on January 4, 2022
Почему то, приложение перестало получать пуши. Отправляю через консоль Firebase, уведомления изначально приходили, но без звука и не отображались на экране, были видны только в общем списке уведомлений.
AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<activity
android:name=".DialogActivity"
android:parentActivityName=".ResponseActivity"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name=".DialogActivity" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<service
android:name=".MyService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".MyFirebaseInstanceIDService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
MyService
public class MyService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage.getNotification().getBody());
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, DialogActivity.class); // года приходили уведомления, при клике все равно открывалоль MainActivity
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent,PendingIntent.FLAG_ONE_SHOT);
String channelId = getString(R.string.default_notification_channel_id);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.logo)
.setContentTitle("Title")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
Вообще не понятно, когда срабатывает данный сервис, что бы он оправил данные на сервер ни разу не приходил токен.
Мне необходимо в коде получить токен устройства, я это делаю при отправке данных на сервер вызывая FirebaseInstanceId.getInstance().getToken().
Все работало, я получал токен, сейчас это у меня вызывает ошибку
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process ru.test.app. Make sure to call FirebaseApp.initializeApp(Context) first.
at com.google.firebase.FirebaseApp.getInstance(SourceFile:218)
at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
При первоначальном вызове FirebaseApp.initializeApp(Context), у меня все равно вылетает
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.iid.FirebaseInstanceId.getToken()' on a null object reference
Как получить токен устройства, что бы оправлять на это устройство уведомление?
MyFirebaseInstanceIDService
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("ddd", "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String refreshedToken) {
// код обновления токена на сервере
}}
Вот такой код, но не работает, уведомления не получаю, отправляя их с консоли.
Подскажите пожалуйста, где искать проблему!
Ваши симптомы такие:
По опыту получение токена работает неплохо так:
Answered by Serge Markov on January 4, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP