我上跟踪用户的位置在一个时间间隔由用户自己(例如每5分钟)设置,并将其发送到服务器的应用程序工作页面ASIHTTPRequest
。应用程序将无法重新启动 - iPhone
这个程序应该可以在前台接收更新,无论是背景,甚至当应用程序没有运行(位置服务)。
虽然我的应用程序成功接收的前景和背景,它似乎并没有醒过来,当它不运行,不要送我到服务器的任何请求更新。
我在使用CLLocationManager
及其代表执行startMonitoringSignificantLocationChanges
,因为它在背景上。
在Settings
上,我的应用程序的图标在Location Services
上出现紫色箭头。
在我info.plist
,我有Required Background Modes
设置的,需要和方法的项目locations
:
locationManager:didUpdateToLocation:fromLocation:
locationManager:didFailWithError:
实现。
我的方法:
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
也被实现,并检查是否 包含launchOptions
开始UIApplicationLaunchOptions- LocationKey
的显著位置监控时应该唤醒/重新开张了。
有什么办法,我可以找出是否我的应用程序是真正被重新启动?
是否有任何额外的配置,需要设置为了这个工作?
请让我知道我是否应该提供任何额外的信息。
规格我使用:
SDK的Xcode 4.2.1
CLLocation是一个Singleton类中(读的地方,这可能影响)
iOS的部署目标:4.3
在测试了iPhone 3GS,4和Xcode的iOS 5模拟器,所有这些设备都会发生相同的行为。
设备:通用
UPDATE
我插入我的代码里面-[UIApplication beginBackgroundTaskWithExpirationHandler:]
并试图核对错误与UIBackgroundTaskInvalid
。但是,它似乎甚至没有输入(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法。
我通过使用SQLite试图保存和检索数据来跟踪应用程序。当在前景和背景上执行时,它都会记录没有问题的数据。当应用程序没有运行时,根本没有数据被保存。
嗨Joris,感谢您的快速回复,我在帖子上发布了更新权,以便我可以写更多。 – 2012-02-06 19:51:20
谢谢Joris,最终成为问题。我的背景任务耗时太长。 – 2012-02-08 10:47:11