iphone - past - push notifications ios firebase
Aplicación de depuración cuando se lanzó mediante notificación de inserción (5)
Actualmente estoy desarrollando una aplicación que recibe notificaciones automáticas. Tengo todo esto funcionando al 100% a través de una página PHP. Hay varios tipos diferentes de notificaciones automáticas que mi aplicación puede recibir. El PHP maneja esto y envía diferentes paquetes de información a mi aplicación que se reciben bien.
Sin embargo, cuando los usuarios "visualizan" la notificación y se lanza mi aplicación, obviamente quiero tomar una acción diferente de la que haría si el usuario acaba de lanzar la aplicación manualmente, y además de eso, diferentes acciones dependiendo del tipo de notificación push. Tengo esto funcionando bien ... estructuralmente.
Se supone que uno de mis tipos de inserción abre una UIView que hace varias conexiones a varios servidores diferentes y negocia datos de ida y vuelta. Esta UIView funciona bien cuando, por ejemplo, se dispara desde el menú principal; sin embargo, cuando mi notificación push está activando esta UIView para que aparezca, las conexiones de socket no están actuando como se esperaba.
Ahora mi pregunta no es acerca de los sockets, pero más aún - ¿Cómo se puede solucionar este problema? Por lo que puedo decir (soy relativamente nuevo) cuando la aplicación se inició desde una notificación de inserción no hay forma de vincular esa ejecución con el depurador / consola / etc ... Estoy teniendo un momento muy difícil tratando de depurar el código usando UIAlertViews, ya que hay muchas líneas de comunicación entre los distintos servidores.
Cualquier consejo que tengas para mí sería muy apreciado.
En XCode <4.0 (para XCode> = 4, consulte answer by delirus más adelante), ahora puede configurar Xcode para conectar el depurador a la aplicación después de iniciarla, en lugar de iniciarla a través del depurador. Esto le permite depurar cosas que varían según el estado de inicio de su aplicación, como esquemas de URL, marcos y notificaciones push.
- En la apariencia de Xcode en la barra de Origen, y debajo de los Objetivos, habrá Ejecutables.
- Abre el inspector para tu aplicación en ejecutables.
- Haga clic en la pestaña de la pestaña Depuración en el inspector.
- Desmarque "Iniciar ejecutable después de iniciar el depurador"
- Verifique "Esperar al siguiente lanzamiento / notificación de inserción"
Ahora cuando haces clic en depurar desde Xcode en lugar de abrir la aplicación, aparecerá una ventana que indica que está esperando a que se inicie la aplicación. A continuación, inicia la aplicación normalmente en el teléfono y Xcode se conecta a ella
En Xcode 6:
- conecta iPhone a Macbook con USB
- Inicie la aplicación en el iPhone tocando el icono
- En el menú de Xcode,
Debug
>Attach to Process
> Elegir su aplicación
No estoy trabajando con notificaciones push, por lo que no sé el funcionamiento exacto de las notificaciones push. Sin embargo, trataría de imitar la recepción de una notificación push permitiendo que el método principal de su programa simule que se envió una notificación si es posible, o llamando a la aplicación: didFinishLaunchingWithOptions: método UIApplicationDelegate desde el método applicationDidFinishLaunching :.
HTH - Saludos, Daan
Para Xcode 4 tienes que:
- Edite su esquema activo a través del menú desplegable "Esquemas". ( ⌘ + < )
- Luego elige tu producto - ''Ejecutar MyApp.app'' a la izquierda.
- Seleccione la pestaña ''Información'' a la derecha.
- Y finalmente elija la opción "Esperar a que MyApp.app lance".
Más here en la sección "Personalizar ejecutables en el editor de esquemas".
EDITAR:
En caso de que pierda registros en GDB, vea el comment Louis Gerbarg a su respuesta.
Para XCode 9, 8, 7 y 6:
- Seleccione el esquema en la barra de herramientas (justo a la izquierda del dispositivo con el que está depurando)
- Elija Editar esquema
- Seleccione Ejecutar en el panel izquierdo
- Para la opción de lanzamiento , seleccione Esperar que se ejecute el ejecutable
- Cierre el Editor de esquemas y Ejecute su proyecto XCode
Ahora puede depurar al iniciar desde una notificación, url personalizada o tocando el ícono de la aplicación.