sábado, abril 20, 2013

Global Windows Azure Bootcamp–Bogotá

 

bootcamp_thumb

El proximo 27 de Abril estaremos apoyando este evento a nivel mundial en donde en mas de 70 ciudades a nivel mundial estaremos en esta actividad.

El evento es de caracter presencial en la ciudad de Bogotá.

Las inscripciones las pueden realizar en el siguiente link: Inscripciones al evento

Vamos a tener 2 tracks con 4 talleres en cada track, no te lo pierdas, tenemos cupos limitados.

Los speakers son reconocidos MVP y especialistas en cada una de sus ramas.

La agenda del evento es la siguiente:

AgendaDef

 

Los espero allá!!

Saludos,

Roberto Alvarado

martes, enero 15, 2013

[Windows 8] Como crear Mi Primera App con XAML y C# - {1}

Hola a tod@s!

En esta serie de artículos que empiezo hoy, voy a desarrollar un App para Windows 8 totalmente funcional, a medida que vayamos avanzando en la serie de artículos vamos a ir adicionando funcionalidad y complejidad a nuestra App.

viernes, diciembre 07, 2012

[WebCast] Novedades Windows Phone 8 / Visual Studio 2012

 

Hola a Tod@s

Aquí les comparto la información y el material del WebCast del día de ayer:

Material del Webcast

Espero que aprovechen y disfruten esta información.

viernes, noviembre 30, 2012

[Evento Virtual] MVP de Colombia

Hola a tod@s!

Hoy quiero invitarlos a estas charlas que realizarán algunos de los MVP de Colombia, en la cual participare con una charla sobre desarrollo para Windows Phone.

Aquí les dejo el flayer:

agenda 2

Las charlas serán 2 por noche y tendrán una duración de 1 hora cada una, hay charlas tanto de infraestructura como de desarrollo.

Aquí los enlaces de cada una de las charlas:

Queries de información de diagnóstico en SQL Server 2012 (Guillermo Taylor)

https://www.livemeeting.com/cc/mvp/join?id=9TMHDJ+role=attend

Novedades Entity Framework 5.0 con Visual Studio 2012 y .NET Framework 4.5 + Entity Framework 6.0 (Jhonnys Lopez)

https://www.livemeeting.com/cc/mvp/join?id=9TMHDJ+role=attend9TMHDJ

Desarrollando Apps para Windows 8, mas facil imposible! (Nicolas Herrera)

https://www.livemeeting.com/cc/mvp/join?id=NQKG2R+role=attendNQKG2R

Mineria de datos con Excel 2013 y SQL 2012 (Alberto Rivera)

https://www.livemeeting.com/cc/mvp/join?id=T3G792+role=attendT3G792

Desarrollo para Windows Phone 8 (Roberto Alvarado)

https://www.livemeeting.com/cc/mvp/join?id=JBK5M5+role=attendJBK5M5

Estilos de trabajo flexible en Windows 8 (Daniel Vargas)

https://www.livemeeting.com/cc/mvp/join?id=4PWQTM+role=attend4PWQTM

Windows Server 2012 y la seguridad (Andres Galvan) Invitado Internacional

https://www.livemeeting.com/cc/mvp/join?id=5PTSBD+role=attend5PTSBD

ASP.NET MVC 4 y Mobile Web Sites (Julio Avellaneda)

https://www.livemeeting.com/cc/mvp/join?id=BMKT3G+role=attendBMKT3G

No se lo pierdan!!!

Hasta la próxima!

lunes, noviembre 05, 2012

[Win8] Puntos a tener en cuenta para publicar Apps en el Store de Windows 8

 

Hola a tod@s,

Hoy voy a explicarles que puntos son importantes al momento de publicar un App en la tienda de Windows 8.

A continuación enumero lo que debemos tener en cuenta para publicar Apps en la tienda de Windows 8.

1. Seleccionar el idioma del App y de la tienda:

image

Independiente que el idioma de Visual Studio sea ingles, el idioma de la aplicación y sobre el cual se certificará en la tienda debe ser claro y especifico.

En mi caso, el idioma es español y en Colombia.

