beginBackgroundTaskWithExpirationHandler wird nie aufgerufen

7

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 ...

%Vor%

Bearbeiten: Deklaration

%Vor%

Bearbeiten: In ViewDidLoad

%Vor%     
mnort9 23.07.2012, 17:52
quelle

5 Antworten

27

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

    
Tomusm 25.07.2012, 17:24
quelle
2

Ich brauchte schließlich nicht beginBackgroundTaskWithExpirationHandler . Diese Zeile löste mein Problem ...

%Vor%     
mnort9 24.07.2012 15:39
quelle
0

Hat Ihre App eine Berechtigung, im Hintergrund als Audio-App zu laufen? (Setzen Sie den richtigen Modus in Ihre Info.plist)

Siehe Apples Dokumente

    
Wiz 27.08.2013 17:35
quelle
0

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     
Atif Khan 02.10.2013 09:34
quelle
-1

Ist das alles dein Code? Vielleicht ist die Variable bgTask nicht initialisiert. Sie müssen bgTask vor der Zuweisung deklarieren. Probieren Sie das -

%Vor%     
Srikar Appalaraju 23.07.2012 17:58
quelle