我在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服务器通信?