Skip to content

Instantly share code, notes, and snippets.

@runys
Last active May 9, 2017 14:32
Show Gist options
  • Save runys/50cb0bdc194be20186882fa480dd00d4 to your computer and use it in GitHub Desktop.
Save runys/50cb0bdc194be20186882fa480dd00d4 to your computer and use it in GitHub Desktop.
Simple local notification in swift for iOS 10 with Swift 3
// Referencias
// - https://www.appcoda.com/ios10-user-notifications-guide/
// - http://useyourloaf.com/blog/local-notifications-with-ios-10/
// - https://makeapppie.com/2016/08/08/how-to-make-local-notifications-in-ios-10/
// - https://developer.apple.com/reference/usernotifications
//: Local notifications
// 1. Importe o framework UserNotifications
import UserNotifications
// 2: Solicitar autorização para enviar notificações
func registerForNotifications() {
// Defina o tipo de notificações que você quer permitir
let notificationTypes: UNAuthorizationOptions = [.sound, .alert, .badge]
// Utilizamos o notification center para solicitar autorização
let notificationCenter = UNUserNotificationCenter.current()
// Solicitamos autorização
notificationCenter.requestAuthorization(options: notificationTypes) {
(granted, error) in
if granted {
print("Autorização concedida :D")
} else {
print("Autorização negada :(")
}
}
}
// Agora que temos (ou não) autorização para notificar o usuário,
// vamos agendar umas notificações!
// 3. Método para agendar uma notificação apra daqui a 10 segundos
func scheduleNotificationTo10SecondsFromNow(repeating: Bool) {
// Defina o conteúdo da notificação
let content = UNMutableNotificationContent()
content.title = "Title"
content.subtitle = "Subtitle"
content.body = "Body body body body"
// Definimos o intervalo de tempo para disparar a ação
var timeInterval = 10.0
if repeating {
// Se a notificação for se repetir o mínimo é de 60 segundos
timeInterval = 60.0
}
// Defina o gatilho da notificação
// O gatilho pode ser de várias formas, uma delas é intervalo de tempo
let trigger = UNTimeIntervalNotificationTrigger(
timeInterval: timeInterval,
repeats: repeating
)
// Crie um request de notificação com
// - Identificação: identifica a notificação unicamente
// - Conteúdo: define o conteúdo da notificação
// - Gatilho: define quando a notificação será ativada
let request = UNNotificationRequest(
identifier: "10seconds.notification",
content: content,
trigger: trigger
)
// Pegue a instância unica do notification center no app
let notificationCenter = UNUserNotificationCenter.current()
// Aqui só removemos as notificações anteriores
notificationCenter.removeAllPendingNotificationRequests()
// Agora adicionamos nossa request de notificação no notification center
notificationCenter.add(request) { (error) in
if error != nil {
print("Erro ao agendar \(request.identifier): \(error)")
} else {
print("Notificação \(request.identifier) agendada.")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment