【问题标题】:My device doesn't receive other notification (FCM)我的设备没有收到其他通知 (FCM)
【发布时间】:2016-05-23 06:11:38
【问题描述】:

我迁移到 Firebase Cloud Messaging,当我第一次尝试发送消息时,我使用 Firebase 中的控制台收到了一个通知,然后在几分钟后尝试发送另一个通知,但我不再收到另一个通知,但在我的 firebase 控制台中它说是Completed

更新

这是我的代码

主活动

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]

好像其他设备收到了,但其他设备没有收到。

【问题讨论】:

  • 请添加相关代码。
  • @ShadabAnsari 我添加了我的代码。
  • 发送第二个通知时,您的应用程序是否在前台?您是否看到是否通过日志语句调用了 onMessageReceived()?
  • @AdamK 是的,我的应用在发送第二个通知时处于前台,而 onMessageReceived() 未被调用。
  • @AdamK 谢谢!我现在解决了:)

标签: android firebase firebase-cloud-messaging


【解决方案1】:

由于 AdamK 的评论询问我是否在前台发送第二个通知,我发现只有当我的应用程序在后台时才会触发通知。

在文档中说在onMessageReceived() 中,如果应用程序在前台处理onMessageReceived() 中的数据和通知消息。 因此,如果发生以下情况,则不会自动触发通知该应用程序位于前台,因此为了做到这一点,您需要在您的 onMessageReceived() 回调中自己触发通知。

我在我的onMessageReceived() 中调用我自己的sendNotification() 方法:

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

即使应用在前台,它也会显示通知。

【讨论】:

  • 正确地将其标记为答案。 :)
  • 我不明白你的解决方案。你介意详细说明吗?您知道在前台和后台都可以看到通知吗?我的困惑是,如果无论如何都没有调用onMessageReceived,那么从onMessageReceived 内部调用sendNotification(remoteMessage.getNotification().getBody()) 又有什么关系呢?还是您是从其他地方打这个电话的?
猜你喜欢
  • 2018-11-14
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多