¿Alguien puede dar un ejemplo de enviar una notificación de prueba desde una aplicación Cocoa al Centro de notificaciones? p.ej. cuando hago clic en NSButton
Enviar notificación al centro de notificación Mountain lion
Respuesta
Las notificaciones en Mountain Lion se manejan en dos clases. NSUserNotification
y NSUserNotificationCenter
. NSUserNotification
es su notificación actual, tiene un título, un mensaje, etc. que se puede establecer a través de propiedades. Para entregar una notificación que ha creado, puede usar el método deliverNotification:
disponible en NSUserNotificationCenter. Los documentos de Apple han detallado información sobre NSUserNotification & NSUserNotificationCenter pero el código básico para publicar una notificación se parece a esto:
- (IBAction)showNotification:(id)sender{
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = @"A notification";
notification.soundName = NSUserNotificationDefaultSoundName;
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
}
Eso va a producir una notificación con un título, un mensaje y que va a reproducir el sonido por defecto cuando se muestra. Hay mucho más que puede hacer con las notificaciones que solo esto (como las notificaciones de programación) y eso se detalla en la documentación a la que me he vinculado.
Un pequeño punto, las notificaciones solo se mostrarán cuando su aplicación sea la clave. Si desea que sus notificaciones se muestren independientemente de si su aplicación es clave o no, deberá especificar un delegado para NSUserNotificationCenter
y anular el método delegado userNotificationCenter:shouldPresentNotification:
para que devuelva SÍ. Puede encontrar la documentación para NSUserNotificationCenterDelegate
here
Aquí hay un ejemplo de cómo proporcionar un delegado a NSUserNotificationCenter y luego forzar que las notificaciones se muestren independientemente de si su aplicación es clave. En el archivo AppDelegate.m de su aplicación, editarlo como esto:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{
return YES;
}
Y en AppDelegate.h, declaran que la clase cumpla con el protocolo NSUserNotificationCenterDelegate:
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
- 1. Utilidad de línea de comandos para enviar notificaciones al Centro de notificaciones en Mountain Lion
- 2. Hola código mundial para Mountain Lion OSX 10.8 mostrando una notificación como iChat
- 3. Enviar notificación al explorador del cliente
- 4. detectar la configuración del centro de notificación
- 5. NSUserNotificationCenter descartar la notificación
- 6. Error al instalar Pygame en Mountain Lion
- 7. Enviar notificación por correo electrónico de Jenkins
- 8. Recuperar datos de notificación de notificación
- 9. Categorías condicionales en Mountain Lion
- 10. API de notificación para Windows
- 11. Eliminar una notificación del centro de notificaciones al hacer clic en
- 12. Enviar notificación de inserción de fichas para muchos dispositivos
- 13. OS X Mountain Lion: ¿cómo funciona path_helper?
- 14. Deseo enviar una notificación DESDE mi iPhone a otro iPhone
- 15. enviar una notificación desde javascript en UIWebView a ObjectiveC
- 16. Mountain Lion Postgres no pudo conectarse
- 17. Android - Mantener la notificación estable en la barra de notificación
- 18. Enviar notificación a Jenkins solo cuando falle la nueva prueba
- 19. Vista de notificación personalizada
- 20. Android Icono de notificación
- 21. Técnica de notificación ligera
- 22. Slim Framework .htaccess/mountain lion osx
- 23. Notificación usando python
- 24. NSSavePanel runModal se cuelga bajo Mountain lion
- 25. Phonegap, Cordova, xCode 4.4 y Mountain Lion
- 26. Mountain Lion php pera y pecl
- 27. Cómo instalar MySQLdb en Mountain Lion
- 28. SSHFS para OSX 10.8 (Mountain Lion)
- 29. Mountain Lion actualización y bibliotecas mercurial python
- 30. Enviar una notificación desde un servicio en Android
¿Puede elaborar sobre cómo anular userNotificationCenter ? (lo siento, soy realmente nuevo en esto :)) – haseo98
@ haseo98 Sí, acabo de agregar un ejemplo a mi respuesta. – alexjohnj
Estoy obteniendo un error al lado de la aplicación applicationididishlaunching sección del método, Enviar 'AppDelegate * const __strong' al parámetro de tipo incompatible 'id'. ¿Algunas ideas? –
haseo98