2013-03-05 120 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

相關問題