手机进入深度睡眠时未收到FCM通知

时间:2018-04-09 09:29:41

标签: android firebase firebase-cloud-messaging

我遇到FCM功能问题。当手机处于唤醒状态时,一切正常(当应用程序处于前台,后台或即使应用程序已死时,也会收到通知)。

当手机进入深度睡眠状态时,问题就开始了。

我记得唤醒锁是FCM不强制要求的。

我正在用“优先级”推送“​​数据”类型通知:“高”,它应该唤醒设备。

问题是手机唤醒时会收到通知。

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>

如果手机正在睡觉,如何使用推送唤醒应用程序?缺少什么?

BDW - 如果我已连接到WiFi并且手机将进入睡眠状态,但应用程序无法正常工作 - 它是否会使用WiFi接收推送? FCM可以启动死应用程序。但如果应用程序已死,则无法获取WiFi锁定。在这种情况下设备可以与FCM服务器通信吗?

1 个答案:

答案 0 :(得分: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"
   }
} 

请参阅参考链接here