Aktualnie próbuję skonfigurować dźwięk w tle dla aplikacji rozwijanej na iOS 4. Aplikacja nie ma dedykowanego odtwarzacza muzycznego viewController
, jednak w przeciwieństwie do innych dźwięków w tle aplikacje takie jak Pandora, co sprawia, że zadanie jest nieco bardziej zagmatwane.iOS 4: Zdalne sterowanie dźwiękiem w tle
Ustawiłem odpowiednie ustawienia Info.plist
poprawnie i posiadam obiekt AVAudioPlayer
w aplikacji delegat, który jest dostępny zewsząd. Kiedy użytkownik odtwarza utwór, zastępuję AVAudioPlayer
nowym, zainicjowanym z utworem i odtwarza go. To wszystko działa świetnie, z tym że teraz nie mam pojęcia, jak uzyskać wsparcie dla zdarzeń zdalnego sterowania.
podstawie dokumentacji Apple, mam to:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch(event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
if([iPhoneAppDelegate backgroundAudioPlayer].playing)
[iPhoneAppDelegate pauseBackgroundAudioPlayer];
else
[iPhoneAppDelegate playBackgroundAudioPlayer];
break;
}
}
Chodzi o to, gdzie mogę umieścić to? Dokumentacja Apple wydaje się sugerować, że powinno to być gdzieś w jakimś kontrolerze widoku, ale moja aplikacja ma wiele kontrolerów widoku i kontrolerów nawigacyjnych. Gdziekolwiek spróbuję to zrobić, z jakiegoś powodu dotknięcie przycisku Przełącz/Odtwórz w wielozadaniowych pilotach zdalnego sterowania powoduje, że utwór po prostu zatrzymuje się na chwilę, a następnie wznawia, lub w jakiś sposób powoduje dwukrotne odtworzenie piosenki.
Jak zmieniłeś przycisk odtwarzania/zatrzymania na pasku wielozadaniowym ?! –