Reciba notificaciones push mientras la aplicación está en primer plano iOS
Estoy usando el servicio de notificaciones push en mi aplicación. Cuando la aplicación está en segundo plano, puedo ver la notificación en la pantalla de notificación (la pantalla se muestra cuando deslizamos el dedo hacia abajo desde la parte superior del dispositivo iOS). Pero si la aplicación está en primer plano, el método delegado
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
Está recibiendo una llamada pero la notificación no se muestra en la pantalla de notificación.
Quiero mostrar notificaciones en la pantalla de notificaciones independientemente de si la aplicación está en segundo plano o en primer plano. Estoy cansado de buscar una solución. Cualquier ayuda es muy apreciada.
Para mostrar un mensaje de banner mientras la aplicación está en primer plano, utilice el siguiente método.
iOS 10, Rápido 3/4 :
// This method will be called when app received push notifications in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
completionHandler([.alert, .badge, .sound])
}
iOS 10, rápido 2.3 :
@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
//Handle the notification
completionHandler(
[UNNotificationPresentationOptions.Alert,
UNNotificationPresentationOptions.Sound,
UNNotificationPresentationOptions.Badge])
}
También debes registrar el delegado de tu aplicación como delegado del centro de notificaciones:
import UserNotifications
// snip!
class AppDelegate : UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate
// snip!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// set the delegate in didFinishLaunchingWithOptions
UNUserNotificationCenter.current().delegate = self
...
}
El siguiente código funcionará para usted:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
application.applicationIconBadgeNumber = 0;
//self.textView.text = [userInfo description];
// We can determine whether an application is launched as a result of the user tapping the action
// button or whether the notification was delivered to the already-running application by examining
// the application state.
if (application.applicationState == UIApplicationStateActive) {
// Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}