当手机进入深度睡眠模式时,无法接收FCM通知

4

我在FCM功能方面遇到了问题。当手机处于唤醒状态时,一切正常(无论应用程序处于前台、后台或者已经关闭,都能接收到通知)。

但是当手机进入深度睡眠状态时,问题就开始出现。

据我所知,使用FCM并不需要强制使用wakelocks。

我正在推送“数据”类型的通知,其中包含“priority”:“high”,应该可以唤醒设备。

问题是当手机唤醒后才会接收到这些通知。

public class FCMCallbackService extends FirebaseMessagingService {
    private static final String TAG = "FCMCallbackService";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

        Intent i = new Intent(this, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(i);
    }
}

public class FCMInitializationService extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {

        ...

    }
}

在清单文件中:
<service android:name="gcmpush.FCMInitializationService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>

<service android:name="gcmpush.FCMCallbackService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

如果手机处于睡眠状态,我如何使用推送唤醒应用程序?缺少什么?

顺便提一下 - 如果我连接到WiFi并且手机进入睡眠状态,但应用程序没有运行 - 它会使用WiFi接收推送吗? FCM可以启动已停止的应用程序。但是,如果应用程序已停止,则不会获取WiFi锁定。在这种情况下,设备能否与FCM服务器通信?


我缺少什么?检查 FCM 消息类型。 - Lucifer
你能否发布一下你从服务器发送的JSON数据? - Shailendra Madda
1个回答

1
以下消息将不会在您的应用程序处于后台或被杀死时调用您的onMessageReceived(),并且您无法自定义通知。
{
   "to": "/topics/journal",
   "notification": {
   "title" : "title",
   "text": "data!",
   "icon": "ic_notification"
    }
}

但是使用这个将会起作用。
{
  "to": "/topics/dev_journal",
   "data": {
       "text":"text",
       "title":"",
       "line1":"Journal",
       "line2":"some data"
   }
} 

请参见引用链接这里

谢谢,是我的错。FCM控制台只能发送通知消息。感谢您的帮助!!! - Daveron
如果我的回答真的对你有帮助,请接受它。 :) ;) - Shailendra Madda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接