Compartir a través de


Controlar la activación de URI

API importantes

Aprende a registrar una aplicación para convertirla en el controlador predeterminado de un nombre de esquema de identificador uniforme de recursos (URI). Tanto las aplicaciones de escritorio de Windows como las aplicaciones de Plataforma universal de Windows (UWP) pueden registrarse para ser un controlador predeterminado para un nombre de esquema de URI. Si el usuario elige la aplicación como controlador predeterminado para un nombre de esquema de URI, la aplicación se activará cada vez que se inicie ese tipo de URI.

Se recomienda que solo se registre para un nombre de esquema de URI si espera controlar todos los inicios de URI para ese tipo de esquema de URI. Si decide registrarse para un nombre de esquema de URI, debe proporcionar al usuario final la funcionalidad que se espera cuando la aplicación esté activada para ese esquema de URI. Por ejemplo, una aplicación que se registra para el nombre del esquema de URI mailto debe abrirse a un nuevo mensaje de correo electrónico para que el usuario pueda redactar un nuevo correo electrónico. Para obtener más información sobre las asociaciones de URI, consulta Directrices y lista de comprobación para tipos de archivo y URI.

Estos pasos muestran cómo registrarse para un nombre de esquema de URI personalizado, alsdk://y cómo activar la aplicación cuando el usuario inicia un alsdk:// URI.

Nota:

En las aplicaciones para UWP, ciertos URI y extensiones de archivo están reservados para su uso por parte de aplicaciones integradas y el sistema operativo. Se omitirán los intentos de registrar la aplicación con un URI reservado o una extensión de archivo. Consulta Nombres de esquema de URI reservados y tipos de archivo para obtener una lista alfabética de esquemas de URI que no puedes registrar para tus aplicaciones para UWP porque están reservadas o prohibidas.

Paso 1: Especificar el punto de extensión en el manifiesto del paquete

La aplicación recibe eventos de activación solo para los nombres de esquema de URI enumerados en el manifiesto del paquete. Este es el modo en que indica que la aplicación controla el nombre del alsdk esquema de URI.

  1. En el Explorador de soluciones, haga doble clic en package.appxmanifest para abrir el diseñador de manifiestos. Seleccione la pestaña Declaraciones y, en la lista desplegable Declaraciones disponibles, seleccione Protocolo y, a continuación, haga clic en Agregar.

    Esta es una breve descripción de cada uno de los campos que puede rellenar el diseñador de manifiestos para el protocolo (consulte Manifiesto del paquete AppX para obtener más información):

Campo Descripción
Logotipo Especifique el logotipo que se usa para identificar el nombre del esquema de URI en el Panel de control Establecer programas predeterminados. Si no se especifica ningún logotipo, se usa el logotipo pequeño de la aplicación.
Nombre para mostrar Especifique el nombre para mostrar para identificar el nombre del esquema de URI en el Panel de control Establecer programas predeterminados.
Nombre Elija un nombre para el esquema Uri.
Nota El nombre debe estar en minúsculas.
Tipos de archivo reservados y prohibidos Consulta Nombres de esquema de URI reservados y tipos de archivo para obtener una lista alfabética de esquemas de URI que no puedes registrar para tus aplicaciones para UWP porque están reservadas o prohibidas.
Executable Especifica el ejecutable de inicio predeterminado para el protocolo. Si no se especifica, se usa el ejecutable de la aplicación. Si se especifica, la cadena debe tener entre 1 y 256 caracteres de longitud, debe terminar con ".exe" y no puede contener estos caracteres: >, , , <:, ", |, ?, ?o *. Si se especifica, también se usa el punto de entrada. Si no se especifica el punto de entrada, se usa el punto de entrada definido para la aplicación.
Punto de entrada Especifica la tarea que controla la extensión de protocolo. Normalmente es el nombre completo del espacio de nombres de un tipo de Windows Runtime. Si no se especifica, se usa el punto de entrada de la aplicación.
Página de inicio Página web que controla el punto de extensibilidad.
Grupo de recursos Etiqueta que puede usar para agrupar las activaciones de extensión con fines de administración de recursos.
Vista deseada (solo Windows) Especifique el campo Vista deseada para indicar la cantidad de espacio que necesita la ventana de la aplicación cuando se inicia para el nombre del esquema de URI. Los valores posibles para La vista deseada son Default, UseLess, UseHalf, UseMore o UseMinimum.
Nota Windows tiene en cuenta varios factores diferentes al determinar el tamaño final de la ventana de la aplicación de destino, por ejemplo, la preferencia de la aplicación de origen, el número de aplicaciones en pantalla, la orientación de la pantalla, etc. Establecer la vista deseada no garantiza un comportamiento de ventana específico para la aplicación de destino.
Familia de dispositivos móviles: la vista deseada no se admite en la familia de dispositivos móviles.
  1. Escriba images\Icon.png como logotipo.

  2. Escriba SDK Sample URI Scheme como nombre para mostrar.

  3. Escriba alsdk como el Nombre.

  4. Presione Ctrl+S para guardar el cambio en package.appxmanifest.

    Esto agrega un elemento Extension como este al manifiesto del paquete. La categoría windows.protocol indica que la aplicación controla el nombre del alsdk esquema de URI.

    <Applications>
        <Application Id= ... >
            <Extensions>
                <uap:Extension Category="windows.protocol">
                  <uap:Protocol Name="alsdk">
                    <uap:Logo>images\icon.png</uap:Logo>
                    <uap:DisplayName>SDK Sample URI Scheme</uap:DisplayName>
                  </uap:Protocol>
                </uap:Extension>
          </Extensions>
          ...
        </Application>
   <Applications>