2. La descripción de la aplicación que se va a colocar en la tienda debe ser una frase que tenga mínimo 7 palabras, no debe ser una palabra. Debe describir de manera rápida y sencilla lo que hace la aplicación.

image

3. Se deben enviar mínimo 2 imágenes de 1366 x 768, a pesar de que solo se exige 1, si se envía 1 imagen nos rechazan el App.

image

 

4. Es muy importante tener una pagina web o Url en donde se publique una Política de privacidad para nuestro App.

image

Si no tiene una, puede utilizar esta, que es la de la comunidad BDotNet, tiene el texto tanto en ingles como en español. http://bdotnet.wix.com/privacypolicy

Además su App debe tener un charm en donde indique la política de privacidad que utilizas, en este link te indico como puedes crear este charm: Crear página de Política de Privacidad de un App Windos 8

5. Llenar o dar las instrucciones necesarias a los que prueban nuestra Aplicación sobre el manejo de la aplicación para que no sea rechazada porque no la saben manejar.

image

En la imagen un ejemplo sobre este punto.

 

6. Es muy importante el rango de edad en el cual coloca su App, si su rango de edad es de 3 años o superior, o de siete años o superior, su App no debe tener conexión a Internet ni hacer utilización de la cámara del dispositivo.

image

Tengamos muy en cuenta las opciones y recomendaciones que nos da la misma tienda de Windows para ubicar nuestro App en uno de los rangos de fechas disponibles.

En este momento no hay posibilidad si no de estas 4 opciones para nuestro App.

7. La imágenes del App, si verificamos la carpeta Assets del explorador de soluciones de Visual Studio, debemos dejar los mismos nombres de las imágenes, el mismo formato y principalmente las mismas dimensiones de lo contrario nuestro App será rechazado el momento de ejecutar el kit de Certificación de App para Windows 8.

Un ejemplo de esto:

image

Si cambia el nombre de la imagen del logo por ejemplo debe indicarlo en el manifiesto también del App de manera correcta.

 

8. Si utiliza una base de datos local, como SQLite, debe asegurarse que en las propiedades del proyecto en la pestaña de Compilación (Build) esté seleccionado el procesador correcto de su PC, y asegurarse que en las referencias del proyecto, la referencia de SQLIte no tenga una davertencia, si la tiene, elimine la referencia y vuelva a crear la referencia a SQLite.

 

9. Al publicar su App debe asegurarse que tener en “Release” su App al momento de las compilaciones y verificaciones que se realizan con el KIT de Certificación.

image

 

Pronto si encuentro mas puntos importantes a tener en cuenta al momento de subir Apps al Store de Windows 8 se las estaré comunicando por aquí.

Dios los bendiga a tod@s!

miércoles, octubre 17, 2012

[Windows8] Crear la pagina de Settings

Hola a tod@s!

Hoy vamos a ver como podemos crea la pagina de settings de nuestra App para windows 8 en donde mostramos la Política de Privacidad de nuestra app.

Este es uno de los motivos mas frecuentes por los cuales devuelven App al subirlas al Store de Windows 8.

Nos envían un mensaje como:

Cumplimiento del contenido: error

Con esta prueba se evalúa tu software para ver si su contenido cumple los requisitos de certificación de la Tienda Windows.

Tu aplicación no cumple el requisito 4.1.

Notas de los evaluadores:

C:: Our reviewer could not find a privacy statement in the Windows Charm settings of this app.

 

1. creamos nuestro proyecto para el App de Windows 8:

image

Adicionamos un nuevo item, que va a ser una nueva página en blanco:

image

Llamaremos a nuestra página SettingsFlyuot.xaml, seleccionaremos una página en Blanco de la lista que nos presenta Visual Studio al momento de seleccionar App para Windows Store.

image

Adicionamos la página a nuestro proyecto, y nos genera el código XAML siguiente:

 

<Page
    x:Class="Celeste.CharmsPrivacyPolicy.SettingsFlyout"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Celeste.CharmsPrivacyPolicy"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
 
    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
 
    </Grid>
</Page>



Vamos a adicionar el siguiente codigo XAML dentro de los tags <Grid> y </Grid>:


 


