2013-03-05 187 views
4

我正在使用UILocalNotification提醒用户,如果应用程序未运行,并且MPMusicPlayerController播放iPod音乐,MPMoviePlayerController播放无线电流URL。如何开始播放音乐iPhone中的锁定屏幕

根据苹果的文档: 如果iPhone被锁定,设备接收本地通知,然后它会打30秒的声音,当用户滑动滑块,然后将需要的应用前景和两种情况发生

  1. 如果应用程序没有运行,然后调用方法

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

  2. 如果应用程序已经运行,那么调用方法 -

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

,我可以在这些方法中完成我的任务。

问题: 我需要我的应用程序能够发挥出自己的声音(可能是iPod中的音乐或流网址,但不是本地的通知声音持续30秒),当iPhone被锁定并获得本地通知和应用程序在运行前景。

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

我也试过how-to-prevent-iphone-from-deep-sleeping

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

+0

@DineshPatel我知道我可以使用播放器播放音频,即使我正在使用,但问题是,当屏幕锁定我没有任何控制我的应用程序,那么如何通知应用程序,通知已收到所以应用程序应该开始播放音频。 – Archive 2013-05-04 05:59:21

+0

嗨曼珠,你有没有找到解决问题的办法?如果是的话,请给我建议,我该怎么做。 – Hindu 2013-06-11 10:36:11

回答

2

使用AVAudioSessionCategoryPlayback进行音频会话。检查音频会话编程指南here

+0

我已经看到这个链接,但无法理解如何通知应用程序,通知已收到,所以开始播放音乐 – Archive 2013-03-05 12:39:21

+0

如何调用(void)应用程序:(UIApplication *)应用didReceiveLocalNotification:(UILocalNotification *)滑动滑块 – Archive 2013-03-05 12:45:53

+0

我认为你的问题是如何在锁定屏幕上播放音乐? – Sagrian 2013-03-05 12:47:31

5

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

selectedDate = [timePicker date]; 

它被选中日期对象,在这个时候你的通知会来。
[NSDate date]由此您可以找到当前时间。并找到不同的时间通过。

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

现在,当您正在安排那么你通知.WRITE这个代码

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音频 添加它会解决你的问题,当设备锁定时播放歌曲。

+0

- (void)backgroundTask调用时即使在后台收到通知,但我写了一个代码剪辑播放音频使用AVAudioplayer开始在前台播放音频,但不在后台播放。我已经在plist中设置了“需要的背景模式”为“播放音频” – Archive 2013-05-29 07:46:29

+0

我的代码 - - (void)backgroundTask NSLog(@“Here you can play song through player”); NSURL * audioFileLocationURL = [[NSBundle mainBundle] URLForResource:@“HeadspinLong”withExtension:@“caf”]; NSError * error = nil; delegate.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileLocationURL error:&error]; [delegate.audioPlayer setNumberOfLoops:-1]; [delegate.audioPlayer prepareToPlay]; [delegate.audioPlayer play]; }在前台它打印日志以及开始播放音频,但在后台它只显示日志,不播放音频 – Archive 2013-05-29 07:51:24

+0

嗨Dinesh,我有同样的问题manju,日志打印,但音乐不开始在后台。 – Hindu 2013-06-11 11:00:58

相关问题