2012-06-03 69 views
2

我正在嘗試爲我的應用程序使用鎖定屏幕/正在播放控件,但未收到任何事件。文檔使得它看起來很直觀,所以當我沒有得到任何結果時,我感到有點驚訝。我的應用程序需要接收遠程控制事件,以用於在設備上播放音頻之外的目的。我試圖通過使用NSLog打印出一些確認來進行測試。我是否需要使用文檔中未提及的音頻或媒體框架?我沒有收到任何警告或錯誤,所以我不認爲應該有任何問題...有關遠程控制事件爲什麼不註冊的任何洞察力將不勝感激未收到遠程控制事件

這裏是相關的代碼:

- (void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 

    //Register for lock screen controls 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
} 

- (void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 

    //Unregister lock screen controls 
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents]; 
    [self resignFirstResponder]; 
} 

- (BOOL)canBecomeFirstResponder{ 
    return YES; 
} 

//Lock screen controls 
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{ 
    NSLog(@"RECEIVED"); 
    if (event.type == UIEventTypeRemoteControl) { 

     switch (event.subtype) { 

      case UIEventSubtypeRemoteControlTogglePlayPause: 
       NSLog(@"RECEIVED"); 
       break; 

      case UIEventSubtypeRemoteControlPreviousTrack: 
       NSLog(@"RECEIVED"); 
       break; 

      case UIEventSubtypeRemoteControlNextTrack: 
       NSLog(@"RECEIVED"); 
       break; 

      default: 
       break; 
     } 
    } 
} 

回答

3

除了Jojas提到的你需要確保你有一個活動的音頻會話。看看[AVAudioSession setActive:withFlags:error:]。

+0

嗯好的。我想知道是否缺少音頻會議是問題的一部分。 – Squatch

+0

這是個問題。我的應用程序本身不播放音頻,而是與播放音頻的其他設備進行通信。我添加了音頻會話,但只會在應用程序最後播放某些音頻時纔會接收遠程事件。我將發佈一個關於如何解決這個問題的新問題,但我想感謝你! – Squatch

+0

@Squatch,你最終發佈了另一個問題嗎? – Moshe

1

你已經確保你的應用程序的每個狀態設置ReceivingRemoteControlEvents是好的嗎?

你應該通過你的AppDelegate中的UIApplicationDelegate尋找必要的協議。 看來您需要在applicationWillResignActiveapplicationDidBecomeActive中實施。

但是,有關於App States and Multitasking的Apple文檔。我認爲它會幫助你處理申請狀態和你的目的。

希望它可以幫助你!

+0

我相信你是對的。發佈的代碼都在我的視圖控制器中,我沒有在我的代理中設置這些活動狀態方法。我會嘗試你的建議並回報。 – Squatch

+0

事實證明,我有這些默認的AppDelegate實現的方法。問題在於我缺乏音頻會話。儘管感謝您的幫助。當您試圖準確理解發生了什麼事情時,您鏈接的文檔幫助了很多。 – Squatch

+0

我很樂意幫助你。隨時提問。 – Sakares