en busca de asesoramiento sobre las Mejores prácticas relacionadas con la gestión de iBeacon localnotifications

StackOverflow https://stackoverflow.com//questions/22073149

Pregunta

Tengo un guión gráfico de la aplicación de cargas de (~45) uiviewControllers.Si en el fondo o de primer plano, cuando un faro desencadena una uilocalnotification y el usuario acepta, quiero "push/segue" a la UIViewController asociados con ese faro gatillo.Bastante Simple.Dependiendo de la baliza, tengo aprox 10 VCs que iba a pasar a.

La pregunta que tengo es este.El usuario puede, literalmente, estar sentado en cualquier uno de mis 45 UIViewCtrlers cuando la baliza activa la notificación para cada uno de mis UIViewControllers tiene que tener algo similar a la siguiente, (junto con el bloque de código para el selector), con el fin de actuar sobre la notificación y la inserción de pasar a otra viewcontroller.

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(showFoodMenuViewNow)
                                             name:@"showfoodmenu" object:nil];

Esto va a literalmente riddle mi guión con más inter-VC push/segue conexiones de las que usted puede sacudir un palillo en.Muy desordenado.Hay alguna manera de eliminar todos los visual storyboard desemboca o de alguna manera introducir un único vector 'viewcontroller' que todas las vistas de la aplicación.Que VC evaluaría la localnotification y empuje a la asociada a la VC.

¿Cuál es el recomendado como la mejor práctica para la gestión de este?

La esperanza es que estoy haciendo sentido.

ACTUALIZACIÓN:

He de rutas conmutadas ahora, al intentar acceder a la UINavigationController directamente desde mi appDelegate.Estoy usando el siguiente código para hacer eso y, a pesar de que mi nc no es nada, no es empujado...

¿Por qué este código no empuje el deseado viewcontroller?

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
nm_vcFoodMenu *fm = [sb instantiateViewControllerWithIdentifier:@"foodmenu"];
UINavigationController *nc = [sb instantiateViewControllerWithIdentifier:@"myNavController"];
if (nc == nil){
    NSLog(@"nc is nil");
} else {
    NSLog(@"nc is not nil so trying to push to foodmenu");
    [nc pushViewController:(nm_vcFoodMenu *)fm  animated:YES];
}

Esta es una representación de mi guión y las distintas partes móviles.Con la esperanza de que esto ayudará a que usted me ayude!enter image description here

Gracias.

¿Fue útil?

Solución

Yo no pretendo tener una buena solución para esto, pero a continuación es lo que tengo que hacer para lo que vale.También me gustaría saber si alguien tiene una solución mejor.

  1. Me administrar iBeacon transiciones a través de programación en mi AppDelegate sin ningún tipo de instalación en el guión gráfico.

  2. Puedo tener especial cuidado de que dos iBeacons no causan dos transiciones muy de cerca en el tiempo entre ellas (un mínimo de un par de segundos debe haber pasado desde la última transición, de lo contrario, el retraso de la transición con un temporizador o suprimirlo.)

  3. La gestión de la pila en el controlador de navegación es un verdadero dolor de cabeza.Sólo en casos específicos en los que sé que quiero que el usuario sea capaz de ir de nuevo hago una [navigationController pushViewController:newViewController animated:YES].Y en algunos casos terminan suprimiendo el botón atrás en mi ViewControllers con [self.navigationController setNavigationBarHidden:YES animated:YES];

Ciertamente, todo esto es muy complicado.Pero dada la naturaleza dinámica de cómo iBeacon basado en las transiciones pueden ocurrir, creo que es a menudo difícil de establecer todas las combinaciones antes de tiempo.

Otros consejos

En nuestro proyecto, creamos Singleton dedicado que juega como delegado de IBEACON, y presentamos nuestra interfaz de notificación en el controlador de vista superior, por lo que toda la lógica contiene en un solo lugar y no es necesario realizar modificaciones en otros controladores de vista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top