2016-05-23 5 views
4

Я перешел на Firebase Cloud Messaging, и когда я впервые попробовал отправить сообщение, я получил уведомление с помощью консоли в Firebase, а затем попытался отправить другое уведомление через несколько минут, но я больше не получает еще одно уведомление, но в моей firebase консоли он сказал, что это было CompletedМое устройство не получает других уведомлений (FCM)

обновление

Вот мой код

MainActivity

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

checkPlayServices(); 

Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken()); 

} 
.... 
} 

MyFirebaseInstanceIDService

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

@Override 
public void onTokenRefresh() { 
    // Get updated InstanceID token. 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 

    sendRegistrationToServer(refreshedToken); 
} 
} 

MyFirebaseMessagingService

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "MyFirebaseMsgService"; 


// [START receive_message] 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    Log.d(TAG, "From: " + remoteMessage.getFrom()); 
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); 
} 
// [END receive_message] 

, кажется, что другие устройства получает его, но другие устройства не получили.

+0

Пожалуйста, добавьте соответствующий код. –

+0

@ShadabAnsari Я добавил свой код. – natsumiyu

+0

Было ли ваше приложение на переднем плане при отправке второго уведомления? Вы видели, вызвана ли функция onMessageReceived() с помощью операторов журнала? – AdamK

ответ

1

Из-за комментария AdamK, спрашивающего, отправляю ли я второе уведомление на переднем плане, я узнал, что уведомление запускается только тогда, когда мое приложение находится в фоновом режиме.

В документации было указано, что в onMessageReceived(), Если приложение находится в переднем дескрипторе как данных, так и уведомлений в onMessageReceived(). Поэтому уведомление не будет запускаться автоматически, если приложение находится на переднем плане, поэтому для этого в вашем обратном вызове onMessageReceived() вам необходимо инициировать уведомление самостоятельно.

Я называю свой собственный sendNotification() метод внутри моего onMessageReceived():

sendNotification(remoteMessage.getNotification().getBody());

который показывает уведомление, даже если приложение находится на переднем плане.

+1

Правильно пометьте это как ответ. :) –

+0

Я не понимаю ваше решение. Не возражаете ли вы разработать? Знаете ли вы, что хотите видеть уведомление как на переднем плане, так и на заднем плане? Моя путаница в том, что если 'onMessageReceived' не вызван в любом случае, почему имеет значение, что вы вызываете' sendNotification (remoteMessage.getNotification(). GetBody()) 'изнутри' onMessageReceived'? Или вы звоните из другого места? –

+0

@NouvelTravay я обновил свой ответ. Пожалуйста, проверьте. – natsumiyu

Смежные вопросы