Mi aplicación tiene 5 barras de pestañas y cada vez que recibo una notificación de inserción, me gustaría que la aplicación navegue a la tercera pestaña en el índice. Puedo lograrlo cuando la aplicación está en primer plano o en segundo plano (en estado activo). si la aplicación está cerrada e intento abrir la notificación de inserción, la aplicación se abre y se bloquea. A continuación se muestra el código que tengo

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
    let tabbar:UITabBarController = self.window?.rootViewController as! UITabBarController
    tabbar.selectedIndex = 3
}

Por favor, hágame saber qué estoy haciendo mal.

0
Kanan Jarrus 1 ago. 2016 a las 18:16

2 respuestas

La mejor respuesta

Intente agregar el siguiente código al final del método diFinishLaunchingWithOptions:

 if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] {
            _ = notification["aps"] as! [String : AnyObject]

            (window?.rootViewController as! UITabBarController).selectedIndex = 3
        }
1
Prerak Sola 1 ago. 2016 a las 15:31

¿Estás depurando tu código? Si la aplicación falla allí, es muy posible que window.rootViewController no sea un UITabBarController.

¡Puede depurar eso o cambiar el as! en como? Y:

tabbar?.selectedIndex = 3

Si la aplicación no se bloquea, el controlador de la barra de pestañas está en otro lugar. Encuéntrelo.

También recuerde verificar su notificación en el diccionario de opciones.

1
Alessandro Ranaldi 1 ago. 2016 a las 15:42