2017-07-28 6 views
0

J'essaie de mettre en place un écran de paramètres dans une application iOS 11, où j'ai besoin d'un UISwitch qui serait utilisé pour contrôler les notifications des utilisateurs. Lorsque cette option est désactivée, je souhaite abandonner les autorisations pour les notifications. Lorsque cette option est activée, je souhaite demander des autorisations (boîte de dialogue standard demandant l'autorisation de l'utilisateur pour envoyer ses notifications).Comment activer et désactiver les notifications dans iOS?

Pour demander la permission, je trouve le code suivant:

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

Cependant, si je désactiver les notifications pour l'application dans les paramètres système, ce code ne déclenche pas une boîte de dialogue avec une demande, et juste renvoie simplement false dans granted.

Je n'ai pas été capable de trouver quoi que ce soit sur la façon d'abandonner les permissions.

Un indice sur la façon de résoudre le problème? Est-ce même possible, ou est-ce que Apple suppose que cette tâche devrait être laissée uniquement aux paramètres du système?

+1

paramètres système uniquement . Pour la simple raison que l'utilisateur ne sera pas bombardé de "demandes de notification push" à chaque lancement de l'application. Dès que vous avez l'autorisation d'envoyer une notification, vous devez décider vous-même si vous voulez ou non envoyer une notification à l'utilisateur, peut-être ajouter des sujets que l'utilisateur peut activer/désactiver. – luk2302

+0

donc il n'y a aucun moyen d'abandonner par programme les autorisations? –

+0

pourquoi voudriez-vous faire cela? Je ne suis pas au courant d'un moyen, ce n'est pas un cas d'utilisation qui a du sens – luk2302

Répondre

1

Sous iOS Activer/Désactiver la notification d'autorisation d'accès apparaît une seule fois. Donc, pour y parvenir, vous devez faire quelques réglages comme vous pouvez vérifier d'abord si votre notification est activée ou non.

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

Après cela, vous pouvez créer votre popup personnaliser avec le bouton TurnON/Off et accédez à la page de configuration système où l'utilisateur peut activer cette option en conséquence

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