Como ustedes saben, L&A SISTEMAS fue seleccionada por Microsoft
entre más de 50 proyectos de empresas que se postularon para el Windows
Appceleration Program. El Windows Appceleration Program está dirigido a una
cantidad reducida de proyectos que fueron seleccionados entre las empresas de Argentina
y Uruguay que se postularon. Las mismas, presenciaron la apertura oficial dónde oradores de primera como
Miguel Angel Saez y Ariel Schapiro expusieron las oportunidades del mercado
para todos los presentes. CMT, la aplicación para llevar mantenimientos de vehículos
de L&A, fue elegida para participar a partir del 10 de abril de la
experiencia de aceleración en plataformas Windows 8 y/o la plataforma móvil de
más rápido crecimiento de América Látina, Windows Phone, junto con Microsoft.
Para L&A, el objetivo de formar parte del programa está en llevar adelante
la adaptación del producto para sincronizar los datos entre diferentes
dispositivos que utilicen la aplicación. L&A será acompañada de manera
personal en el ciclo de vida completo de una aplicación con los recursos
profesionales, capacitación y herramientas, con un enfoque de colaboración a
largo plazo para trabajar en garantizar los mejores resultados de calidad, los
cuales serán avalados mediante el logo de participación en el programa y
mediante la difusión en los sitios de Microsoft. Windows 8 y Windows Phone
juntos permiten llegar a un amplio espectro de dispositivos, no solo cubriendo
Smartphones, sino también PCs de escritorio, laptops y tabletas, facilitando
una mayor cantidad de descargas. Para lograr dicho resultado, L&A deberá
analizar y cumplir con las generalidades y requisitos del programa. Entre
ellas, contar con un proyecto para llevar a cabo durante el programa, destinar
las horas necesarias para participar de los entrenamientos y el desarrollo del
proyecto y pasar por las instancias de certificación y publicación de la
aplicación. “Agradecemos a Microsoft por habernos seleccionado y que nos haya elegido nuevamente por presentar un proyecto innovador”,
dijo Leonardo Borzillo, socio fundador de L&A SISTEMAS. Y agregó: “Nuestro
objetivo a cumplir, es sincronizar la información entre dispositivos que
utilicen nuestra aplicación Car Maintenance Tracker” en el lanzamiento del
programa.
domingo, 21 de abril de 2013
martes, 9 de abril de 2013
Error en CurrentApp.LoadListingInformationAsync() HRESULT: 0x801900CC
Amigos,
Como mucho de ustedes ya sabrán, en los últimos días hemos estado bastante ocupados tratando de certificar una aplicación que tenemos pronta hace ya un tiempo, sin éxito.
Luego de un ida y vuelta con los técnicos que certifican las aplicaciones del Windows Store, pudimos obtener el error que nos estaba impidiendo certificar nuestra aplicación.
El error surge cuando un intenta llamar a la función CurrentApp.LoadListingInformationAsync() sin estar conectado a Internet.
Es necesario controlar las excepciones de red lanzadas por CurrentApp.LoadListingInformationAsync, así la aplicación no se bloqueará cuando pase por el proceso de certificación y para que no se bloquee cuando un usuario intenta ejecutarla sin conectividad con el Store.
Si por algún motivo, no se obtener la información devuelta por la función anteriormente mencionada, nuestra aplicación aún debería poder funcionar en modo de prueba (trial), desactivando todas las opciones de compra dentro de la aplicación, ya que las mismas obviamente no se pueden completar sin estar conectados.
Los detalles de dicha implementación dependerán de su aplicación y de como tiene implementadas las compras en la misma.
Si caducó el periodo de prueba, la aplicación no se inicia, por lo que no es necesario pensar la lógica para ese caso en particular
Finalmente quiero comentarles que el ejemplo que uno se baja de Microsoft - Trial app and in-app purchase sample - carece de estos chequeos que mencionaba anteriormente
por lo que he decidido compartir con ustedes un código un poco mas completo (por lo menos en lo que tiene que ver con aplicaciones de prueba)
Como mucho de ustedes ya sabrán, en los últimos días hemos estado bastante ocupados tratando de certificar una aplicación que tenemos pronta hace ya un tiempo, sin éxito.
Luego de un ida y vuelta con los técnicos que certifican las aplicaciones del Windows Store, pudimos obtener el error que nos estaba impidiendo certificar nuestra aplicación.
El error surge cuando un intenta llamar a la función CurrentApp.LoadListingInformationAsync() sin estar conectado a Internet.
Es necesario controlar las excepciones de red lanzadas por CurrentApp.LoadListingInformationAsync, así la aplicación no se bloqueará cuando pase por el proceso de certificación y para que no se bloquee cuando un usuario intenta ejecutarla sin conectividad con el Store.
Si por algún motivo, no se obtener la información devuelta por la función anteriormente mencionada, nuestra aplicación aún debería poder funcionar en modo de prueba (trial), desactivando todas las opciones de compra dentro de la aplicación, ya que las mismas obviamente no se pueden completar sin estar conectados.
Los detalles de dicha implementación dependerán de su aplicación y de como tiene implementadas las compras en la misma.
Si caducó el periodo de prueba, la aplicación no se inicia, por lo que no es necesario pensar la lógica para ese caso en particular
Finalmente quiero comentarles que el ejemplo que uno se baja de Microsoft - Trial app and in-app purchase sample - carece de estos chequeos que mencionaba anteriormente
por lo que he decidido compartir con ustedes un código un poco mas completo (por lo menos en lo que tiene que ver con aplicaciones de prueba)
935 private static async Task<bool> ChequearEstadoDeLaLicencia()
936 {
937 if (CurrentApp.LicenseInformation == null)
938 {
939 return false;
940 }
941
942 var hayInternet = HayConexionInternet();
943
944 if (CurrentApp.LicenseInformation.IsActive)
945 {
946 try
947 {
948 if (hayInternet)
949 {
950 var listing = await CurrentApp.LoadListingInformationAsync();
951 App.LicenciaPrecio = listing.FormattedPrice;
952 }
953 }
954 catch (Exception ex)
955 {
956 MetroEventSource.Log.Error("MainPage.Xaml: Error en CurrentApp.LoadListingInformationAsync(). Detalle:" + ex.Message);
957 hayInternet = false;
958 }
959
960 if (CurrentApp.LicenseInformation.IsTrial)
961 {
962 var licenciaDiasRestantesDeTrial = (CurrentApp.LicenseInformation.ExpirationDate - DateTime.Now).Days;
963
964 if (licenciaDiasRestantesDeTrial <= 0)
965 {
966 var apretoComprar = false;
967 var messageDialog = new MessageDialog("Your_trial_has_expired__Do_you_want_to_purchase_full_license");
968 if (hayInternet)
969 {
970 messageDialog.Commands.Add(new UICommand("Purchase", (command) =>; apretoComprar = true));
971 }
972 messageDialog.Commands.Add(new UICommand("Close", (command) =>; { }));
973 await messageDialog.ShowAsync();
974 if (apretoComprar)
975 {
976 await ConvertirTrialToFull();
977 }
978
979 return false;
980 }
981 else
982 {
983 var apretoComprar = false;
984 var messageDialog =
985 new MessageDialog(
986 "Thank_you_for_evaluating_Our_App__Your_license_will_expire_in"
987 + licenciaDiasRestantesDeTrial + " days." + Environment.NewLine
988 + "Do_you_want_to_purchase_full_license");
989
990 if (hayInternet)
991 {
992 messageDialog.Commands.Add(new UICommand("Purchase"), (command) =>; { apretoComprar = true; }));
993 }
994 messageDialog.Commands.Add(new UICommand("Continue_using_trial", (command) =>; { }));
995 await messageDialog.ShowAsync();
996 if (apretoComprar)
997 {
998 await ConvertirTrialToFull();
999 return false;
1000 }
1001 }
1002
1003 }
1004 else
1005 {
1006 // Show the features that are available only with a full license.
1007 return true;
1008 }
1009 }
1010 else
1011 {
1012 // A license is inactive only when there's an error.
1013 var messageDialog = new MessageDialog("Could_not_find_any_valid_license_for_Our_App__The_application_will_be_closed");
1014 messageDialog.Commands.Add(new UICommand("Ok", (command) => { }));
1015 await messageDialog.ShowAsync();
1016 return false;
1017 }
1018
1019 return true;
1020 }
1021
1022
1023 public static bool HayConexionInternet()
1024 {
1025 ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile();
1026 bool internet = connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
1027 return internet;
1028 }
Espero les sea de utilidad, hasta la próxima!
Suscribirse a:
Entradas (Atom)