Para poder subir tu app al store de windows 8 es necesario poder contar con una politica de seguridad , de esta manera podemos colocar esta parte en en tu app de manera que al subirla del store no tengas problemas al momento subir tu app , para comenzar tendremos que crear una política de seguridad la cual puede se enlazada a un sitio web o algun recurso web , o puede estar incluida en tu aplicación.-
A continuacion les dejo que cosas deben cambiar en su archivo app.xaml.css
using InfoPan.Common; // este es el nombre de tu app
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.System;
using Windows.UI.ApplicationSettings;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// La plantilla Aplicación de cuadrícula está documentada en http://go.microsoft.com/fwlink/?LinkId=234226
namespace InfoPan
{
/// <summary>
/// Proporciona un comportamiento específico de la aplicación para complementar la clase Application predeterminada.
/// </summary>
sealed partial class App : Application
{
private bool m_settingsReady = false;
/// <summary>
/// Inicializa el objeto de aplicación Singleton. Esta es la primera línea de código creado
/// ejecutado y, como tal, es el equivalente lógico de main() o WinMain().
/// </summary>
//public App()
//{
// this.InitializeComponent();
// this.Suspending += OnSuspending;
//}
/// <summary>
/// Se invoca cuando la aplicación la inicia normalmente el usuario final. Se usarán otros puntos
/// de entrada cuando la aplicación se inicie para abrir un archivo específico, para mostrar
/// resultados de la búsqueda, etc.
/// </summary>
/// <param name=»args»>Información detallada acerca de la solicitud y el proceso de inicio.</param>
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
Frame rootFrame = Window.Current.Content as Frame;
// No repetir la inicialización de la aplicación si la ventana tiene contenido todavía,
// solo asegurarse de que la ventana está activa.
if (!this.m_settingsReady)
{
SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
this.m_settingsReady = true;
}
if (rootFrame == null)
{
// Crear un marco para que actúe como contexto de navegación y navegar a la primera página.
rootFrame = new Frame();
//Asociar el marco con una clave SuspensionManager.
//SuspensionManager.RegisterFrame(rootFrame, «AppFrame»);
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
// Restaurar el estado de sesión guardado solo si procede
try
{
await SuspensionManager.RestoreAsync();
}
catch (SuspensionManagerException)
{
//Se produjo un error al restaurar el estado.
//Asumir que no hay estado y continuar.
}
}
// Poner el marco en la ventana actual.
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
// Cuando no se restaura la pila de navegación para navegar a la primera página,
// configurar la nueva página al pasar la información requerida como parámetro
// de navegación.
if (!rootFrame.Navigate(typeof(GroupedItemsPage), «AllGroups»))
{
throw new Exception(«Failed to create initial page»);
}
}
// Asegurarse de que la ventana actual está activa.
Window.Current.Activate();
}
/// <summary>
/// Se invoca al suspender la ejecución de la aplicación. El estado de la aplicación se guarda
/// sin saber si la aplicación se terminará o se reanudará con el contenido
/// de la memoria aún intacto.
/// </summary>
/// <param name=»sender»>Origen de la solicitud de suspensión.</param>
/// <param name=»e»>Detalles sobre la solicitud de suspensión.</param>
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
async void OnSettingsCommand(IUICommand command)
{
// Obtenemos en cuál de los Setting ha pulsado el usuario
SettingsCommand settingsCommand = (SettingsCommand)command;
// Según el que haya pulsado hacemos unas cosas u otras
switch ((string)settingsCommand.Id)
{
case «politicaPrivacidad»:
// Abrimos la página web con nuestra Política de Privacidad
// (nota: el enlace es de ejemplo, aquí deberías de poner el tuyo propio)
await Launcher.LaunchUriAsync(new Uri(
«https://mspchilemendoza.wordpress.com/2013/09/13/%EF%BB%BFpolitica-de-privacidad-%E2%80%8Bprivacy-policy/»));
break;
case «contactaConNosotros»:
// Abrimos la página web con nuestra información de contacto
// (nota: el enlace es de ejemplo, aquí deberías de poner el tuyo propio)
await Launcher.LaunchUriAsync(new Uri(
«https://mspchilemendoza.wordpress.com/about/»));
break;
}
}
void OnCommandsRequested(
SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs eventArgs)
{
// Preparamos el metodo que se llamará cuando el usuario pulse
// en alguno de los Settings
UICommandInvokedHandler handler = new UICommandInvokedHandler(OnSettingsCommand);
// Hacemos que las diferentes opciones aparezcan en los Settings
// Política de privacidad
SettingsCommand privacyPolicyCommand =
new SettingsCommand(«politicaPrivacidad», «Política de privacidad», handler);
eventArgs.Request.ApplicationCommands.Add(privacyPolicyCommand);
// Contacta con nosotros
SettingsCommand contactUsCommand =
new SettingsCommand(«contactaConNosotros», «Contacta con nosotros», handler);
eventArgs.Request.ApplicationCommands.Add(contactUsCommand);
}
}
}