- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在构建一个用作警报服务的应用程序。该应用每 10 分钟向我们的服务器发送一次有关用户位置的数据。
问题是应用程序将在几小时或几天后停止发送数据。我试图找到有关此的更多信息,并将我们的应用程序与持续跟踪数周的应用程序“Moves”的性能进行了比较。在他们的帮助部分,您可以了解跟踪失败的最常见原因 (http://www.moves-app.com/help),但这并没有帮助。
他们一定使用了一些我们没有使用的技巧。我猜他们使用了几种方法来实现这一点。
我的代码是这样的:
应用委托(delegate):
- (id)init
{
self = [super init];
if (self) {
_locManager = [[MYLocationManager alloc] init];
}
return self;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self._locManager start];
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self._locManager restart];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[self._locManager restart];
}
- (void)applicationWillTerminate:(UIApplication *)application
{
[self._locManager stop];
}
我的位置管理器:
- (void)start
{
[self _invokeLocationUpdates];
}
- (void)stop
{
[self _killLocationUpdates];
}
- (void)restart
{
[self _killLocationUpdates];
[self _invokeLocationUpdates];
}
- (void)_killLocationUpdates
{
if (self._locationManager != nil) {
[self._locationManager stopUpdatingLocation];
self._locationManager = nil;
}
}
- (void)_invokeLocationUpdates
{
if (self._locationManager == nil) {
self._locationManager = [[CLLocationManager alloc] init];
self._locationManager.delegate = self;
self._locationManager.pausesLocationUpdatesAutomatically = NO;
if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
self._locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
self._locationManager.distanceFilter = 10;
}
else {
self._locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self._locationManager.distanceFilter = 100;
}
[self._locationManager startUpdatingLocation];
}
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
// sending location info to server
[[NSNotificationCenter defaultCenter] postNotificationName:MYSEC_NOTIFICATION_POSITION_UPDATE object:self];
}
在 info.plist 文件中我们有:
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
最佳答案
您可以使用重大变更位置服务。基本上,如果您的应用程序被暂停或终止,当发生重大变化的位置服务接收到数据时,它会唤醒您的应用程序并给它一些时间来处理数据。您可以在 Location and Maps Programming Guide 阅读更多信息。 .
关于ios - 更长时间跟踪用户位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101575/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!