Ich versuche, einen Timer zu erstellen, der auslöst, dass eine lokale Benachrichtigung zu einem Zeitpunkt ausgelöst wird, den der Benutzer festgelegt hat. Das Problem, das ich habe, ist, dass ich keinen Weg finden kann, um die lokale Benachrichtigung um etwa 7:00 Uhr abzusetzen. Fast alle Methoden, die bei der Untersuchung dieses Problems gefunden wurden, beinhalteten, dass die lokale Benachrichtigung ab dem aktuellen Datum zu einer bestimmten Zeit ablief. Ich versuche dem Benutzer zu erlauben, 19:00 Uhr auszuwählen und dann die Benachrichtigung zu dieser Zeit ablaufen zu lassen. Logischerweise ist es sinnvoll, dass dies durch die letzte Zeit (vom Benutzer ausgewählter Wert) erreicht wird - aktuelle Zeit, die Ihnen den Zeitunterschied geben würde. Ich bin mir aber nicht ganz sicher, wie ich das machen soll.
Jede Hilfe in Bezug auf das Thema wird sehr geschätzt werden, danke. Unten ist der Code, den ich derzeit verwende, um eine lokale Benachrichtigung auszulösen.
%Vor%Nun, in iOS 10 hat Apple UILocalNotification aufgegeben, was bedeutet, dass es Zeit ist, sich mit einem neuen Benachrichtigungs-Framework vertraut zu machen.
Einrichtung Dies ist ein langer Post, also fangen wir einfach an, indem wir das neue Benachrichtigungsframework importieren:
%Vor%Sie verwalten Benachrichtigungen über ein gemeinsames UNUserNotificationCenter-Objekt:
%Vor%Autorisierung Wie beim älteren Benachrichtigungs-Framework müssen Sie die Berechtigung des Benutzers für die Arten von Benachrichtigungen haben, die Ihre App verwendet. Nehmen Sie die Anfrage früh in Ihrem App-Lebenszyklus wie in application: didFinishLaunchingWithOptions: vor. Wenn Ihre App zum ersten Mal eine Autorisierung anfordert, zeigt das System dem Benutzer eine Warnung an, danach können sie die Berechtigungen von den Einstellungen verwalten:
%Vor%Sie stellen die tatsächliche Autorisierungsanfrage über das gemeinsam genutzte Benachrichtigungscenter:
%Vor%Das Framework ruft den Beendigungshandler mit einem booleschen Wert auf, der angibt, ob der Zugriff gewährt wurde, und einem Fehlerobjekt, das null ist, wenn kein Fehler aufgetreten ist.
Hinweis: Der Benutzer kann die Benachrichtigungseinstellungen für Ihre App jederzeit ändern. Sie können die zulässigen Einstellungen mit getNotificationSettings überprüfen. Dies ruft einen Abschlussblock asynchron mit einem UNNotificationSettings-Objekt auf, mit dem Sie den Autorisierungsstatus oder die einzelnen Benachrichtigungseinstellungen überprüfen können:
%Vor%Erstellen einer Benachrichtigungsanforderung Eine UNNotificationRequest-Benachrichtigungsanforderung enthält Inhalt und eine Auslösebedingung:
Benachrichtigungsinhalt
Der Inhalt einer Benachrichtigung ist eine Instanz des UNMutableNotificationContent mit den folgenden Eigenschaften, die als erforderlich festgelegt sind:
title: Zeichenfolge, die den Hauptgrund für die Warnung enthält.
Untertitel: String mit einem Alarm Untertitel (falls erforderlich)
body: String mit dem Text der Warnmeldung
badge: Nummer, die auf dem Symbol der App angezeigt wird.
Sound: Ein Sound, der abgespielt wird, wenn der Alarm ausgelöst wird. Verwenden Sie UNNotificationSound.default () oder erstellen Sie einen benutzerdefinierten Sound aus einer Datei. launchImageName: Name eines Startabbilds, das verwendet werden soll, wenn Ihre App als Reaktion auf eine Benachrichtigung gestartet wird.
userInfo: Ein Wörterbuch mit benutzerdefinierten Informationen zum Übergeben der Benachrichtigung Anhänge: Ein Array von UNNotificationAttachment-Objekten. Verwenden Sie diese Option, um Audio-, Bild- oder Videoinhalte einzubeziehen.
Beachten Sie, dass es beim Lokalisieren der Warnungszeichenfolgen wie dem Titel besser ist, localizedUserNotificationString (forKey: arguments :) zu verwenden, was das Laden der Lokalisierung verzögert, bis die Benachrichtigung zugestellt wird.
Ein kurzes Beispiel:
%Vor%Benachrichtigungsauslöser
Löst eine Benachrichtigung basierend auf Zeit, Kalender oder Standort aus. Der Auslöser kann sich wiederholen:
Zeitintervall: Planen Sie eine Benachrichtigung für eine Anzahl von Sekunden später. Zum Beispiel, um in fünf Minuten auszulösen:
%Vor%Kalender: Auslöser zu einem bestimmten Datum und einer bestimmten Uhrzeit. Der Trigger wird mit einem Datumskomponentenobjekt erstellt, das bestimmte Wiederholungsintervalle erleichtert. Um ein Datum in sein Datum zu konvertieren, verwenden Sie den aktuellen Kalender. Zum Beispiel:
%Vor%Um den Auslöser aus den Datumskomponenten zu erstellen:
%Vor%Um einen Trigger zu erstellen, der in einem bestimmten Intervall wiederholt wird, verwenden Sie den richtigen Satz von Datumskomponenten. Um beispielsweise die Benachrichtigung täglich zur gleichen Zeit wiederholen zu lassen, benötigen wir nur die Stunden, Minuten und Sekunden:
%Vor%Um es wöchentlich zu wiederholen, brauchen wir auch den Wochentag:
%Vor%Planung
Wenn sowohl der Inhalt als auch der Auslöser bereit sind, erstellen wir eine neue Benachrichtigungsanforderung und fügen sie dem Benachrichtigungszentrum hinzu. Jede Benachrichtigungsanforderung erfordert eine Zeichenfolgen-ID für die zukünftige Referenz:
%Vor%Tags und Links ios timer swift time uilocalnotification