Ich habe lokale Benachrichtigungen im App-Delegaten eingerichtet. Verwenden Sie dazu Folgendes:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
Wenn ich die App starte und dann beende, erhalte ich die Fehlermeldung:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Versuch, eine lokale Benachrichtigung zu planen {Branddatum = Samstag, 7. Juni 2014, 11:14:21 Uhr pazifische Sommerzeit, Zeitzone = Amerika / Los_Angeles (PDT) Offset -25200 (Tageslicht), Wiederholungsintervall = 0, Wiederholungszahl = UILocalNotificationInfiniteRepeatCount, nächstes Feuerdatum = Samstag, 7. Juni 2014, 11:14:21 Uhr Pacific Daylight Time, Benutzerinfo = (null)} mit einer Warnung Der Benutzer hat jedoch keine Berechtigung zum Anzeigen von Warnungen erhalten
Wie kann ich die erforderliche Berechtigung zum Anzeigen der Warnungen erhalten?
quelle
registerUserNotificationSettings
. Wäre es iOS 8 gewesen, hätte dieser Thread Ihre Frage beantwortet. Aber schauen Sie weiter - stackoverflow.com/questions/24006998/…Antworten:
Da Sie in iOS 8 den Benutzer um Erlaubnis bitten müssen, Benachrichtigungen von Ihrer App anzuzeigen, gilt dies sowohl für Remote- / Push- als auch für lokale Benachrichtigungen. In Swift können Sie es so machen,
Update für Swift 2.0
Swift 3.2
Die Ziel-C-Syntax ist ebenfalls sehr ähnlich.
Um nach aktuell registrierten Benachrichtigungstypen zu suchen, können Sie die Methode der UIApplication-Klasse verwenden.
Wenn der Benutzer zu Ihrer App Nein gesagt hat, sollte diese Funktion eine Einstellung ohne Typen zurückgeben.
Ich habe ein Tutorial darüber geschrieben, könnte man es sehen hier .
quelle
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. Gibt es in Swift eine andere Möglichkeit, Benutzer nach Berechtigungen zu fragen, um in iOS7 arbeiten zu können? Bitte helfen Sie.Fügen Sie diesen Code in den View Controller ein, in dem Sie zuerst die Benachrichtigungen programmieren (wenn Sie sie beim Start programmieren, ist dies der Fall
application:didFinishLaunchingWithOptions:
):In Swift:
Die Lösungen, die anhand der Versionsnummer des Systems getestet werden, sind nicht optimal und fehleranfällig.
quelle
application.respondsToSelector(Selector("registerUserNotificationSettings"))
andif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
was ein praktischesapplication
Objekt darstellt :)Versuchen Sie dies für Ziel-C:
Für Swift:
quelle
Ich hatte gerade das gleiche Problem. Scheint, als müssten wir in iOS 8 einen zusätzlichen Schritt ausführen, der normalerweise im Inneren ausgeführt wird:
Sie können diesen Code verwenden, wenn Sie ihn abwärtskompatibel halten möchten:
Das System merkt sich die Entscheidung und fragt nur einmal.
quelle
** Lokale Benachrichtigung mit drei Tasten für iOS8 +
// Button: Ich habe es genommen, später daran erinnert, es übersprungen **
quelle