我們的應用程序通過成爲遠程控制事件的第一響應者,使用遠程控制(例如,來自iOS7之前的舊式跳板,耳塞)明確阻止用戶表單。但是,在iOS7上,相同的代碼無法繞過控制中心的音樂控制。如何阻止iOS 7控制中心控制音樂應用程序?
從測試中,控制中心似乎已經繞過了所有音樂控制事件,包括UIEventSubtypeRemoteControlPause和UIEventSubtypeRemoteControlPlay和UIEventSubtypeRemoteControlTogglePlayPause。
控制中心是否有自己的遠程控制協議,或者截取遠程控制事件的方式在iOS7中發生了變化嗎?
相同的阻止代碼仍然可以與iOS6設備完美配合。這是我們做什麼:
加入我們的appDelegate的方法:
(BOOL)canBecomeFirstResponder { 返回YES; }
調用此在applicationDidBecomeActive:
[[UIApplication的sharedApplication] beginReceivingRemoteControlEvents];
//將自己設置爲第一響應者 [self becomeFirstResponder];
調用此在applicationWillResignActive
//關閉遙控事件傳遞 [[UIApplication的sharedApplication] endReceivingRemoteControlEvents];
//辭去第一響應者 [self resignFirstResponder];
最後加入
(無效)remoteControlReceivedWithEvent:(的UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
NSLog(@"Received: UIEventSubtypeRemoteControlTogglePlayPause\n");
break;
case UIEventSubtypeRemoteControlPreviousTrack:
NSLog(@"Received: UIEventSubtypeRemoteControlPreviousTrack\n");
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"Received: UIEventSubtypeRemoteControlNextTrack\n");
break;
case UIEventSubtypeRemoteControlPlay:
NSLog(@"Received: UIEventSubtypeRemoteControlPlay\n");
break;
case UIEventSubtypeRemoteControlPause:
NSLog(@"Received: UIEventSubtypeRemoteControlPause\n");
break;
case UIEventSubtypeRemoteControlStop:
NSLog(@"Received: UIEventSubtypeRemoteControlStop\n");
break;
default:
NSLog(@"Received: Some remove control events\n");
break;
}
}
}
任何指針將被理解的。
爲什麼要投我一票?這是一個現實的問題。 – kakyo