나는 서버에 내가 중포 기지에서 자동 푸시 알림을받을 때마다 내 GPS-위치를 보낼 수 있어야합니다. 통지를 보내는 타이머는 현재 매 10 분으로 설정됩니다. 휴대폰이 충전 될 때이 문제가되지 않습니다, 그러나 사용 않을 때 응용 프로그램이 FirebaseMessagingService에서 onMessageReceived 만 몇 시간마다라고, 백그라운드에서입니다. 이것은 안드로이드 9.0에 대한 새로운 전원 관리 규칙을 함께 할 수있는 뭔가가 있는게 틀림 없어. 그러나 직장 내 응용 프로그램 내 위치를 10 분 간격으로 보낼 수 있어야합니다. 다만 가끔.
내가 사용하는 '최적화되지'에 배터리 최적화를 설정하려고 한 Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
어떤 영향을 미칠 것 같지 않습니다이 있습니다.
또한 높음으로 중포 기지 통지의 우선 순위를 설정했습니다. 이 작품,하지만 내 응용 프로그램에 대한 솔루션이 아니다 의미 하루에 10 개의 메시지에 대해. (출처 : 전원 관리 제한)
지금은 항상 foregroundService를 열어 '활성'양동이에 응용 프로그램을 가지고 노력하고 있어요. 이것은 반드시 앱이 알림 몇 시간 동안 연기 할 수있는 다른 통에 결코해야한다.
사용자가 현재 예를 들어, 응용 프로그램을 사용하는 경우 앱은 활성 버킷에있다 :
- 응용 프로그램은 활동을 시작했다
- 응용 프로그램은 전경 서비스를 실행
- 응용 프로그램은 전경 응용 프로그램에서 사용하는 콘텐츠 프로 바이더에 관련하는 동기화 어댑터가
- 응용 프로그램에서 알림에 사용자가 클릭
응용 프로그램이 활성 버킷에있는 경우, 시스템은 응용 프로그램의 작업, 알람, 또는 FCM 메시지에 대한 제한을 두지 않습니다.
그것이 가장 좋은 방법은되지 않을 수도 있기 때문에 이것은하지만, 내가 원하는해야 해결책은 아닌 것 같아. 그리고 그것은 하나 어쨌든 작동하지 않습니다.
이것은 내 onMessageReceived 기능입니다 :
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
PushNotificationManager.getInstance().handlePushNotification(object, getApplicationContext());
}
}
지금 나는 중포 기지 메시지가 onMessageReceived 기능을 입력하지 않는 이유에 대한 단서를입니다.
알람 관리기를 사용하여 수정되었습니다. 10 분 알람을 예약, 알람 내에서 코드를 작성할 때, 10 분 새로운 알람을 예약합니다.
이 트리거 내부의 모든 코드가 제대로 실행된다는 것을 의미합니다 졸다 모드에있는 경우 알람 관리기 전화를 깨울 수 있습니다.