<StackPanel>
    <TextBlock Margin="5,30,0,30" 
               Style="{StaticResource SubheaderTextStyle}" >
        App desarrollada por:</TextBlock>
    <TextBlock Margin="5,0,0,0" FontSize="24" 
               Style="{StaticResource SubheaderTextStyle}" >
      Roberto Alvarado Taborda
    </TextBlock>
    <TextBlock Margin="5,0,0,0"  FontSize="24" 
               Style="{StaticResource SubheaderTextStyle}" >
        Celeste Software SAS
    </TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="24" 
                Style="{StaticResource SubheaderTextStyle}" >
        Bogotá D.C., Colombia</TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="24" 
                Style="{StaticResource SubheaderTextStyle}" >
      ralvaradot@hotmail.com
    </TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="24" 
                Style="{StaticResource SubheaderTextStyle}" >
        http://bdotnet.wix.com/privacypolicy</TextBlock>
 
    <TextBlock Margin="5,30,0,30" 
               Style="{StaticResource SubheaderTextStyle}" >
        Política de privacidad</TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="18" 
                Style="{StaticResource SubheaderTextStyle}" >
        La aplicación hace uso de la conexión a internet, única y exclusivamente, 
        para descargar información relativa de la misma desde nuestros servidores.</TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="18" 
                Style="{StaticResource SubheaderTextStyle}" >
        Ninguna información de la máquina o del usuario es enviada de vuelta a ellos 
        ni a ningún otro servidor a través de internet ni de ningún otro medio por 
        parte de esta aplicación.</TextBlock>
    <TextBlock  Margin="5,0,0,0" FontSize="18" 
                Style="{StaticResource SubheaderTextStyle}" >
        Es responsabilidad del usuario el manejo que este haga de los datos que son 
        registrados a través de la aplicación.</TextBlock>
</StackPanel>



De estos datos son importantes: el link de la página en internet donde están publicadas las políticas de privacidad de la aplicación, el email de contacto.


La línea del nombre de la empresa la pueden obviar o eliminar.


El diseño de la pagina se verá mas o menos así:


image


Vamos a abrir la pagina principal o inicial de nuestra App, en nuestro caso es MainPage.xaml:


