带 MPMusicPlayerController 的睡眠定时器
Sleep Timer with MPMusicPlayerController
我正在开发一个 iOS 应用程序,它使用 MPMusicPlayerController 播放 iTunes 库中的音频。
是否可以创建一个计时器,在应用程序处于后台时 运行?我想实现一个睡眠定时器。 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;
}
NSTimer 完全没有问题。您不能在后台启动 计时器,但您当然可以使用一个。但当然你必须以其他方式在后台保持 运行。例如,如果我们进入后台时您已经在播放音乐,并且您已将应用配置为播放背景音乐,那么您将在后台保持 运行:音乐将继续播放,因此计时器, 如果我们进入后台时是运行,将继续运行。
要在使用 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;
}
我正在开发一个 iOS 应用程序,它使用 MPMusicPlayerController 播放 iTunes 库中的音频。
是否可以创建一个计时器,在应用程序处于后台时 运行?我想实现一个睡眠定时器。 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;
}
NSTimer 完全没有问题。您不能在后台启动 计时器,但您当然可以使用一个。但当然你必须以其他方式在后台保持 运行。例如,如果我们进入后台时您已经在播放音乐,并且您已将应用配置为播放背景音乐,那么您将在后台保持 运行:音乐将继续播放,因此计时器, 如果我们进入后台时是运行,将继续运行。
要在使用 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;
}