我在用UILocalNotification
如果应用程序未运行,则提醒用户MPMusicPlayerController
播放 iPod 音乐和MPMoviePlayerController
播放广播流 url。
根据苹果文档:
如果 iPhone 被锁定并且设备收到本地通知,那么它将播放 30 秒的声音,当用户滑动滑块时,它将把应用程序置于前台,并发生两种情况
-
如果应用程序未运行则调用方法
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-
如果应用程序已经运行,则调用方法 -
(void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify
我可以用这些方法执行我的任务。
问题 :
当 iPhone 锁定且收到本地通知并且应用程序在前台运行时,我需要我的应用程序能够播放我的声音(可能是 iPod 音乐或流媒体 URL,但不是本地通知声音 30 秒)。
参考应用程序:
“Alarm Clock HD”和应用程序商店中提供的其他应用程序都可以通过这种方式正常工作,但是当应用程序在后台运行时,这些应用程序无法播放闹钟(我不明白为什么???)
我也尝试过如何防止 iPhone 深度睡眠 http://blog.marcopeluso.com/2009/08/23/how-to-prevent-iphone-from-deep-sleeping/ :
它通过定期播放无声音乐来防止 iPhone 进入深度睡眠,但如何通知应用程序已收到通知,以便开始播放“实际音乐”?以及如何开始演奏新音乐?
@manju 抱歉我迟到了,但这对你有用。
selectedDate = [timePicker date];
它是selectedDate日期对象,这时候你的通知就会到来。
[NSDate date]
通过这个你可以找到当前时间。并发现两次都不同。
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中
UI应用程序背景模式音频
它将解决您的问题,在设备锁定时播放歌曲。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)