He configurado notificaciones locales en el delegado de la aplicación usando esto:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
Cuando ejecuto la aplicación y luego la salgo, recibo un error que dice:
2014-06-07 11: 14: 16.663 CCA-TV [735: 149070] Intentando programar una notificación local {fecha de incendio = sábado, 7 de junio de 2014 a las 11:14:21 hora de verano del Pacífico, zona horaria = América / Los_Angeles (PDT) offset -25200 (luz del día), intervalo de repetición = 0, recuento de repetición = UILocalNotificationInfiniteRepeatCount, próxima fecha de incendio = sábado, 7 de junio de 2014 a las 11:14:21 hora de verano del Pacífico, información del usuario = (nulo)} con una alerta pero no he recibido permiso del usuario para mostrar alertas
¿Cómo puedo obtener el permiso necesario para mostrar las alertas?
fuente
registerUserNotificationSettings
. Si hubiera sido iOS 8, este hilo habría respondido a su pregunta. Pero, adelante, echa un vistazo - stackoverflow.com/questions/24006998/…Respuestas:
Dado que iOS 8 debe pedir permiso al usuario para mostrar notificaciones de su aplicación, esto se aplica tanto para notificaciones remotas / push como locales. En Swift puedes hacerlo así,
Actualización para Swift 2.0
Swift 3.2
La sintaxis de Objective C también es muy similar.
Para verificar los tipos de notificación registrados actualmente, puede usar el método de la clase UIApplication,
Entonces, si el usuario ha dicho que no a su aplicación, esta función debería devolver una configuración sin ningún tipo en ella.
He escrito un tutorial sobre esto, puedes verlo aquí .
fuente
dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings
. ¿Hay alguna otra forma en Swift de solicitar permisos al usuario para trabajar en iOS7? por favor ayuda.Coloque este código en el controlador de vista donde primero programará las notificaciones (si las programa en el lanzamiento, entonces será
application:didFinishLaunchingWithOptions:
):En Swift:
Las soluciones que se prueban con el número de versión del sistema son subóptimas y propensas a errores.
fuente
application.respondsToSelector(Selector("registerUserNotificationSettings"))
yif ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
application:didFinishLaunchingWithOptions:
que proporciona unapplication
objeto útil :)Pruebe esto para Objective-C:
Para Swift:
fuente
Simplemente enfrenté el mismo problema. Parece que en iOS 8 necesitamos hacer un paso adicional, generalmente se hace en el interior:
Puede usar este código si desea mantenerlo compatible con versiones anteriores:
El sistema recordará la decisión y solo preguntará una vez.
fuente
** Notificación local con acción de tres botones para iOS8 +
// Botón: LO TOMÉ, RECUERDA MÁS TARDE, SALTÉLO **
fuente