我正在为iOS 4编写一个应用程序,它需要在后台以常规(用户指定的)间隔播放声音(或振动)。我不想使用本地通知,因为不需要显示可点击的警报。
当我的应用切换到后台时,会触发此代码(来自Apple的文档):
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task.
NSLog(@"I am now in the background");
// Here I need something like this:
[self performSelector:@selector(myMethod) withObject:nil afterDelay:5.0];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
当应用切换到后台时会执行[self performSelector: ...]
行,但在应用切换回前景之前不会调用myMethod
方法(不是在5秒内,如设置为afterDelay:
参数)。那么,如何在应用程序仍处于后台时调用该方法?
答案 0 :(得分:0)
没关系!安排本地通知可以做我需要的。
最好使用本地通知和UIApplication cancelAllLocalNotifications
来清除用户未解雇的现有通知。完善!此外,如果弹出消息让用户知道声音(或振动)是什么,则用户可以获得额外的好处。