我正在构建一个应用程序来检查用户是否在我的客户的商店附近,如果有,它会向他发送通知。
我希望应用程序也在后台检查它。
我已将此行添加到我的df = pd.read_csv(filename)
文件中:
这是我的代码:
AppDelegate.m :
info.plist
MonitorLocationViewController.m :
-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self configureLocationManager];
[self.locationManager startUpdatingLocation];
return YES;
}
-(void)configureLocationManager
{
//Initializing locationManager
self.locationManager=[[CLLocationManager alloc] init];
//setting "locationManager"'s(CLLocationManager) delegate to "self"
self.locationManager.delegate=self.monitorLocationVC;
//Setting "locationManager"'s(CLLocationManager)'s distance filter to none
//self.locationManager.distanceFilter=kCLDistanceFilterNone;
//Setting "locationManager"'s(CLLocationManager)'s activityType to navigation
self.locationManager.activityType=CLActivityTypeAutomotiveNavigation;
//setting "locationManager"'s(CLLocationManager) desiredAccuracy to "best"
self.locationManager.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
//If OS version is 9 or above - setting "allowsBackgroundLocationUpdates" to YES
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
self.locationManager.allowsBackgroundLocationUpdates = YES;
}
}
有人有想法吗?谢谢!
答案 0 :(得分:1)
我建议您仔细阅读与startMonitoringSignificantLocationChanges方法相关的讨论(您必须使用此方法来解决此问题)。请注意,您可以通过调用 stopMonitoringSignificantLocationChanges 强制执行新的更新,然后再次调用start ...方法。您还需要监视locationManager中的时间戳:didUpdateLocations方法。
Apple详细介绍了当应用在后台时获取更新所需的步骤。基本上,您必须在应用委托方法中拦截一个键。此SO question包含示例代码。
但在您跳转到代码之前,请按照建议查看讨论,因为它会让您更清楚地了解如何掌握此行为。与往常一样,您也总是希望监视讨论中提到的失败委托方法。
Apple发布了关于位置更新发送到设备的频率限制的非常重要的说明。为节省电量,他们尝试限制更新次数,直到设备移动500米。您的测试应考虑这些限制。
<强>资源强>
如需更多补充信息,请注意以下SO问题的答案:
答案 1 :(得分:0)
很遗憾,由于NDA,我无法发布用于地理围栏的代码,但本文可以帮助您实现所需目标:https://corgitoergosum.net/2013/01/12/geo-fencing-in-timetraveler-v2-part-i-of-3/