睡眠定时器与MPMusicPlayerController

时间:2015-07-30 00:03:13

标签: ios nstimer mpmusicplayercontroller

我正在开发一款使用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;
}

2 个答案:

答案 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它在我们进入后台时正在运行,将继续运行。