如何开始在iPhone上锁屏播放音乐

我正在使用UILocalNotification提醒用户,如果应用程序不运行,并且MPMusicPlayerController播放iPod音乐和MPMoviePlayerController播放无线MPMoviePlayerController URL。

根据苹果公司的文件:如果iphone被locking,设备收到本地通知,那么它将播放30秒的声音,当用户滑动滑块,然后将在前台应用程序,并发生两种情况

  1. 如果App没有运行,则调用方法

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  2. 如果App已经运行,然后调用方法 –

    (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify

我可以在这些方法中执行我的任务。

问题:当iPhone被locking并且收到本地通知,并且应用程序在前台运行时,我需要我的应用程序能够播放我的声音(可能是iPod音乐或stream式传输url,但不能播放30秒内的本地通知声音)。

参考应用程序:“闹钟高清”和其他应用程序也可以在应用程序商店这种方式工作正常,但这些都不能发挥警报时,应用程序运行在后台(我不明白为什么???)

我也试过如何防止iPhone从深度睡眠 :

通过定期播放静音音乐来防止iPhone深度睡眠,但如何通知应用程序已收到通知,开始播放“实际音乐”? 以及如何开始播放新的音乐?

对不起,我迟到了,但它为你工作。

  selectedDate = [timePicker date]; 

它是selectdate对象,在这个时候你的通知会来。
[NSDate date]通过这个你可以find当前的时间。 并find不同的时间通过。

  NSTimeInterval timeDifference = [ selectedDate timeIntervalSinceDate:[NSDate date]]; 

现在当你安排你的通知,然后写这个代码

  UIApplication *app = [UIApplication sharedApplication]; UIBackgroundTaskIdentifier bgTask = 0; NSTimer *backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:timeDifference target:self selector:@selector(backgroundTask) userInfo:nil repeats:NO]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; }]; -(void)backgroundTask { NSLog(@"Here you can play song via player "); } 

不要忘记添加app.infolist

UIApplication BackgroundMode Audio将解决您的问题,当设备locking时播放歌曲。

使用AVAudioSessionCategoryPlayback进行audio会话。 检查audio会议节目指南在这里