windows-phone-8.1 winjs toast appcrash

windows phone 8.1 - La aplicación WP8.1 WinJS se bloquea cuando se inicia desde la notificación de tostadas



windows-phone-8.1 toast (1)

Estoy desarrollando la aplicación WP8.1 con WinJS. Estoy usando notificaciones push. Quiero ejecutar una lógica que depende de la secuencia de "inicio" recibida en la carga útil de notificación de inserción. Mi carga útil de notificación de brindis es

<toast launch=''launchString''> <visual> <binding template=''ToastText02''> <text id=''1''>headlineText</text> <text id=''2''>bodyText</text> </binding> </visual> </toast>

He registrado un evento

WinJS.Application.addEventListener("activated", this.onActivated);

Que se define como

onActivated: function (args) { if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) { if (args.detail.arguments) { var launchString = args.detail.arguments; eval("angular.element(document.getElementById(''mainBody'')).scope().onNotification(launchString)") } else { console.log("Not launched from toast notification") } } }

Aquí la función onNotification (launchString) tiene la lógica que toma algunas decisiones basadas en launchString.

Todo funciona bien cuando la aplicación está en primer plano o ejecutándose en segundo plano. Pero cuando la aplicación está en estado inactivo, e intento iniciar tocando en notificación de tostadas, la aplicación se bloquea justo después de su lanzamiento. No puedo depurar esto en VS ya que no pude volver a crear este escenario durante la depuración (porque el depurador se cierra cuando se elimina una aplicación de depuración).

  1. ¿Hay alguna manera de que pueda depurar una aplicación en estado asesinado?
  2. ¿Cuál es el problema cuando trato de iniciar y leer el parámetro de "inicio" cuando la aplicación está en estado inactivo? ¿Como puedo resolver esto?

¡Gracias por tu ayuda!

Editar: Aquí hay un problema similar.


Ok, entonces obtuve mi respuesta.

onActivated evento onActivated fue despedido antes de que se disparara el deviceready . Por lo tanto, mi código estaba haciendo una llamada angular incluso antes de que angular.js se cargara. Por lo tanto, la aplicación funcionó bien cuando estaba en primer plano o en segundo plano ya que angular.js ya estaba cargado. Para resolver esto, he usado un tiempo de espera y comprobé si angular es un object .

onActivated: function (args) { if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) { if (args.detail.arguments) { var launchString = args.detail.arguments; window.setTimeout(function () { if(typeof angular !== undefined) eval("angular.element(document.getElementById(''mainBody'')).scope().onNotificationWindows(launchString)"); }, 3000); } else { console.log("Not launched from toast notification") } }

}