22

Ich habe eine iPhone-App, die aktiviert ist, um Push-Benachrichtigungen zu erhalten. Derzeit kann ich Push-Benachrichtigungen für meine App deaktivieren, indem ich auf die iPhone-Einstellungen/Benachrichtigungen gehe.Aktivieren oder Deaktivieren Iphone Push-Benachrichtigungen in der App

Aber ich möchte einen Schalter oder eine Schaltfläche in meiner App hinzufügen, um Push-Benachrichtigungen zu aktivieren oder zu deaktivieren.

Es kann getan werden, weil ich sah es in foursqure iphone app tat es. Sie haben einen Abschnitt in den Einstellungs-Benachrichtigungseinstellungen und der Benutzer kann verschiedene Arten von Benachrichtigungen für die App aktivieren oder deaktivieren.

Ich schaue im ganzen Netz, um eine richtige Lösung dafür zu finden, aber immer noch keinen Weg gefunden. Kann jemand bitte eine Idee geben, wie man das macht?

Vielen Dank im Voraus :)

+0

Ist das allo von Apple geheiratet? – Anil

+0

@Anil mich auch auf der Suche, aber immer noch keine klare Antwort zu diesem Thema. –

Antwort

19

Das erste, was ist, dass Sie can not enable and disablepush notification in innerhalb der App. Wenn Sie einige Apps gefunden haben, die es getan haben, dann muss es eine Problemumgehung geben.

Wenn Sie möchten, Inside der App dann verwenden Sie einen Bezeichner und senden Sie es an den Server nach Push-Benachrichtigung aktivieren und deaktivieren Sie die Schaltfläche. Ihre serverseitige Codierung verwendet diese Kennung und arbeitet entsprechend. Wie Identifier ist sagen, es ist aktiviert, als Ihr Server Benachrichtigung sonst nicht senden wird.

Sie können überprüfen, ob der Benutzer enable oder disablePush Notifications mit dem folgenden Code einstellt.

Aktivieren oder Deaktivieren Iphone Push-Benachrichtigungen

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
if (types == UIRemoteNotificationTypeNone) 
// Yes it is.. 

Hoffnung, dies wird Ihnen helfen ..

+0

Yup hat die Idee ... :) danke .. wir haben gerade eine Lösung mit Ihrer Idee gefunden, einige Werte an den Server zu senden und sie entsprechend dem Geräte-Token zu speichern. Müssen einige Spalten zur Datenbank hinzufügen, aber es wird funktionieren ..Danke nochmal :) –

+2

Wie die Antwort unten besagt, wird das Aufrufen von unregisterForRemoteNotificationTypes die Zustellung von Push-Benachrichtigungen stoppen - ich habe dies in meiner App beim Abmelden von Benutzern getestet und es funktioniert. –

30

[FYI - Nur wenige Anwender haben berichtet, dass es funktioniert auf iOS 10 gestoppt]

Sie können problemlos Push-Benachrichtigungen in Ihrer Anwendung aktivieren und deaktivieren, indem Sie erneut registerForRemoteNotificationTypes bzw. unregisterForRemoteNotificationTypes aufrufen. Ich habe das versucht und es funktioniert.

+0

Ist das von Apple erlaubt? – Anil

+0

ja! perfekt erlaubt! –

+0

Dies unterliegt immer noch den Einstellungen des Benachrichtigungscenters, richtig? – nmr

1

Pragmatisch ist es möglich zu aktivieren & deaktivieren Push-Benachrichtigung durch Registrierung und Aufhebung der Registrierung Push-Benachrichtigung.

aktivieren Push-Benachrichtigung:

if #available(iOS 10.0, *) { 
    // For iOS 10.0 + 
    let center = UNUserNotificationCenter.current() 
    center.delegate = self 
    center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in 
     if error == nil{ 
      DispatchQueue.main.async(execute: { 
       UIApplication.shared.registerForRemoteNotifications() 
      }) 
     } 
    } 
}else{ 
    // Below iOS 10.0 

    let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil) 
    UIApplication.shared.registerUserNotificationSettings(settings) 

    //or 
    //UIApplication.shared.registerForRemoteNotifications() 
} 

Delegatmethoden

@available(iOS 10.0, *) 
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

} 

@available(iOS 10.0, *) 
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 

} 


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    // .. Receipt of device token 
} 


func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { 
    // handle error 
} 

Disable Push Notification:

UIApplication.shared.unregisterForRemoteNotifications() 
+0

. Sie möchten also sagen, dass Sie in Ihren App-Einstellungen eine Schaltfläche zum Aktivieren/Deaktivieren haben und Benachrichtigungen mit diesem Code aktivieren und deaktivieren. Recht ? funktioniert es ? Akzeptiert Apple das? –

Verwandte Themen