web-dev-qa-db-fra.com

Activer ou désactiver les notifications push Iphone dans l'application

J'ai une application iphone qui permet de recevoir des notifications Push. Actuellement, je peux désactiver les notifications push pour mon application en accédant aux paramètres/notifications de l'iphone.

Mais je veux ajouter un interrupteur ou un bouton dans mon application pour activer ou désactiver les notifications Push.

Cela peut être fait parce que je l'ai vu dans l'application iphone à quatre quarts. Ils ont obtenu une section dans les paramètres des paramètres de notification d'appel et l'utilisateur peut activer ou désactiver différents types de notification pour l'application.

Je regarde partout sur le net pour trouver une solution appropriée à cela, mais je n'ai toujours pas trouvé de moyen. Quelqu'un peut-il donner une idée de comment procéder?

Merci d'avance :)

26

La première chose est que vous can not enable and disablePush notification dans l'application. Si vous avez trouvé des applications qui l'ont fait, il doit y avoir une solution de contournement.

Comme si vous voulez faire à l'intérieur de l'application, utilisez un identifiant et envoyez-le au serveur en fonction du bouton d'activation et de désactivation de la notification push. Ainsi, le codage côté serveur utilise cet identifiant et fonctionne en conséquence. Comme l'identifiant est dire qu'il est activé, votre serveur enverra une notification sinon.

Vous pouvez vérifier que l'utilisateur a défini enable ou disablePush Notifications en utilisant le code suivant.

Activer ou désactiver les notifications push Iphone

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

J'espère que ceci vous aidera..

20
Nit

[FYI - Peu d'utilisateurs ont signalé qu'il a cessé de fonctionner sur iOS 1]

Vous pouvez facilement activer et désactiver les notifications Push dans votre application en appelant à nouveau registerForRemoteNotificationTypes et unregisterForRemoteNotificationTypes respectivement. J'ai essayé ça et ça marche.

32
Varun Bhatia

De manière pragmatique, il est possible d'activer et de désactiver la notification Push en enregistrant et en désinscrivant la notification Push.

Activer la notification push:

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()
}

méthodes déléguées

@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
}

Désactiver la notification push:

UIApplication.shared.unregisterForRemoteNotifications()
2
Krunal

si vous utilisez FireBase pour envoyer des notifications Push à vos appareils, vous pouvez utiliser l'abonnement aux rubriques pour activer la notification Push sur les appareils abonnés et désinscrire les utilisateurs de la rubrique lorsque vous ne souhaitez pas que l'utilisateur reçoive une notification Push dans ces les appareils qui ont été désabonnés.

pour abonner un utilisateur à un sujet, importez simplement Firebase, puis utilisez cette méthode:

Messaging.messaging().subscribe(toTopic: "topicName")

et pour désinscrire une utilisation utilisateur:

Messaging.messaging().unsubscribe(fromTopic: "topicName")
0
Dyary