22

Ho un'app per iphone che è abilitata a ricevere notifiche push. Attualmente posso disabilitare le notifiche push per la mia app andando alle impostazioni iphone/Notifiche.Abilita o disabilita le notifiche push Iphone all'interno dell'app

Ma voglio aggiungere un interruttore o un pulsante all'interno della mia app per abilitare o disabilitare le notifiche push.

Si può fare perché l'ho visto nell'app per iPhone foursqure lo ha fatto. Hanno una sezione nelle impostazioni delle impostazioni di notifica delle chiamate e l'utente può abilitare o disabilitare diversi tipi di notifiche per l'app.

Guardo dappertutto la rete per trovare una soluzione adeguata ma non ancora trovata. Qualcuno può dare qualche idea su come farlo?

Grazie in anticipo :)

+0

È questo allo sposati da Apple? – Anil

+0

@Anché anch'io sto cercando lo stesso, ma non ho ancora avuto una risposta chiara su questo. –

risposta

19

prima cosa è che si can not enable and disablepush notification nella all'interno della app. Se hai trovato alcune app che l'hanno fatto, deve esserci una soluzione alternativa.

Come se si volesse fare all'interno dell'app, quindi utilizzare un identificativo e inviarlo al server in base al pulsante di abilitazione e disabilitazione della notifica push. Quindi, la codifica sul lato server utilizza questo identificativo e funziona in base a ciò. Come l'identificatore è dire che è abilitato di quanto il tuo server invierà notifiche altrimenti no.

È possibile controllare l'utente impostato enable o disablePush Notifications utilizzando il seguente codice.

abilitare o disabilitare Iphone Notifiche Push

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

Speranza, questo vi aiuterà a ..

+0

Yup ha avuto l'idea ... :) grazie .. abbiamo appena trovato una soluzione con la tua idea, per inviare alcuni valori al server e memorizzarli in base al token del dispositivo. Devo aggiungere alcune colonne al database, ma funzionerà ..grazie ancora :) –

+2

Come si afferma nella risposta seguente, la chiamata di unregisterForRemoteNotificationTypes interromperà la consegna delle notifiche push: l'ho verificato sulla mia app al logout utente e funziona. –

30

[CRONACA - Pochi utenti hanno segnalato che ha smesso di funzionare su iOS 10]

È possibile abilitare e disabilitare facilmente le notifiche push nell'applicazione chiamando di nuovo registerForRemoteNotificationTypes e unregisterForRemoteNotificationTypes rispettivamente. Ho provato questo e funziona.

+0

È consentito da Apple? – Anil

+0

sì! perfettamente permesso! –

+0

Questo è comunque soggetto alle impostazioni del Centro di notifica, giusto? – nmr

1

Pragmaticamente, è possibile abilitare la notifica push di & disabilitando la notifica push e annullando la registrazione.

Enable Push Notification:

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

metodi delegato

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

Disabilita Push Notification:

UIApplication.shared.unregisterForRemoteNotifications() 
+0

, quindi intendi dire che hai un pulsante Abilita/Disabilita nelle impostazioni dell'app e abiliti e disabiliti le notifiche utilizzando questo codice, destra ? Funziona ? Apple approva questo? –