2012-11-17 41 views
3

我試圖讓應用程序在後臺或屏幕鎖定時,遠程或耳塞播放和暫停音頻。所以,在viewDidLoad中我有:remoteControlReceivedWithEvent從來沒有叫

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
[self becomeFirstResponder]; 

我那麼有:

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent { 



if (receivedEvent.type == UIEventTypeRemoteControl) { 



switch (receivedEvent.subtype) { 



    case UIEventSubtypeRemoteControlTogglePlayPause: 

     [self playOrStop]; 

     break; 



    case UIEventSubtypeRemoteControlPreviousTrack: 


     break; 



    case UIEventSubtypeRemoteControlNextTrack: 


     break; 



    default: 

     break; 

} 

} 


} 

但是,它永遠不會被調用。在後臺運行打開,AVSession在AppDelegate中設置。我很茫然。

+0

您是否找到解決方案? –

+0

從來沒有發現任何東西。我有時可以阻止它,但最終在每次電話掛斷後重新啓動。很煩人。 – user717452

+0

我不知道你的問題的答案,但另一種方法是使用新的[MPRemoteCommandCenter](https://developer.apple.com/library/prerelease/ios/documentation/MediaPlayer/Reference/MPRemoteCommandCenter_Ref/index。 HTML)的API,而不是如果你的目標iOS 7.1+ – Andrew

回答

1

嘗試把

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
[self becomeFirstResponder]; 
在viewWillAppear中

:(BOOL)動畫,而不是viewDidLoad中。

+0

沒有區別 – user717452

2

你可能還需要添加:

- (BOOL)canBecomeFirstResponder { 
    return YES; 
} 

UIResponder需要任何的子類來實現這一點,否則將不接受第一個響應狀態。

+0

從iOS 6+不再工作。 – openfrog

+1

我很確定它確實可行,因爲那是我開始使用遠程控制的操作系統版本。 –