iphone - übersicht - mpremotecommandcenter example




Wie kann ich meinen AVPlayer spielen lassen, während die App im Hintergrund läuft? (4)

Hatte das gleiche Problem, fand aber eine Lösung dafür ..

Hier https://devforums.apple.com/message/395049#395049 : https://devforums.apple.com/message/395049#395049

Der Inhalt des obigen Links:

Ersetzen Sie APPNAME durch Ihren eigenen App-Namen!

Ich bin auf iOS 4.2.1

EDIT: Arbeiten mit iOS5 + 6 + 7 Beta bisher

Fügen Sie UIBackgroundModes in der APPNAME-Info.plist , mit der Auswahl App spielt Audio ab

AudioToolBox dann das AudioToolBox Framework zu den Ordner-Frameworks hinzu.

APPNAMEAppDelegate.h Sie in der APPNAMEAppDelegate.h hinzu:

#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>

so sieht es so aus:

...
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
...

APPNAMEAppDelegate.m Sie in APPNAMEAppDelegate.m Folgendes hinzu:

// Set AudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

/* Pick any one of them */
// 1. Overriding the output audio route
//UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
//AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

// 2. Changing the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);

in die

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

aber vor den zwei Zeilen:

[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];

Erstellen Sie Ihr Projekt und sehen Sie, ob es einen Fehler gibt. Falls nicht, versuchen Sie es auf dem Gerät im Simulator zu debuggen.

Hoffe das hilft anderen mit demselben Problem ..

Ich habe meine Hausaufgaben gemacht ... habe hier gelesen, die Docs, googeln, stackoverflowing ... aber immer noch kein Glück meinen Soundstick zu machen, wenn der User die App in den Hintergrund tritt.

Was ich bisher gemacht habe: Die UIBackgroundModes, Audio zur Plist-Datei hinzugefügt.

Zuerst dieser Code:

radioAudio = [[AVAudioSession alloc] init];
[radioAudio setCategory:AVAudioSessionCategoryPlayback error:nil];
[radioAudio setActive:YES error:nil];

Dann das:

NSString *radioURL = @"http://xxx.xxx.xxx/radio.m3u";
radioPlayer = [[AVPlayer playerWithURL:[NSURL URLWithString:radioURL]] retain];

Aber sobald der Benutzer den Home-Button drückt, stirbt mein Sound.

Ich habe das auch gefunden, aber noch nicht hinzugefügt, aber einige Sachen, die ich gelesen habe, sagen, dass es nicht gebraucht wird;

newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
     if (newTaskId != UIBackgroundTaskInvalid && bgTaskId != UIBackgroundTaskInvalid)
        [[UIApplication sharedApplication] endBackgroundTask: bgTaskId];
bgTaskId = newTaskId;

Im Moment habe ich keine Ahnung, wohin ich gehen soll, damit mein AVPlayer das Radio singen lässt, während der Benutzer andere Sachen am Telefon macht. Ich teste das auf einem iPhone 4 mit 4.2. Erstellen Sie es für 4.0.

Hat jemand irgendwelche Vorschläge, was ich tun soll?


Ich habe Audio erfolgreich im Hintergrund laufen lassen, indem ich meinem applicationDidFinishLaunching folgendes hinzugefügt habe

// Registers this class as the delegate of the audio session.
[[AVAudioSession sharedInstance] setDelegate: self];    
// Allow the app sound to continue to play when the screen is locked.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

Sie haben ein gutes Beispiel für eine GPS-Hintergrund-App, die auch im Hintergrund Töne wiedergibt:

http://www.informit.com/articles/article.aspx?p=1646438&seqNum=5

In diesem Beispiel wird AudioToolbox verwendet.

Ich habe selbst einen Test gemacht und es funktioniert: Erstellen Sie ein einfaches Projekt, das den GPS-Post ( UIBackgroundModes location ) überwacht, und jede x empfangene Position, spielen Sie einen Ton mit

AudioServicesPlaySystemSound(soundId);

Dann, wenn Sie audio als Teil Ihrer UIBackgroundModes und die Sounds abgespielt werden, auch wenn die Anwendung nicht mehr im Vordergrund ist.

Ich habe einen solchen Test gemacht und es funktioniert ok!

(Ich habe es nicht geschafft, es mit AVPlayer arbeiten zu lassen, also habe ich auf AudioToolbox zurückgefallen)


iOS 9 schnell

Alles, was Sie benötigen, ist Folgendes zu Ihrer didFinishLaunchingWithOptions hinzufügen

do  {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
    //TODO
}




avplayer