【问题标题】:send location to server in background - ios 7在后台将位置发送到服务器 - ios 7
【发布时间】:2014-06-10 11:30:50
【问题描述】:

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

我的代码:

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

我试图向自己发送一个无声的推送

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

有什么想法吗?

【问题讨论】:

    标签: ios ios7 push-notification cllocationmanager multitasking


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,但重要或地区对我没有帮助。报告的位置与任何区域或距离无关。我想决定何时获取有关用户位置的信息。
    • 你有没有提到 Silent Push 机制不可靠的说法?
    • @zeevblu 是的,您也可以这样做。但是请记住,一旦您在后台停止位置管理器,您将无法重复发送位置,您的应用程序将在您调用 [locationManager stopUpdating] 后暂停;
    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 2013-12-30
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多