我有一个类名myClassCalculate有以下方法
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
NSLog(@"Accelerometer is called");
}
我在
中创建对象 - (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
myObject = [[myClassCalculate alloc] init];
现在当应用程序进入后台时,我想要这个
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
我该怎么做才能让这个方法在app后台被调用
谢谢
你不能,只有VOIP,音频和导航应用程序允许在后台运行。因此,如果你的应用程序没有落入其中一个,它将被挂起,并且不会接收任何事件。
更多背景信息:App States and Multitasking
声明应用程序支持的后台任务
对某些类型的后台执行的支持必须在通过使用它们的应用程序推进。应用程序声明支持服务使用它的Info。plist文件。添加UIBackgroundModes键到你的信息。列表文件并将其值设置为包含一个或的数组以下更多字符串:
audio
-应用程序在后台向用户播放可听到的内容。(此内容包括使用AirPlay流媒体音频或视频内容。)
location
-该应用程序保持用户告知他们的位置,即使它是在后台运行。
voip
-该应用程序为用户提供了使用互联网连接拨打电话的能力。
newsstand-content
-该应用程序是一个报摊应用程序,下载和处理杂志或报纸的内容在后台。
external-accessory
-该应用程序与硬件附件一起工作,需要定期提供更新。
在今年的WWDC上,他们说加速度计的更新可以在后台观察到,但我不确定如何做到这一点。我想应该只支持iOS 5。
要执行后台任务,您需要将它们添加到您的信息中。UIBackgroundModes键中的plist。这是目前可用的。
音频应用程序在后台播放可听到的内容。
位置应用程序向用户提供基于位置的信息,并要求使用标准位置服务(与显著更改位置服务相对)来实现此功能。
网络电话该应用程序提供ip语音服务。具有此密钥的应用程序在系统启动后自动启动,以便应用程序可以重新建立VoIP服务。使用此键的应用程序也可以播放背景音频。
newsstand-content该应用程序使用Newsstand Kit框架在后台处理最近下载的内容,以便在用户需要时准备好内容。此值在ios5.0及以上版本中支持。
external-accessory应用程序与定期发送数据的附件通信。
尝试在plist中放置位置或使用[UIApplication beginBackgroundTaskWithHandler:]此值在iOS 5.0及更高版本中支持。
当应用程序进入后台时,这个方法被称为onUserLeaveHint()