Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vaše aplikace může pomocí bezdrátové sítě, Bluetooth a cloudového připojení zjišťovat zařízení s Windows, která jsou přihlášená pomocí stejného účtu Microsoft jako zařízení zjišťování. Aby bylo možné zjistit, vzdálená zařízení nemusí mít nainstalovaný žádný speciální software.
Poznámka:
Tato příručka předpokládá, že už máte udělený přístup k funkci Vzdálené systémy pomocí kroků v Spuštění vzdálené aplikace.
Filtrování sady zjistitelných zařízení
Sadu zjistitelných zařízení můžete zúžit pomocí RemoteSystemWatcher s filtry. Filtry můžou rozpoznat typ zjišťování (proximální vs. místní síť vs. cloudové připojení), typ zařízení (stolní počítač, mobilní zařízení, Xbox, centrální jednotka a holografické) a stav dostupnosti (stav dostupnosti zařízení pro použití funkcí vzdáleného systému).
Objekty filtru musí být vytvořeny před inicializací objektu RemoteSystemWatcher nebo během ní, protože jsou předány jako parametr do jeho konstruktoru. Následující kód vytvoří filtr každého dostupného typu a pak je přidá do seznamu.
Poznámka:
Kód v těchto příkladech vyžaduje, abyste v souboru měli příkaz using Windows.System.RemoteSystems
.
private List<IRemoteSystemFilter> makeFilterList()
{
// construct an empty list
List<IRemoteSystemFilter> localListOfFilters = new List<IRemoteSystemFilter>();
// construct a discovery type filter that only allows "proximal" connections:
RemoteSystemDiscoveryTypeFilter discoveryFilter = new RemoteSystemDiscoveryTypeFilter(RemoteSystemDiscoveryType.Proximal);
// construct a device type filter that only allows desktop and mobile devices:
// For this kind of filter, we must first create an IIterable of strings representing the device types to allow.
// These strings are stored as static read-only properties of the RemoteSystemKinds class.
List<String> listOfTypes = new List<String>();
listOfTypes.Add(RemoteSystemKinds.Desktop);
listOfTypes.Add(RemoteSystemKinds.Phone);
// Put the list of device types into the constructor of the filter
RemoteSystemKindFilter kindFilter = new RemoteSystemKindFilter(listOfTypes);
// construct an availibility status filter that only allows devices marked as available:
RemoteSystemStatusTypeFilter statusFilter = new RemoteSystemStatusTypeFilter(RemoteSystemStatusType.Available);
// add the 3 filters to the listL
localListOfFilters.Add(discoveryFilter);
localListOfFilters.Add(kindFilter);
localListOfFilters.Add(statusFilter);
// return the list
return localListOfFilters;
}
Poznámka:
Hodnota filtru "proximal" nezaručuje stupeň fyzické blízkosti. Ve scénářích, které vyžadují spolehlivou fyzickou blízkost, použijte hodnotu RemoteSystemDiscoveryType.SpatiallyProximal ve filtru. Tento filtr v současné době umožňuje pouze zařízení, která jsou zjištěna pomocí Bluetooth. Nové mechanismy zjišťování a protokoly, které zaručují podporu fyzické blízkosti, budou zahrnuty i zde.
Ve třídě RemoteSystem existuje také vlastnost, která indikuje, zda zjištěné zařízení je ve skutečnosti ve fyzické blízkosti: RemoteSystem.IsAvailableBySpatialProximity.
Poznámka:
Pokud máte v úmyslu zjišťovat zařízení přes místní síť (určenou výběrem filtru typu zjišťování), musí vaše síť používat "soukromý" nebo "doménový" profil. Vaše zařízení nezjišťuje jiná zařízení přes "veřejnou" síť.
Jakmile se vytvoří seznam objektů IRemoteSystemFilter, lze jej předat do konstruktoru RemoteSystemWatcher.
// store filter list
List<IRemoteSystemFilter> listOfFilters = makeFilterList();
// construct watcher with the list
m_remoteSystemWatcher = RemoteSystem.CreateWatcher(listOfFilters);
Když je volána metoda Start sledovacího programu
- Zjistitelné pomocí proximálního připojení
- Jedná se o stolní počítač nebo telefon.
- Klasifikuje se jako dostupná.
Odtud je postup zpracování událostí, načtení objektů vzdáleného systému a připojení ke vzdáleným zařízením naprosto stejné jako v Spuštění vzdálené aplikace. Stručně řečeno, objekty RemoteSystem jsou uloženy jako vlastnosti objektů RemoteSystemAddedEventArgs, které se předávají při každé události RemoteSystemAdded.
Zjišťování zařízení podle vstupu adresy
Určitá zařízení možná nejsou přidružená k uživateli ani viditelná při skenování, ale pokud aplikace pro zjišťování používá přímou adresu, lze je stále dosáhnout. Třída HostName slouží k reprezentaci adresy vzdáleného zařízení. To se často ukládá ve formě IP adresy, ale je povoleno několik dalších formátů (podrobnosti najdete v konstruktoru Název hostitele).
Je-li poskytnut platný objekt HostName, načte se objekt RemoteSystem. Pokud jsou data adresy neplatná, vrátí se odkaz na objekt null
.
private async Task<RemoteSystem> getDeviceByAddressAsync(string IPaddress)
{
// construct a HostName object
Windows.Networking.HostName deviceHost = new Windows.Networking.HostName(IPaddress);
// create a RemoteSystem object with the HostName
RemoteSystem remotesys = await RemoteSystem.FindByHostNameAsync(deviceHost);
return remotesys;
}
Dotazování schopnosti ve vzdáleném systému
I když se liší od filtrování zjišťování, může být dotazování funkcí zařízení důležitou součástí procesu zjišťování. Pomocí metody RemoteSystem.GetCapabilitySupportedAsync můžete dotazovat nalezené vzdálené systémy ohledně podpory určitých funkcí, jako je připojení ke vzdálené relaci nebo sdílení prostorové entity (holografické). Pro seznam dotazovatelných schopností se podívejte na třídu KnownRemoteSystemCapabilities.
// Check to see if the given remote system can accept LaunchUri requests
bool isRemoteSystemLaunchUriCapable = remoteSystem.GetCapabilitySupportedAsync(KnownRemoteSystemCapabilities.LaunchUri);
Zjišťování mezi uživateli
Vývojáři mohou specifikovat zjišťování všech zařízení v blízkosti klientského zařízení, nejen zařízení registrovaných k témuž uživateli. To je implementováno pomocí speciálního filtru IRemoteSystemFilter, RemoteSystemAuthorizationKindFilter. Implementuje se stejně jako ostatní typy filtrů:
// Construct a user type filter that includes anonymous devices
RemoteSystemAuthorizationKindFilter authorizationKindFilter = new RemoteSystemAuthorizationKindFilter(RemoteSystemAuthorizationKind.Anonymous);
// then add this filter to the RemoteSystemWatcher
- Hodnota RemoteSystemAuthorizationKindAnonymní umožní zjišťování všech proximálních zařízení, a to i těch od nedůvěryhodných uživatelů.
- Hodnota SameUser filtruje zjišťování jenom na zařízení zaregistrovaná stejnému uživateli jako klientské zařízení. Toto je výchozí chování.
Kontrola nastavení sdílení mezi uživateli
Kromě výše uvedeného filtru zadaného v aplikaci zjišťování musí být klientské zařízení také nakonfigurované tak, aby umožňovalo sdílené prostředí ze zařízení přihlášených s jinými uživateli. Toto je systémové nastavení, které lze dotazovat pomocí statické metody ve třídě RemoteSystem:
if (!RemoteSystem.IsAuthorizationKindEnabled(RemoteSystemAuthorizationKind.Anonymous)) {
// The system is not authorized to connect to cross-user devices.
// Inform the user that they can discover more devices if they
// update the setting to "Anonymous".
}
Pokud chcete toto nastavení změnit, musí uživatel otevřít aplikaci Nastavení. V nabídce Systém>Sdílené zkušenosti>Sdílení mezi zařízeními je rozevírací seznam, ve kterém uživatel může určit, se kterými zařízeními může systém sdílet.