2016-05-23 7 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

2番目の通知を送信する際にアプリがフォアグラウンドになっていましたか? onMessageReceived()がログステートメントによって呼び出されたかどうかを確認しましたか? – AdamK

答えて

1

フォアグラウンドで2番目の通知を送信するかどうかを尋ねるAdamKのコメントのため、私のアプリがバックグラウンドにあるときにのみ通知がトリガーされることがわかりました。

onMessageReceived()で、と書かれていました。アプリケーションがフォアグラウンドにある場合は、onMessageReceived()のデータと通知メッセージの両方を処理します。したがって、アプリがフォアグラウンドにある場合、通知は自動的に開始されません。そのためには、onMessageReceived()コールバックで自分で通知をトリガーする必要があります。

私は私のonMessageReceived()の内側に自分のsendNotification()メソッドを呼び出します。

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

アプリがフォアグラウンドにあるときでも、通知を示しています。

+1

これは適切な答えとしてタグ付け。 :) –

+0

私はあなたの解決策を理解していません。あなたは精巧にお考えですか?あなたはフォアグラウンドとバックグラウンドの両方で通知を見ることを知っていますか?なぜなら、 'onMessageReceived'が呼び出されないと、' onMessageReceived'の中から 'sendNotification(remoteMessage.getNotification()。getBody())'を呼び出すのがなぜ重要なのでしょうか?それとも他のどこかからその電話をしていますか? –

+0

@NouvelTravay私は私の答えを更新しました。チェックしてください。 – natsumiyu

関連する問題