Ich habe eine App, die Audio im Hintergrund abspielt. Ich versuche, beginBackgroundTaskWithExpirationHandler
zu verwenden, um zum nächsten Titel zu springen, wenn der aktuelle Titel fertig ist.
Hier ist der Code, der aufgerufen wird, wenn sich der Wiedergabestatus ändert. Es protokolliert niemals das "beginBG called", obwohl anderer Code in derselben Methode erfolgreich im Hintergrund implementiert wird.
%Vor% ffwButtonPressed
ruft einige verschiedene Methoden zum Ändern der Spur auf. Wenn das abgeschlossen ist ...
Bearbeiten: Deklaration
%Vor%Bearbeiten: In ViewDidLoad
%Vor% Sie missverstehen die Funktion tatsächlich
-(UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler
Das Blockargument mit der Bezeichnung "Handler" wird ausgeführt, wenn die Hintergrundaufgabe abläuft (10 Minuten).
Um Ihren Code zum Laufen zu bringen, müssen Sie Ihren Code aus dem Ablauf-Handler entfernen:
%Vor%Hier finden Sie einen Link zur Dokumentation
Hat Ihre App eine Berechtigung, im Hintergrund als Audio-App zu laufen? (Setzen Sie den richtigen Modus in Ihre Info.plist)
Siehe Apples Dokumente
BeginBackgroundTaskWithExpirationHandler-Handler wird nur aufgerufen, wenn der Timer-Runout einen ziemlich großen Wert hat. Eine echte Aufgabe, wie sie oben von Tomsum erwähnt wurde, sollte nicht Teil eines Blocks sein. Denken Sie auch daran, endBackgroundTask aufzurufen: Am Ende, wenn backGroundTaskID! = UIBackgroundTaskInvalid und nur die Aufgabe im Block ausgeführt werden muss, wird die Taskvariable = UIBackgroundTaskInvalid
zurückgesetzt Ist das alles dein Code? Vielleicht ist die Variable bgTask
nicht initialisiert. Sie müssen bgTask vor der Zuweisung deklarieren. Probieren Sie das -
Tags und Links objective-c iphone ios background-process uiapplication