如何开始在iPhone上锁屏播放音乐
我正在使用UILocalNotification
提醒用户,如果应用程序不运行,并且MPMusicPlayerController
播放iPod音乐和MPMoviePlayerController
播放无线MPMoviePlayerController
URL。
根据苹果公司的文件:如果iphone被locking,设备收到本地通知,那么它将播放30秒的声音,当用户滑动滑块,然后将在前台应用程序,并发生两种情况
-
如果App没有运行,则调用方法
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-
如果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会议节目指南在这里