iphone可以在背景中为女性提供重要的位置更改网络活动吗?

时间:2011-03-22 16:52:54

标签: iphone networking ios4 background location

我正在开发一款能够监控后台重要位置变化的应用。我一直在阅读关于ios4和应用程序生命周期的所有答案(好吧,我想全部!)但是我无法弄清楚当应用程序在后台唤醒时我是否可以进行任何网络访问由于位置发生重大变化。

该应用目前通过TCP套接字进行网络访问。当应用程序暂停时,套接字将关闭。

我是否可以重新连接套接字,接收一些数据,发送新位置,然后在接收位置更改事件后仍然在后台关闭套接字?在办公室里静止时很难测试!我们可以假设网络活动完成时间不到10秒。还假设该应用程序未注册为voip应用程序(可能/应该是?...)

有什么想法吗?

2 个答案:

答案 0 :(得分:11)

是的。您可以根据重大变更事件进行网络处理。

当您在重大更改(从终止或暂停状态)中被唤醒进入后台状态时,您可以发出http请求。如果您在完成HTTP请求之前发现您的应用程序已被终止,您可以通过UIApplication上的beginBackgroundTaskWithExpirationHandler:方法请求额外的后台处理时间。

我花了很多时间在短途旅行中测试这个。 :)

答案 1 :(得分:4)

我想以一些细节确认RedBlueThing的答案。

我现在使用以下内容来完成此任务。 bgTask声明为UIBackgroundTaskIdentifier

bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:
           ^{
                 [[UIApplication sharedApplication] endBackgroundTask:bgTask];
            }];

// Now call methods doing network activity
// ...
// WHEN I KNOW THE LAST ACTION HAS COMPLETED USE THIS BLOCK OF CODE

if (bgTask != UIBackgroundTaskInvalid)
{
      [[UIApplication sharedApplication] endBackgroundTask:bgTask];
      bgTask = UIBackgroundTaskInvalid;
}

希望这会有所帮助,因为我看到很多人在看这个问题。