如何定期获取位置并在后台ios9中将位置发送到服务器

时间:2016-06-18 11:25:36

标签: ios objective-c iphone background ios9

我希望我的应用每15分钟获取一次该位置,并将位置信息发送到服务器。 在服务器中,我比较了位置并将响应作为通知发送给客户端(几乎就像推送通知,但在我的服务器上)。

2 个答案:

答案 0 :(得分:1)

您可以将CLLocation Managers授权设置为 requestAlwaysAuthorization 以持续获取位置(即使您的应用位于后台。)

self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
    {
        [self.locationManager requestAlwaysAuthorization];
    }

注意: requestAlwaysAuthorization 是电池密集型的,苹果审核人员会非常有理由使用此功能来批准您的应用。此外,请确保选中所需背景模式下的“位置更新”。

您可以使用 NSTimer 确定15分钟并从上面的 CLLocationManager 获取位置。

之后,您可以使用后台任务更新服务器的位置。

如果您有任何疑问,可以按照以下链接: http://www.creativeworkline.com/2014/12/core-location-manager-ios-8-fetching-location-background/ http://mobileoop.com/background-location-update-programming-for-ios-7 Periodic iOS background location updates

答案 1 :(得分:0)

请查看apple doc

从指南中有一些关键点,您可能会对苹果文档中的以下部分感兴趣。

  

强烈建议对应用进行重要更改位置服务   不需要高精度的位置数据。有了这项服务,   仅当用户的位置更改时才会生成位置更新   显著;因此,它是提供社交应用程序或应用程序的理想选择   用户具有非关键的,与位置相关的信息。如果应用程序   更新发生时,系统会暂停,系统会将其唤醒   处理更新的背景。如果应用程序启动此服务并且是   然后终止,系统在a时自动重新启动应用程序   新的位置变得可用。这项服务在iOS 4和   之后,它仅适用于包含蜂窝网络的设备   无线电。

有关实施细节,请查看Getting location events background(ios)