J'ai encore un doute sur APNS
. C'est lors du premier lancement de l'application qu'elle demande l'autorisation de notification Apple Push si l'utilisateur a accepté de recevoir les notifications. Si l'utilisateur a annulé, il ne peut recevoir aucune notification. Suis-je clair??
Maintenant, je doute,
À la première occasion, si l'utilisateur annulait à nouveau le service de notification Push de l'application (bouton Clic Cancel
) après quelques jours, s'il souhaitait recevoir la notification Apple Push, il était possible d'activer à nouveau la notification Apple Push pour cet utilisateur.
Et si l'utilisateur accepte le service de notification Apple Push en premier et après quelques jours s'il ne veut pas recevoir les notifications, il est possible de désactiver la APNS
dans notre application? J'espère que tu comprends mon doute. Quelqu'un peut-il s'il vous plaît clarifier ce doute?
Il est possible de faire ces scénarios ci-dessus dans notre application iPhone?
Aidez-moi, s'il vous plaît. Merci d'avance.
Malheureusement, vous ne pouvez pas activer ou désactiver les notifications push pour votre application à partir du code de l'application. La boîte de dialogue demandant une autorisation ne s'affiche qu'une fois. Généralement, d’autres applications affichent des instructions à l’utilisateur pour activer/désactiver les notifications Push en allant dans Paramètres-> Notification-> NomApp.
Vous pouvez lire les autorisations de votre application en utilisant UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
, puis en effectuant une opération au niveau des bits et avec les différents types pour voir lesquels sont activés. Vous pouvez également appeler unregisterForRemoteNotifications
pour désactiver les notifications. La seule chose que vous ne pouvez pas faire est d'activer les notifications, bien que vous puissiez diriger l'utilisateur.
Mon exigence était d'activer et de désactiver la pushnotificaton avec une UISwitch
. Afin de activer la notification Push à partir du code utiliser ceci à l'intérieur de l'action du bouton.
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
Afin de désactiver
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
Lorsque vous donnez l'autorisation pour la première fois, le jeton de périphérique de votre iPhone est enregistré sur le serveur APN et vous pouvez alors recevoir la notification Push. Plus tard, vous pourrez activer/désactiver les paramètres de votre appareil → notification → votre application.
1.Depuis votre application, non, cela n'apparaît que la première fois que l'utilisateur ouvre votre application après l'avoir installée .. s'il décide de l'autoriser, il peut être activé à partir des paramètres de l'appareil.
2.il peut être fait à partir de l'application et des paramètres .. si vous voulez le désactiver à partir de votre application, vous pouvez envoyer le jeton de périphérique (qui décide de désactiver la notification Push) sur votre serveur et le stocker, par exemple. comme "pas de liste de notification" et lorsque vous envoyez le contenu, vous ignorez ces jetons afin qu'ils ne reçoivent pas la notification.
3.J'y réponds déjà.
Bonne chance.
De manière pragmatique, il est possible d'activer et de désactiver la notification Push en enregistrant et en désenregistrant 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()
Vous pouvez utiliser ce code pour fournir un support dans iOS 9
if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
if (types == UIUserNotificationTypeNone) {
// Do something
NSLog(@"");
}
} else {
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) {
// Do something
NSLog(@"");
}
}