我正在开发一款使用MPMusicPlayerController播放iTunes资料库的iOS应用。
是否可以创建一个在应用程序处于后台时运行的计时器?我想实现一个睡眠计时器。 NSTimer似乎不可能,或者仅限于3分钟。我还有其他选择吗?
目前,我在我的App Delegate中有这个。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
return YES;
}
答案 0 :(得分:1)
要在使用MPMusicPlayerController时让应用程序在后台运行,您可以在后台播放静音。这可能是一个坏主意......
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
NSString* path = [[NSBundle mainBundle] pathForResource:@"silence" ofType:@"m4a"];
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:nil];
self.player.numberOfLoops = -1;
[self.player play];
return YES;
}
答案 1 :(得分:0)
NSTimer完全没有问题。你不能在后台启动计时器,但你当然可以使用一个。但是当然你必须以其他方式在后台运行。例如,如果您在我们进入后台时已经在播放音乐,并且您已将应用配置为播放背景音乐,那么您将继续在后台运行:音乐将继续播放,因此计时器 if它在我们进入后台时正在运行,将继续运行。