2017-07-28 3 views
0

Ich versuche, einen Einstellungsbildschirm in einer iOS 11 App zu implementieren, wo ich einen UISwitch benötige, der verwendet werden würde, um Benutzerbenachrichtigungen zu steuern. Wenn diese Option deaktiviert ist, möchte ich die Berechtigungen für Benachrichtigungen aufgeben. Wenn diese Option aktiviert ist, möchte ich Berechtigungen anfordern (im Standarddialog wird nach Benutzerberechtigungen gefragt, um ihre Benachrichtigungen zu senden).Wie aktivieren und deaktivieren Sie Benachrichtigungen in iOS?

um Erlaubnis zu fragen, fand ich folgenden Code:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (granted, error) in 
    // Enable or disable features based on authorization. 
} 

Allerdings, wenn ich die Benachrichtigungen für die App in den Systemeinstellungen zu deaktivieren, dieser Code nicht einen Dialog mit einer Anfrage Pop-up ist, und es nur gibt einfach false in granted zurück.

Ich konnte nichts finden, wie man auf Berechtigungen verzichtet.

Irgendein Tipp, wie man das Problem löst? Ist es überhaupt möglich, oder geht Apple davon aus, dass diese Aufgabe nur den Systemeinstellungen überlassen werden sollte?

+1

Systemeinstellungen nur . Aus dem einfachen Grund, dass der Benutzer bei jedem App-Start nicht mit "Push-Benachrichtigungsanfragen" bombardiert wird. Sobald Sie die Erlaubnis erhalten, eine Benachrichtigung zu senden, müssen Sie selbst entscheiden, ob Sie dem Benutzer eine aktuelle Benachrichtigung senden möchten oder ob Sie Themen hinzufügen möchten, die der Benutzer aktivieren/deaktivieren kann. – luk2302

+0

also gibt es keine Möglichkeit, Berechtigungen programmatisch aufzugeben? –

+0

Warum möchten Sie das tun? Ich bin mir nicht bewusst, einen Weg, das ist kein Anwendungsfall, der Sinn macht – luk2302

Antwort

1

In iOS Ein-/Erlaubnis Push-Benachrichtigung aus erscheint nur einmal. Also, um das zu erreichen, müssen Sie einige zwicken wie Sie können überprüfen Sie zuerst, ob Ihre Benachrichtigung aktiviert ist oder nicht.

func pushEnabledAtOSLevel() -> Bool { 
guard let currentSettings = UIApplication.shared.currentUserNotificationSettings?.types else { return false } 
return currentSettings.rawValue != 0 
} 

Danach können Sie Ihr fertigen Popup mit TurnOn/Aus-Taste und navigieren Sie zu Systemeinstellung Seite erstellen können, wo Benutzer diese Option aktivieren können entsprechend

if let appSettings = NSURL(string: UIApplicationOpenSettingsURLString) { 
    UIApplication.shared.openURL(appSettings as URL) 
} 
Verwandte Themen