Last active
May 9, 2017 14:32
-
-
Save runys/50cb0bdc194be20186882fa480dd00d4 to your computer and use it in GitHub Desktop.
Simple local notification in swift for iOS 10 with Swift 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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