Ciao a tutti cari amici di iProg, oggi voglio mostrarvi come gestire le notifiche locali in iOS 10, ma cosa sono le notifiche locali? le notifiche locali sono un modo per un’applicazione che non è in esecuzione di notificare all’utente un determinato evento. In iOS 10 Apple aggiunge nuove feature alle notifiche, ma le vedremo più avanti nel tutorial.
Quindi per prima cosa creiamo un nuovo progetto di tipo Single View Application.
Per quanto riguarda l’interfaccia dell’ app, basta aggiungere un semplice bottone e collegarlo al codice come action
[code lang=”swift”]
import UserNotifications
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//UNUserNotificationCenter gestisce le attività di "notifica"
//Per utilizzare le notifiche deve essere chiesto il permesso all’utente
//In pratica è quello che facciamo con il metodo requestAuthorization
UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) { (success, error) in
if success {
print("success")
} else {
print("error")
}
}
}
[/code]
A questo punto implementiamo il metodo per l’invio della notifica
[code lang=”swift”]
@IBAction func notifica(_ sender: AnyObject) {
// UNMutableNotificationContent contiene i dati relativi alla notifica
let content = UNMutableNotificationContent()
content.title = "iOS 10: Local Notification"
content.subtitle = "iProg.it"
content.body = "Ciao sono una notifica"
// Logo della notifica
let imageName = "iprog"
guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else { return }
//UNNotificationAttachment contiene il contenuto multimediale del notifica
let attachment = try! UNNotificationAttachment(identifier: imageName, url: imageURL, options: .none)
content.attachments = [attachment]
// una richiesta di notifica viene generato con un intervallo di 10 secondi
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
let request = UNNotificationRequest(identifier: "id.notifica.01", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
[/code]