응용 프로그램이 백그라운드에있는 동안 어떻게 중포 기지에서 10 분마다 onNotificationReceived을 처리한다. 안드로이드 9.0

팀 1 :

나는 서버에 내가 중포 기지에서 자동 푸시 알림을받을 때마다 내 GPS-위치를 보낼 수 있어야합니다. 통지를 보내는 타이머는 현재 매 10 분으로 설정됩니다. 휴대폰이 충전 될 때이 문제가되지 않습니다, 그러나 사용 않을 때 응용 프로그램이 FirebaseMessagingService에서 onMessageReceived 만 몇 시간마다라고, 백그라운드에서입니다. 이것은 안드로이드 9.0에 대한 새로운 전원 관리 규칙을 함께 할 수있는 뭔가가 있는게 틀림 없어. 그러나 직장 내 응용 프로그램 내 위치를 10 분 간격으로 보낼 수 있어야합니다. 다만 가끔.

내가 사용하는 '최적화되지'에 배터리 최적화를 설정하려고 한 Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
어떤 영향을 미칠 것 같지 않습니다이 있습니다.

또한 높음으로 중포 기지 통지의 우선 순위를 설정했습니다. 이 작품,하지만 내 응용 프로그램에 대한 솔루션이 아니다 의미 하루에 10 개의 메시지에 대해. (출처 : 전원 관리 제한)

지금은 항상 foregroundService를 열어 '활성'양동이에 응용 프로그램을 가지고 노력하고 있어요. 이것은 반드시 앱이 알림 몇 시간 동안 연기 할 수있는 다른 통에 결코해야한다.

사용자가 현재 예를 들어, 응용 프로그램을 사용하는 경우 앱은 활성 버킷에있다 :

  • 응용 프로그램은 활동을 시작했다
  • 응용 프로그램은 전경 서비스를 실행
  • 응용 프로그램은 전경 응용 프로그램에서 사용하는 콘텐츠 프로 바이더에 관련하는 동기화 어댑터가
  • 응용 프로그램에서 알림에 사용자가 클릭

응용 프로그램이 활성 버킷에있는 경우, 시스템은 응용 프로그램의 작업, 알람, 또는 FCM 메시지에 대한 제한을 두지 않습니다.

(출처 : 전원 양동이 Android9) .

그것이 가장 좋은 방법은되지 않을 수도 있기 때문에 이것은하지만, 내가 원하는해야 해결책은 아닌 것 같아. 그리고 그것은 하나 어쨌든 작동하지 않습니다.

이것은 내 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 기능을 입력하지 않는 이유에 대한 단서를입니다.

팀 1 :

알람 관리기를 사용하여 수정되었습니다. 10 분 알람을 예약, 알람 내에서 코드를 작성할 때, 10 분 새로운 알람을 예약합니다.

이 트리거 내부의 모든 코드가 제대로 실행된다는 것을 의미합니다 졸다 모드에있는 경우 알람 관리기 전화를 깨울 수 있습니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=228605&siteId=1