我遇到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服务器通信吗?
答案 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