Vamos a abrir el “Code Behind” y colocar este código en la clase:


    public sealed partial class MainPage : Page
    {
        private Rect windowBounds;
 
        private double settingsWidth = 400;
 
        private Popup settingsPopup;
 
        public MainPage()
        {
            this.InitializeComponent();
        }



Estas variables nos servirán para adecuar el manejo de Charms de settings que es lo que deseamos.


Vamos ahora a abrir el archivo App.xaml.cs para incluir una variable de Aplicación:


namespace Celeste.CharmsPrivacyPolicy
{
    /// <summary>
    /// Provides application-specific behavior to supplement the default Application class.
    /// </summary>
    sealed partial class App : Application
    {
        public static bool isEventRegistered;
 
        /// <summary>
        /// Initializes the singleton application object.  This is the first line of authored code
        /// executed, and as such is the logical equivalent of main() or WinMain().
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }



Regresamos a nuestra página principal, Mainpage.xaml.cs y allí adicionamos código al constructor de tal forma que se vea como se muestra a continuación:


 public MainPage()
 {
     this.InitializeComponent();
 
     windowBounds = Window.Current.Bounds;
     Window.Current.SizeChanged += OnWindowSizeChanged;
     if (!App.isEventRegistered)
     {
         SettingsPane.GetForCurrentView().CommandsRequested += onCommandsRequested;
         App.isEventRegistered = true;
     }
 }



Lo que estamos haciendo aquí es configurar el tamaño de la ventana, adicionar el método a ejecutar al evento SizeChanged y verificar si el evento está o no registrado en el App para hacerlo solo 1 vez.


Si el evento no esta registrado lo registramos en el App, en la línea:


SettingsPane.GetForCurrentView().CommandsRequested += onCommandsRequested;



Ahora vamos a adicionar el código del método onCommandsRequested que adiciona un handler para verificar al ventana del Setting a mostrar.


        private void onCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs eventArgs)
        {
            UICommandInvokedHandler handler = new UICommandInvokedHandler(onSettingsCommand);
 
            SettingsCommand generalCommand = new SettingsCommand("DefaultsId", "Acerca de", handler);
            eventArgs.Request.ApplicationCommands.Add(generalCommand);
        }



 


Ahora el método onSettingsCommand en el cual definimos y configuramos la ventana de Settings:


        private void onSettingsCommand(IUICommand command)
        {
 
            // Create a Popup window which will contain our flyout.
            settingsPopup = new Popup();
            settingsPopup.Closed += OnPopupClosed;
            Window.Current.Activated += OnWindowActivated;
            settingsPopup.IsLightDismissEnabled = true;
            settingsPopup.Width = settingsWidth;
            settingsPopup.Height = windowBounds.Height;
 
            // Add the proper animation for the panel.
            settingsPopup.ChildTransitions = new TransitionCollection();
            settingsPopup.ChildTransitions.Add(new PaneThemeTransition()
            {
                Edge = (SettingsPane.Edge == SettingsEdgeLocation.Right) ?
                       EdgeTransitionLocation.Right :
                       EdgeTransitionLocation.Left
            });
 
            // Create a SettingsFlyout the same dimenssions as the Popup.
            SettingsFlyout mypane = new SettingsFlyout();
            mypane.Width = settingsWidth;
            mypane.Height = windowBounds.Height;
 
            // Place the SettingsFlyout inside our Popup window.
            settingsPopup.Child = mypane;
 
            // Let's define the location of our Popup.
            settingsPopup.SetValue(Canvas.LeftProperty, SettingsPane.Edge == SettingsEdgeLocation.Right ? (windowBounds.Width - settingsWidth) : 0);
            settingsPopup.SetValue(Canvas.TopProperty, 0);
            settingsPopup.IsOpen = true;
        }










Y por último los métodos onWindowSizeChanged se dispara al cambiar de tamaño la ventana, onWindowActivated, que se dispara al activar la ventana actual, y por último onPopupClosed, que se dispara al cerrar el popup que carga nuestra ventana de Settings.


        void OnWindowSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
        {
            windowBounds = Window.Current.Bounds;
        }
        private void OnWindowActivated(object sender, Windows.UI.Core.WindowActivatedEventArgs e)
        {
            if (e.WindowActivationState == Windows.UI.Core.CoreWindowActivationState.Deactivated)
            {
                settingsPopup.IsOpen = false;
            }
        }
        void OnPopupClosed(object sender, object e)
        {
            Window.Current.Activated -= OnWindowActivated;
        }



 


Al ejecutar nuestra App agregando este corto código y esta página sencilla, podemos observar lo siguiente:


image


Podemos apreciar que aparece Acerca de, que es nuestra página de Settings.


Y al dar clic sobre “Acerca de” en el menú de settings:


image


Muestra nuestra pagina de settings con la política de privacidad.


Bueno amigos por hoy esto les quería contar para ayudarlos en que no rechacen sus Apps al subirlos al Windows Store.


Pueden utilizar la página de Políticas de Privacidad que ha publicado la Comunidad BDotNetLatam en la siguiente url para apuntar sus apps, es indispendable que coloquen tanto en el cuadro de texto de Política de Privacidad que se encuentra en el formulario de subir App al Store, como en esta pagina de settings que debe contener toda App a desarrollar para Windows 8.


Link a página pública de Política de Privacidad de Comunidad BDotNet


Espero que lo disfruten y logren certificar sus Apps en el Store de Windows 8.


 


Hasta una proxima oportunid@d, Dios los bendiga mucho!

lunes, octubre 08, 2012

[Windows8] Tip de Publicación

Hola a tod@s!

Al momento de publicar nuestro App en el Windows Apps Store, en la información que se nos solicita al momento de cargar el App para ser validado y posteriormente colocado en el Store se solicita una información que no es obligatoria, pero que si debemos colocar para que no nos devuelvan el App después de 7 días.

El tip es el siguiente:

Se debe diligenciar el campo de Política de Privacidad, aqui colocamos el link a una pagina en donde especifiquemos la política de privacidad de nuestra aplicación, por ejemplo: “Accedemos a internet, pero no tomamos información local del dispositivo y la enviamos a la web del fabricante”.

 

Saludos y espero que tengan en cuenta esto al momento de publicar su App en el Store.

 

Saludos,

 

Roberto Alvarado