Как мы знаем, телевизор не имеет системной панели, поэтому я просто отправляю сообщения только с данными, он работает, когда приложение для обмена сообщениями находится на переднем плане, в фоновом режиме и даже не работает.Но когда я нажимаю клавишу «Питание» (с включенным мгновенным включением), устройство переходит в режим ожидания (режим ожидания str), я могу обещать, что сообщение успешно отправлено:
{
"to" : "xxx",
"collapse_key" : "tv",
"priority": "high",
"content_available":true,
"data" : {
"body" : "wake up"
}
}
{
"multicast_id": xxx,
"success": 1,
"failure": 0,
"canonical_ids": 0,
"results": [
{
"message_id": "xxx"
}
]
}
И я вижу журнал:
broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.tcl.fcmapp (has extras) }
Когда телевизор находится в режиме ожидания, я просыпаю устройство, вызывая метод, как показано ниже:
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
wakeUpScreen();
}
}
private void wakeUpScreen() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
@SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakeLock = pm.newWakeLock
(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "LiveTV");
wakeLock.setReferenceCounted(false);
try {
wakeLock.acquire();
} catch (Exception e) {
e.printStackTrace();
}
}
Я прочитал документы о FCM, там говорится, что поддержка FCM активируетсяустройство, так что-нибудь не так с моими способами использования?