在后台发送位置到服务器 - ios 7

时间:2014-06-10 11:30:51

标签: ios ios7 push-notification cllocationmanager multitasking

当应用程序收到静音推送时,我尝试在后台发送用户位置。

我的代码:

  

应用: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];

我试图向自己发送无声推送

  • 推送总是到达我的设备
  • 有时会立即发送请求
  • 有时请求已发送但我在日志中看不到它
  • 有时请求未被发送 - 但是当我打开应用程序时,所有未发送的请求都已发送
  • 有时请求完全没有发送

任何想法?

1 个答案:

答案 0 :(得分:2)

无声推送通知不可靠,如果为相同的服务/设备启用了正常推送通知,则无法保证始终无法在设备上传送。

我的建议是使用 1)苹果的重要位置变化特征。 2)使用区域监控

两者都可以在后台模式下完成。

相关问题