我在我的应用程序中实现了firebase云消息传递,以在被覆盖的OnMessagereceived函数中执行代码。当应用在前景时,它可以正常工作,但在闲置/睡眠或背景中不行。我确实在通知托盘中收到消息,但代码不运行。我知道,当用户单击TREY中的通知时,可以设置操作以运行代码,但我希望它能在没有任何用户交互的情况下运行。有没有办法让它运行,或者有更好的解决方案来fcm。
最终目标是从服务器(现在通过FCM令牌完成(ping设备,然后立即使设备上传设备位置。有更好的方法吗?
这是我的FCM代码。
import android.content.Intent;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import java.util.Map;
import static android.content.ContentValues.TAG;
public class FMS extends FirebaseMessagingService {
public FMS() {
}
public static final String INTENT_FILTER = "Remote_Execute";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent intent = new Intent(INTENT_FILTER);
sendBroadcast(intent);
Map<String, String> data = remoteMessage.getData();
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());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}
}
请参阅firebase云消息传递文档中的 data messages
和 notification messages
之间的差异
https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages