Enlace Móvil para la continuidad de tareas entre dispositivos
Su aplicación móvil puede compartir mediante programación URL de sitios web recientes y vínculos a documentos con un equipo Windows que tenga configurado Enlace Móvil. Esta característica de continuidad de tareas está disponible en dispositivos Android integrados con la experiencia de "Vínculo a Windows".
Esta función solo está disponible en dispositivos compatibles para experiencias de Enlace Móvil.
En esta documentación se explica cómo integrar la aplicación con la API de continuidad de tareas de Enlace Móvil, incluidos los requisitos del escenario, el área expuesta y la aprobación de la característica de acceso limitado (LAF).
Obtenga más información sobre Enlace Móvil: Sincronización del smartphone con el equipo Windows.
La API de continuidad de tareas le permite sincronizar el contenido de la aplicación Android a través de un equipo Windows que tenga configurado Enlace Móvil. Se deben cumplir las condiciones siguientes para que se conceda acceso a esta API:
- Sincronizar direcciones URL web que sean direcciones URL válidas a las que pueda acceder el equipo Windows
- Sincronizar vínculos de documentos en la nube a los que pueda acceder el equipo Windows
- Sincronizar vínculos de documentos locales al equipo Windows a los que se deba poder acceder en el dispositivo móvil a través de la aplicación
- No sincronizar más de 60 veces por minuto
- No sincronizar el contenido si el usuario no está interactuando con la experiencia de la aplicación
Enlace Móvil expondrá el contenido sincronizado en el nodo Aplicaciones en "Usados recientemente" y "Sitios web recientes" y en un control flotante de notificación.
La continuidad de tareas de Enlace Móvil es una característica de acceso limitado (LAF). Para obtener acceso a esta API, deberá obtener la aprobación de Microsoft para interoperar con el paquete de "Vínculo a Windows" precargado en dispositivos móviles Android.
Para solicitar acceso, envíe un email wincrossdeviceapi@microsoft.com
con la información que se indica a continuación.
- Descripción de la experiencia de usuario
- Captura de pantalla de la aplicación en la que un usuario accede de forma nativa a documentos o web
- PackageId de la aplicación
- Vínculo de Google Play Store a la aplicación
Si se aprueba la solicitud, recibirá instrucciones sobre cómo obtener la característica. Las aprobaciones se basarán en la comunicación, siempre que el escenario cumpla con los Requisitos de escenario descritos anteriormente.
Al utilizar la API de continuidad de tareas de Enlace Móvil, Microsoft procesará y transferirá sus datos de acuerdo con el Contrato de servicios de Microsoft y la Declaración de privacidad de Microsoft. Los datos que se transfieren a los dispositivos vinculados del usuario se pueden procesar a través de los servicios en la nube de Microsoft para garantizar una transferencia fiable de datos entre dispositivos. Los datos administrados por esta API no se conservan mediante los servicios en la nube de Microsoft sujetos al control de usuario final.
El SDK entre dispositivos que integrará en el paquete garantiza que los datos proporcionados a la API solo se controlen mediante paquetes de Microsoft de confianza.
Para integrar la aplicación móvil Android con la API de continuidad de tareas de Enlace Móvil, deberá actualizar las declaraciones de manifiesto y, a continuación, enviar el contexto de la aplicación. Vea el ejemplo de códigos siguiente.
La aplicación debe registrar un receptor de difusión para que el proveedor de contexto de la aplicación entre dispositivos participe en el contrato. El registro debe estar en el manifiesto de la siguiente manera.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!--
If the app targets API 30 or higher, be sure to use the <queries>
and add com.microsoft.appmanager to the included packages.
-->
<queries>
<package android:name="com.microsoft.appmanager" />
</queries>
<application …
<!-- … -->
<!--
This is the receiver declaration for receiving broadcasts from LTW.
It needs to be exported with meta-data as this is checked for
The package before we send the broadcast.
-->
<receiver
android:name="com.microsoft.crossdevicesdk.continuity.AppContextBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.microsoft.crossdevice.appcontextrequest" />
</intent-filter>
<meta-data
android:name="com.microsoft.crossdevice.sampleProviderMetadataName"
android:value="true" />
</receiver>
</application>
</manifest>
Una vez agregadas las declaraciones de manifiesto, las aplicaciones asociadas pueden enviar su contexto de aplicación como se muestra en los ejemplos de código siguientes.
En este ejemplo se muestra cómo utilizar la interfaz de IAppContextEventHandler
con Java.
IAppContextEventHandler appContextEventHandler = new IAppContextEventHandler() {
@Override
public void onContextRequestReceived(ContextRequestInfo contextRequestInfo) {
Log.d(TAG, String.format("onContextRequestReceived, type:%s", contextRequestInfo.getType()));
//Not necessary to do following things in here, just
//make sure to send app context after receiving broadcast.
AppContext appContext = new AppContext();
//...
//set parameter
appContext.setType(ProtocolConstants.TYPE_APPLICATION_CONTEXT);
appContext.setCreateTime(System.currentTimeMillis());
appContext.setLastUpdatedTime(System.currentTimeMillis());
appContext.setTitle("New PowerPoint Presentation");
appContext.setExtras("{\"DocInfo\":\"[{\"timestamp\":1672,\"DocTitle\":\"Book Sharing\",\"Index\":\"8\"}]\"}");
//...
AppContextManager.INSTANCE.sendAppContext(getApplicationContext(),appContext);
}
@Override
public void onInvalidContextRequestReceived(@NonNull Throwable throwable) {
Log.e(TAG, String.format("onInvalidContextRequestReceived: " + throwable.getMessage()));
}
@Override
public void onSyncServiceDisconnected() {
Log.d(TAG, String.format("onSyncServiceDisconnected"));
}
};
AppContextManager.INSTANCE.setAppContextEventHandler(appContextEventHandler);
En este ejemplo se muestra cómo utilizar una expresión de objeto para implementar la interfaz de IAppContextEventHandler
con Kotlin.
val appContextEventHandler = object : IAppContextEventHandler {
override fun onContextRequestReceived(contextRequestInfo: ContextRequestInfo) {
Log.d(TAG, String.format("onContextRequestReceived, type:%s", contextRequestInfo.type));
//Not necessary to do following things in here, just
//make sure to send app context after receiving broadcast.
var appContext = AppContext()
//...
//set parameter
appContext.type = ProtocolConstants.TYPE_APPLICATION_CONTEXT
appContext.createTime = System.currentTimeMillis()
appContext.lastUpdatedTime = System.currentTimeMillis()
appContext.setTitle("New PowerPoint Presentation")
appContext.setExtras("{\"DocInfo\":\"[{\"timestamp\":1672,\"DocTitle\":\"Book Sharing\",\"Index\":\"8\"}]\"}")
//...
AppContextManager.sendAppContext(applicationContext,appContext)
}
override fun onInvalidContextRequestReceived(throwable: Throwable) {
Log.e(TAG, String.format("onInvalidContextRequestReceived: " + throwable.message))
}
override fun onSyncServiceDisconnected() {
Log.d(TAG, String.format("onSyncServiceDisconnected"))
}
}
AppContextManager.setAppContextEventHandler(appContextEventHandler)
El protocolo es una difusión sencilla que se envía desde "Vínculo a Windows" a cada uno de los paquetes que admiten un tipo específico de característica de contexto de aplicación cuando "Vínculo a Windows" está listo para obtener el contexto de la aplicación.
Campo de intención | Llave | Value |
---|---|---|
Action | N/D | com.microsoft.crossdevice.appcontextrequest Se ha corregido el vínculo a Windows. El solicitante será com.microsoft.appmanager |
Extras (agrupación) | version |
2.0 (versión [secundaria].[principal]) |
Extras (agrupación) | contentProviderUri |
content://com.microsoft.taskcontinuity/b695d1d8 Se genera de forma única para cada paquete. |
Extras (agrupación) | requestedContextType |
Si se proporciona, indique qué tipo de contexto de aplicación se solicita. Se trata de una marca binaria, por ahora tenemos dos tipos... Contexto de aplicación: 0x01 y contexto del historial del explorador: 0x02. |
Después de recibir la difusión, el SDK se encargará de la validación y control de la información. Lo que se espera de los paquetes que reciben la difusión es que envíen el contexto de la aplicación para vincular con Windows. Las aplicaciones asociadas deben proporcionar los siguientes valores al enviar contexto de la aplicación:
Llave | Value | Información adicional |
---|---|---|
type [necesario] |
Marca binaria que indica qué tipo de contexto de aplicación se envía a LTW. El valor debe ser coherente con requestedContextType . |
|
createTime [necesario] |
Marca de tiempo que representa la hora de creación del contexto de la aplicación. | |
lastUpdatedTime [necesario] |
Marca de tiempo que representa la hora de la última actualización del contexto de la aplicación. | Cada vez que se actualizan los campos del contexto de la aplicación, se debe registrar la hora de actualización. |
teamId [opcional] |
Se usa para identificar la organización o el grupo al que pertenece la aplicación. | |
intentUri [opcional] |
Se usa para indicar qué aplicación puede continuar el contexto de la aplicación entregado desde el dispositivo de origen. | |
appId [opcional] |
El paquete de la aplicación para la que es el contexto. | Solo los proveedores de servicios de contexto deben usarlo. Consulte la documentación de Java. Si se omite, se usará el paquete del proveedor de respuesta de llamada. |
title [opcional] |
Título de este contexto de aplicación, como un nombre de documento o un título de página web. | |
weblink [opcional] |
Dirección URL de la página web que se va a cargar en un explorador para continuar con el contexto de la aplicación. | |
preview [opcional] |
Bytes de la imagen de vista previa que pueden representar el contexto de la aplicación. | |
extras [opcional] |
Objeto de par clave-valor que contiene información de estado específica de la aplicación necesaria para continuar un contexto de aplicación en el dispositivo continuo. | Debe proporcionar cuándo el contexto de la aplicación tiene sus datos únicos. |
LifeTime [opcional] |
Duración del contexto de la aplicación en milisegundos. | Solo se usa para escenarios en curso, si no se establece, el valor predeterminado es -1. |
Para que sea compatible con la característica anterior de "Continuidad del explorador" mediante el SDK de X-Device 1.0, tenemos otros dos métodos adicionales agregados. Se deben proporcionar los siguientes valores al usar esta característica:
Campo de intención | Llave | Value |
---|---|---|
browserContextEmptyFlag [opcional] |
Marca para indicar si el contexto del explorador está vacío. | Solo es aplicable a la característica Continuidad del explorador. |
browserHistory [opcional] |
Contexto del historial de exploración de la aplicación. | Solo es aplicable a la característica Continuidad del explorador. Actualmente, se recomienda proporcionar hasta 3 URI. Si se proporcionan más, se omitirán. |
Las aplicaciones asociadas pueden llamar al addBrowserContext
método para agregar el historial del explorador.
Se deben proporcionar los siguientes valores al agregar el historial del explorador:
Llave | Value |
---|---|
browserWebUri |
Un URI web que se abrirá en el explorador en el equipo. |
(http: o https:) | |
title |
El título de la página web. |
timestamp |
Marca de tiempo en que la página web se abrió por primera vez o se actualizó por última vez. |
favIcon [opcional] |
En general, el icono de favoritos de la página web en bytes debe ser pequeño. |
Busque información sobre cómo integrar el SDK entre dispositivos de Windows en el proyecto en el repositorio de Windows entre dispositivos en GitHub.
Para obtener una lista de las preguntas más frecuentes, consulte Preguntas más frecuentes sobre Enlace Móvil.
Comentarios de Windows developer
Windows developer es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: