Compartir a través de


Controlar la activación de URI

Obtenga información sobre cómo registrar una aplicación para convertirse en el controlador predeterminado para un nombre de esquema de identificador uniforme de recursos (URI). Tanto las aplicaciones de escritorio de Windows como las aplicaciones para la 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 solamente registre un nombre de esquema de URI si espera manejar todos los lanzamientos 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 en el esquema de URI mailto debería abrirse a un nuevo mensaje de correo electrónico con el fin de que el usuario pueda redactar un nuevo correo electrónico. Para obtener más información sobre las asociaciones de URI, consulta Archivos, carpetas y bibliotecas.

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 URI de alsdk://.

API importantes

En este tema se usan las SIGUIENTES API:

Nota:

En Windows, 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. Consulte nombres de esquema de URI reservados y tipos de archivo para obtener una lista alfabética de esquemas de URI que no puede registrar para sus aplicaciones porque están reservados o prohibidos.

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. Así es como se indica que la aplicación gestiona el esquema de URI de alsdk.

  1. En el Explorador de soluciones de , haga doble clic en package.appxmanifest para abrir el diseñador de manifiestos. Seleccione la pestaña Declaraciones y, en el desplegable Declaraciones disponibles, seleccione Protocolo y luego 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 Establecer programas predeterminados en el Panel de control de . 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 Establecer programas predeterminados en el Panel de control de .
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 de Windows porque están reservadas o prohibidas.
ejecutable 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 con calificación completa del espacio de nombres de un tipo de Windows Runtime. Si no se especifica, se usa el punto de entrada de la aplicación.
La página de inicio La 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.
de 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 lanza con el nombre del esquema de URI. Los valores posibles para Vista deseada son predeterminado , UseLess, UseHalf, UseMoreo 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 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 el 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 esquema de URI alsdk.

    <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. Haz que coincida con el aspecto del icono de la aplicación y usa el color de fondo de la aplicación en lugar de hacer transparente el icono. Haga que el logotipo se extienda hasta el borde sin añadir márgenes. Pruebe los iconos en fondos blancos. Consulta Iconos y logotipos de la aplicación para más detalles sobre los iconos.

Paso 3: Controlar el evento activado

Nota:

En una aplicación WinUI, en App.OnLaunched (o de hecho en cualquier momento) puedes llamar a (AppInstance.GetActivatedEventArgs) para recuperar los argumentos de eventos activados y comprobar cómo se activó la aplicación. Consulta la migración de la funcionalidad del ciclo de vida de la aplicación para obtener más información sobre las diferencias de ciclo de vida entre las aplicaciones UWP y WinUI.

En las aplicaciones para UWP, 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
      }
   }
}
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 XAML no contendrá ningún contenido anterior que pueda haber en la ventana actual cuando la aplicación se suspenda. Las aplicaciones que deciden usar un solo frame de XAML para Launch y File Contracts 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.

Observaciones

Cualquier aplicación o sitio web puede usar el nombre del esquema de URI, incluidos los maliciosos. Por lo tanto, los datos que obtenga en el URI podrían proceder de un origen que no es de confianza. Recomendamos que nunca realice una acción permanente en función de los parámetros que reciba en la 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 una aplicación para UWP 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 frame 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 XAML no contendrá ningún contenido anterior que pueda haber en la ventana actual cuando la aplicación se suspenda.

Si decides que quieres que las aplicaciones usen un único Marco XAML para los Contratos de Inicio y Protocolo, borra las páginas en el Frame de diario de navegación antes de navegar a una nueva página. Cuando se inicia a través de un contrato de protocolo, considere incluir una interfaz de usuario en su aplicación que permita al usuario regresar al inicio de la aplicación.