Ich möchte eine Funktion implementieren, die der Stummschaltung von WhatsApp ähnelt. Im Grunde genommen hört der Benutzer für einige Zeit auf, Benachrichtigungen zu erhalten (in meinem Fall mit dem Location Manager). Nach dieser Zeit werden Benachrichtigungen (Standort-Manager) automatisch aktiviert. Wie kann ich ein solches Ereignis (beispielsweise automatisches Aktivieren der Standortverwaltung) beispielsweise 1 Woche nach dem Klicken auf eine Schaltfläche planen?
Ich würde einen hybriden Ansatz vorschlagen, bei dem sowohl NSTimer als auch ein Häkchen verwendet werden, wenn die App startet oder in den Vordergrund tritt.
Wenn der Benutzer Benachrichtigungen deaktiviert, speichern Sie diese Zeit in NSUserDefaults als notificationsDisabledTime.
%Vor%Überprüfen Sie nun, wann immer die App gestartet wird oder in den Vordergrund tritt Die Dauer zwischen notificationsDisabledTime und der aktuellen Zeit ist größer als eine Woche. Wenn dies der Fall ist, aktivieren Sie die Benachrichtigungen erneut. Wickeln Sie dies in einer netten wiederverwendbaren Funktion zusammen. Rufen Sie diese Funktion im App-Delegaten applicationDidBecomeActive auf:
%Vor%Als Backup haben Sie einen NSTimer, der etwa einmal pro Stunde feuert und die gleiche Prüfung durchführt, dh diese Funktion aufruft. Dies ist der Fall, wenn der Benutzer viel Zeit in Ihrer App verbringt. Auf diese Weise wird es nach einer Woche wieder aktiviert, wenn auch nicht unbedingt GENAU zum richtigen Zeitpunkt, aber das ist normalerweise in Ordnung.
1. Vorgehensweise Ich schlage vor, die NSTimer-Klasse zu verwenden und einen Timer für den Aufruf der Funktion zu setzen, der die Stummschaltung aufhebt. Und auch Hintergrund Aufgabe für die Verwendung der Methode im Hintergrund und es könnte durch Hinzufügen von
getan werden %Vor%vor dem Aufruf des Zeitplans.
Zum Beispiel wollte ich für 8 Stunden stumm schalten, als Sie
anrufen müssen %Vor% und füge dein stopper
Sie können auch spezifische Informationen über das Objekt senden, das stummgeschaltet wird, indem Sie userInfo
zu Timer hinzufügen.
2. Vorgehensweise
Sie können nach Zeitunterschieden zwischen applicationDidEnterBackground
und applicationDidEnterForeground
let date = NSDate.date()
und Differenz let difference NSDate.timeIntervalSinceDate(date)
Tags und Links ios