Paso 2: Agregar los iconos adecuados

Las aplicaciones que se convierten en el valor predeterminado para un nombre de esquema URI tienen sus iconos mostrados en varios lugares del sistema, como en el panel de control Programas predeterminados. Incluya un icono de 44 x 44 con el proyecto para este propósito. Coincide con el aspecto del logotipo del icono de la aplicación y usa el color de fondo de la aplicación en lugar de hacer que el icono sea transparente. Haga que el logotipo se extienda al borde sin rellenarlo. Pruebe los iconos en fondos blancos. Consulte Iconos de aplicación y logotipos para obtener más detalles sobre los iconos.

Paso 3: Controlar el evento activado

El controlador de eventos OnActivated recibe todos los eventos de activación. La propiedad Kind indica el tipo de evento de activación. Este ejemplo se configura para controlar eventos de activación de protocolo .

public partial class App
{
   protected override void OnActivated(IActivatedEventArgs args)
  {
      if (args.Kind == ActivationKind.Protocol)
      {
         ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
         // TODO: Handle URI activation
         // The received URI is eventArgs.Uri.AbsoluteUri
      }
   }
}
Protected Overrides Sub OnActivated(ByVal args As Windows.ApplicationModel.Activation.IActivatedEventArgs)
   If args.Kind = ActivationKind.Protocol Then
      ProtocolActivatedEventArgs eventArgs = args As ProtocolActivatedEventArgs
      
      ' TODO: Handle URI activation
      ' The received URI is eventArgs.Uri.AbsoluteUri
 End If
End Sub
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs const& args)
{
    if (args.Kind() == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
    {
        auto protocolActivatedEventArgs{ args.as<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs>() };
        // TODO: Handle URI activation  
        auto receivedURI{ protocolActivatedEventArgs.Uri().RawUri() };
    }
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs^ args)
{
   if (args->Kind == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
   {
      Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ eventArgs =
          dynamic_cast<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(args);
      
      // TODO: Handle URI activation  
      // The received URI is eventArgs->Uri->RawUri
   }
}

Nota:

Cuando se inicia a través del contrato de protocolo, asegúrate de que el botón Atrás devuelva al usuario a la pantalla que inició la aplicación y no al contenido anterior de la aplicación.

El código siguiente inicia mediante programación la aplicación a través de su URI:

   // Launch the URI
   var uri = new Uri("alsdk:");
   var success = await Windows.System.Launcher.LaunchUriAsync(uri)

Para obtener más información sobre cómo iniciar una aplicación a través de un URI, consulte Iniciar la aplicación predeterminada para un URI.

Se recomienda que las aplicaciones creen un nuevo marco XAML para cada evento de activación que abra una nueva página. De este modo, la pila de retroceso de navegación del nuevo marco XAML no contendrá ningún contenido anterior que la aplicación pueda tener en la ventana actual cuando se suspenda. Las aplicaciones que deciden usar un solo marco XAML para el inicio y los contratos de archivos deben borrar las páginas del diario de navegación frame antes de navegar a una página nueva.

Cuando se inicia a través de la activación del protocolo, las aplicaciones deben considerar la posibilidad de incluir la interfaz de usuario que permite al usuario volver a la página superior de la aplicación.

Comentarios

Cualquier aplicación o sitio web puede usar el nombre del esquema de URI, incluidos los malintencionados. Por lo tanto, los datos que obtenga en el URI podrían proceder de un origen que no es de confianza. Se recomienda no realizar nunca una acción permanente en función de los parámetros que reciba en el URI. Por ejemplo, los parámetros de URI se pueden usar para iniciar la aplicación en la página de la cuenta de un usuario, pero se recomienda que nunca los use para modificar directamente la cuenta del usuario.

Nota:

Si va a crear un nuevo nombre de esquema de URI para la aplicación, asegúrese de seguir las instrucciones de RFC 4395. Esto garantiza que el nombre cumpla los estándares de esquemas de URI.

Nota:

Cuando se inicia a través del contrato de protocolo, asegúrate de que el botón Atrás devuelva al usuario a la pantalla que inició la aplicación y no al contenido anterior de la aplicación.

Se recomienda que las aplicaciones creen un nuevo marco XAML para cada evento de activación que abra un nuevo destino de URI. De este modo, la pila de retroceso de navegación del nuevo marco XAML no contendrá ningún contenido anterior que la aplicación pueda tener en la ventana actual cuando se suspenda.

Si decides que quieres que las aplicaciones usen un solo marco XAML para contratos de inicio y protocolo, borra las páginas del diario de navegación Frame antes de navegar a una página nueva. Cuando se inicia a través del contrato de protocolo, considere la posibilidad de incluir la interfaz de usuario en las aplicaciones que permite al usuario volver a la parte superior de la aplicación.

Aplicación de ejemplo completa

Conceptos

Tareas

Instrucciones

Referencia