Solución:
Rápido 2:
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.sharedApplication().registerForRemoteNotifications()
Si bien la respuesta se da bien para manejar las notificaciones automáticas, todavía creo que compartir el caso completo integrado de una vez para facilitar:
Para registrar la aplicación para APNS, (incluya el siguiente código en el método didFinishLaunchingWithOptions dentro de AppDelegate.swift)
IOS 9
var settings : UIUserNotificationSettings = UIUserNotificationSettings(forTypes:UIUserNotificationType.Alert|UIUserNotificationType.Sound, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.sharedApplication().registerForRemoteNotifications()
Después de IOS 10
Marco de UserNotifications introducido:
Importe el marco de UserNotifications y agregue UNUserNotificationCenterDelegate en AppDelegate.swift
Para registrar la solicitud de APNS
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
// If granted comes true you can enabled features based on authorization.
guard granted else { return }
application.registerForRemoteNotifications()
}
Esto llamará al siguiente método delegado
func application(application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
//send this device token to server
}
//Called if unable to register for APNS.
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
println(error)
}
Al recibir la notificación, el siguiente delegado llamará:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
println("Recived: (userInfo)")
//Parsing userinfo:
var temp : NSDictionary = userInfo
if let info = userInfo["aps"] as? Dictionary<String, AnyObject>
{
var alertMsg = info["alert"] as! String
var alert: UIAlertView!
alert = UIAlertView(title: "", message: alertMsg, delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
Para identificar el permiso otorgado podemos usar:
UNUserNotificationCenter.current().getNotificationSettings(){ (setttings) in
switch setttings.soundSetting{
case .enabled:
print("enabled sound")
case .disabled:
print("not allowed notifications")
case .notSupported:
print("something went wrong here")
}
}
Entonces, la lista de verificación de APNS:
- Crear AppId permitido con notificación push
- Cree un certificado SSL con un certificado válido y una identificación de la aplicación
- Cree un perfil de aprovisionamiento con el mismo certificado y asegúrese de agregar un dispositivo en caso de sandboxing (aprovisionamiento de desarrollo)
Nota: Eso será bueno si crea un perfil de aprovisionamiento después del certificado SSL.
Con Código:
- Registrar aplicación para notificaciones push
- Manejar el método didRegisterForRemoteNotificationsWithDeviceToken
- Establecer objetivos> Capacidad> Modos en segundo plano> Notificación remota
- Manejar didReceiveRemoteNotification
Para registrarse para recibir notificaciones push a través del Servicio Push de Apple, debe llamar a un registerForRemoteNotifications()
método de UIApplication
.
Si el registro tiene éxito, la aplicación llama al objeto delegado de su aplicación. application:didRegisterForRemoteNotificationsWithDeviceToken:
y le pasa un token de dispositivo.
Debe pasar este token al servidor que usa para generar notificaciones push para el dispositivo. Si el registro falla, la aplicación llama al delegado de su aplicación. application:didFailToRegisterForRemoteNotificationsWithError:
método en su lugar.
Eche un vistazo a la Guía de programación de notificaciones push y locales.