ios - como - no me llegan las notificaciones de facebook a mi iphone
¿Cómo elimina Facebook Messenger las notificaciones push de la pantalla de bloqueo si las ha leído en el escritorio? (4)
Advertencia: ¡No lo he intentado, es solo una idea!
En iOS 7 puedes intentar enviar una notificación silenciosa de ''contenido disponible'' al usuario. Esto activaría la aplicación en segundo plano y le permitirá ejecutar algún código. En el fondo, entonces podrías hacer
[[UIApplication sharedApplication] setApplicationBadgeNumber:0];
[[UIApplication sharedApplication] setApplicationBadgeNumber:newBadgeNumber];
esto debería borrar cualquier notificación que esté en el centro de notificaciones. A continuación, podría publicar una notificación local con los datos que ingresaron en su diccionario userInfo, ¡y parecería que los anteriores fueron reemplazados por los nuevos!
De nuevo, solo una idea ...
Cuando recibo un mensaje en Facebook recibo una notificación de inserción en una pantalla de bloqueo (iOS). Luego leo este mensaje en el escritorio. Inmediatamente después de que esta notificación de inserción desaparezca sin ninguna interacción con el teléfono. ¿Cómo puedo implementar lo mismo para eliminar las notificaciones obsoletas?
El segundo uso podría ser unir notificaciones juntas. Por ejemplo, Instagram te envía un empujón cuando a alguien le gusta tu foto. Después de 20 Me gusta, la pantalla de notificaciones se arruina y no se puede leer. Pero usando el mismo principio que Facebook parece que es posible eliminar notificaciones previas del mismo tipo y crear nuevas con el contador incrementado. No "Al usuario A le gustó la foto X, al usuario B le gustó la foto Y, etc.", sino "a los 20 usuarios les gustó la foto Z".
He visto un par de pistas sobre temas similares aquí, pero todavía no hay respuesta hasta el momento. ¡Gracias!
Esta es una nueva característica de iOS 7 llamada Silent Push Notification, es una función multitarea.
Que necesitarás:
1 - Registrarse para notificaciones remotas en didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeNewsstandContentAvailability|
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)];
}
2 - Implementar el siguiente método en ApplicationDelegate:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
handler(UIBackgroundFetchResultNewData);
// Possibl Results:
// typedef enum {
// UIBackgroundFetchResultNewData, //Download success with new data
// UIBackgroundFetchResultNoData, //No data to download
// UIBackgroundFetchResultFailed //Downlod Failed
// } UIBackgroundFetchResult;
}
3 - Configure UIBackgroundModes dentro de Application info.plist:
> <key>UIBackgroundModes</key> <array>
> <string>remote-notification</string> </array>
Una forma simple de lograr este efecto es enviar una notificación de inserción normal a su dispositivo con una carga útil que solo contenga un recuento de insignia de 0.
En el ejemplo de Facebook, claramente tienen suficiente poder de servidor para detectar simplemente cuando ha leído el mensaje en su escritorio y envía un push a sus dispositivos para asegurarse de que la notificación ya no esté allí.
No digo que FB lo haga así, pero es un camino más simple que puede o no ajustarse a tus necesidades. Tenga en cuenta que la tarea de fondo consume la batería de su usuario significativamente y debe evitarse cuando sea posible.
Consulte las Mejoras de tareas múltiples y las notificaciones automáticas silenciosas en particular. Con la inserción silenciosa puede notificar a su aplicación que hay nuevo contenido disponible y también descargar ese contenido y / o establecer el número de la insignia, por ejemplo, sin mostrar la notificación en el "Centro de notificaciones". Deberá configurar UIBackgroundModes con el valor de notificaciones remotas para que esto funcione.
Puede enviar un impulso silencioso si el usuario ha visto el contenido en otra plataforma y borrar el número de la insignia en su aplicación iOS.