mightym
mightym

Reputation: 191

Background Audio in iOS

I'm trying to build an iOS App (iOS > 5.0). It should play music files when a timer, set by the user, ends. Here is my setup what if done so far:

This works fine. You can have your music app playing in background. My App starts to play a song the music app fades away. My song is played and if its finished the music app continues to play. But only as long as my app isn't in background.

In background I get the error:

Error Domain=NSOSStatusErrorDomain Code=560161140 "The operation couldn\u2019t be completed. (OSStatus error 560161140.)"

Is it possible that both combinations of, playing in background (on custom events) and switching between f.e. music.app and my app in background isn't possible?

Here a the code of my player model: http://pastie.org/4830995

Upvotes: 2

Views: 3236

Answers (2)

stringCode
stringCode

Reputation: 2272

I think your problem might be with background handling. You need to override this function on app delegate.

  - (void)applicationDidEnterBackground:(UIApplication *)application
{
 __block UIBackgroundTaskIdentifier task = 0;
 task=[application beginBackgroundTaskWithExpirationHandler:^{
     NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]);
    [application endBackgroundTask:task];
    task=UIBackgroundTaskInvalid;
}];

}

your application will get killed after 6 minutes unless sound is played. If your user set timer for more then 6 minutes, what you could do is to play short quite sound every 5.5 minutes to keep you app alive and start new background task. Also you have to consider that lot of thing will not get executed in background. I did some stuff somewhat similar to what you are doing. What I did was created custom subclass of NSObject witch handled music playback and application expiration stuff. And made it a strong property on my delegate as lot of functions and notifications will not run on you VC in the background.

Although if you just want to play a sound this might not be the best approach. Maybe just sending local notification would do.

Hope this helped.

Upvotes: 0

Did you register your app to keep running in the background as an audio app? To do so, add the UIBackgroundModes key to your Info.plist file and set its value to audio.

Upvotes: -1

Related Questions