2

응용 프로그램이 자동 푸시를 받았을 때 백그라운드에서 사용자 위치를 보내려고합니다.백그라운드로 서버에 위치 보내기 - ios 7

내 코드 :

응용 프로그램 : didReceiveRemoteNotification : fetchCompletionHandler :

UIBackgroundTaskIdentifier bgTask = 0; 
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
      bgTask = UIBackgroundTaskInvalid; 
    }]; 
[_cllManager startUpdatingLocation]; 
[[UIApplication sharedApplication] endBackgroundTask:bgTask]; 

을 locationManager : didUpdateLocations :

같은 보이는

UIBackgroundTaskIdentifier bgTask = 0; 
    bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
       bgTask = UIBackgroundTaskInvalid; 
     }]; 
    // here I'm sending the request to server via AFNetworking 
    [_cllManager stopUpdatingLocation]; 

    [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 

내가 푸시는 항상 요청했다 때로는 요청이 때때로 즉시

  • 을 보냈습니다
  • 내 장치에 도착

    • 자신에게 자동 푸시를 보내려고 :

      처럼 보이는 보냈지 만 내 기록에서 볼 수 없다.

    • 때때로 요청이 전송되지 않았지만 애플리케이션을 열었을 때 모든 보내지 않은 요청 - w 모든

    어떤 아이디어를 보내지 않은 때때로 요청을

  • 을 전송로?

  • 답변

    2

    자동 푸시 알림은 신뢰할 수 없으며 동일한 푸시 알림이 동일한 서비스/기기에 대해 활성화 된 경우 항상 기기에서 전달되지 않을 수 있습니다.

    제 생각에는 1) Apple의 중요한 위치 변경 기능을 사용하는 것이 좋습니다. 2) 지역 모니터링 사용

    두 가지 모두 백그라운드 모드에서 수행 할 수 있습니다.

    +0

    감사하지만 중요한 또는 지역이 나를 도와주지 않습니다. 위치는 어떤 지역이나 거리와도 독립적입니다. 사용자의 위치 정보를 언제 받아야할지 결정하고 싶습니다. – zeevblu

    +0

    Silent Push 메커니즘이 신뢰할 수 없다는 주장에 대한 언급이 있습니까? –

    +1

    @ zeevblu 예, 그렇게 할 수도 있습니다. 그러나 백그라운드에서 위치 관리자를 중지하면 위치를 반복해서 보낼 수 없으며 [locationManager stopUpdating]을 호출하면 애플리케이션이 일시 중지됩니다. – jevo

    관련 문제