update reconoce que por para necesario instale instalado este esta esperando descargar controlador apple iphone objective-c uiviewcontroller uinavigationcontroller push-notification

iphone - reconoce - ¿Cómo presionar el nuevo controlador de vista en didReceiveRemoteNotification para que el controlador de vista anterior no se muestre por un momento?



itunes esta esperando a que windows update instale el controlador para este iphone (4)

Recibo una notificación de pust y presiono un controlador de vista en función de los datos que obtengo en push. Lo hago así:

UINavigationController *navVc=(UINavigationController *) self.window.rootViewController; PictureTakeVC *pvc=[[PictureTakeVC alloc] init]; [navVc pushViewController:pvc animated:NO];

Funciona, pero el controlador de vista que se abrió antes de presionar el botón de inicio se muestra por un momento.

También probé esto, pero sucede lo mismo:

PictureTakeVC *pvc=[[PictureTakeVC alloc] init]; NSArray *vcs=[[NSArray alloc] initWithObjects: pvc, nil]; UINavigationController *navVc=(UINavigationController *) self.window.rootViewController; navVc.viewControllers=vcs; self.window.rootViewController = navVc;

¿Cómo presionar vc didReceiveRemoteNotification para que se abra inmediatamente y no se muestre ninguna otra vc por un momento?


Antes de que su aplicación entre en modo de fondo, elimine la vista que está allí.


Como PictureTakeVC es un controlador de vista, solo use esto en su lugar

PictureTakeVC *pvc = [[PictureTakeVC alloc] initWithNibName:@"PictureTakeVC" bundle:nil]; [self.navigationController pushViewController:pvc animated:YES];


¿Te estás perdiendo algo? The didReceiveRemoteNotification se activa cuando su aplicación está activa y ejecutándose.

... pero de todos modos si quiere lograr lo que está pidiendo, tiene que detectar que hay una actualización de didFinishLaunchingWithOptions (o puede ser de applicationDidBecomeActive o applicationWillEnterForeground ) y empujar viewcontroller en rootviewcontroller desde uno de estos métodos.

Para detectar si hubo notificación remota:

NSString *params = [[launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"] objectForKey:@"View"]; if (params) { // push view }

Use los siguientes métodos para presionar ver, no verá ningún otro vc cuando la aplicación se active. Avíseme si hay algún problema.

- (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { }

He hecho algo similar para la notificación automática, así que avíseme qué intenta lograr exactamente si entendí mal.


Como dijiste "pero el controlador de vista que se abrió antes de presionar el botón de inicio aparece por un momento".

La razón no es el código, sino el sistema iOS. Captura captura de pantalla de la pantalla cuando la aplicación entra en segundo plano. Como documentado :

Elimine la información confidencial de las vistas antes de pasar al fondo . Cuando una aplicación pasa a segundo plano, el sistema toma una instantánea de la ventana principal de la aplicación, que luego presenta brevemente al hacer la transición de su aplicación al primer plano. Antes de regresar de su aplicaciónDidEnterBackground: método, debe ocultar u ocultar las contraseñas y otra información personal confidencial que pueda capturarse como parte de la instantánea.

Por lo tanto, si se elimina la instantánea, mostrará directamente el nuevo controlador de vista presionado. (no estoy seguro acerca de la guía de apple para la instantánea)

Actualizar:

Un enfoque puede ser: agregue un fondo de color negro en la pantalla de la aplicación cuando esté en segundo plano (en el método applicationDidEnterBackground ). Por lo tanto, se mostrará una pantalla en negro al volver a la aplicación. {Lo almacenan para mostrar la imagen de inicio de la aplicación ya iniciada.}

¿Dónde ayuda?

Cuando eliminamos instantáneas del directorio ''Preferencia'' de la zona de pruebas de la aplicación (después de que la aplicación se pone en segundo plano) y volvemos a la aplicación, se muestra negra por un tiempo ya que no tiene ninguna instantánea.

El resultado de nuestro enfoque y eliminación de instantáneas son los mismos.