Baca dalam bahasa Inggris

Bagikan melalui


Meluncurkan aplikasi di perangkat jarak jauh

Artikel ini menjelaskan cara meluncurkan aplikasi Windows di perangkat jarak jauh.

Mulai Windows 10, versi 1607, aplikasi UWP dapat meluncurkan aplikasi UWP atau aplikasi desktop Windows dari jarak jauh di perangkat lain yang juga menjalankan Windows 10, versi 1607 atau yang lebih baru, asalkan kedua perangkat masuk dengan Akun Microsoft (MSA) yang sama. Ini adalah kasus penggunaan paling sederhana dari Project Roma.

Fitur peluncuran jarak jauh memungkinkan pengalaman pengguna berorientasi tugas; pengguna dapat memulai tugas pada satu perangkat dan menyelesaikannya di perangkat lain. Misalnya, jika pengguna mendengarkan musik di ponsel mereka di mobil mereka, mereka kemudian dapat menyerahkan fungsionalitas pemutaran ke Xbox One mereka ketika mereka tiba di rumah. Peluncuran jarak jauh memungkinkan aplikasi untuk meneruskan data kontekstual ke aplikasi jarak jauh yang diluncurkan, untuk mengambil tempat tugas ditinggalkan.

Penyiapan awal

Menambahkan kemampuan remoteSystem

Agar aplikasi Anda dapat meluncurkan aplikasi di perangkat jarak jauh, Anda harus menambahkan kemampuan ke remoteSystem manifes paket aplikasi Anda. Anda dapat menggunakan perancang manifes paket untuk menambahkannya dengan memilih Sistem Jarak Jauh pada tab Kemampuan, atau Anda dapat menambahkan baris berikut secara manual ke file Package.appxmanifest proyek Anda.

<Capabilities>
   <uap3:Capability Name="remoteSystem"/>
</Capabilities>

Mengaktifkan berbagi lintas perangkat

Selain itu, perangkat klien harus diatur untuk mengizinkan berbagi lintas perangkat. Pengaturan ini, yang diakses di Pengaturan: Berbagi pengalaman>Bersama Sistem>di seluruh perangkat, diaktifkan secara default.

halaman pengaturan pengalaman bersama

Menemukan perangkat jarak jauh

Anda harus terlebih dahulu menemukan perangkat yang ingin Anda sambungkan. Temukan perangkat jarak jauh membahas cara melakukan ini secara rinci. Kita akan menggunakan pendekatan sederhana di sini yang forgoes pemfilteran berdasarkan perangkat atau jenis konektivitas. Kami akan membuat pengamat sistem jarak jauh yang mencari perangkat jarak jauh, dan menulis handler untuk peristiwa yang dinaikkan saat perangkat ditemukan atau dihapus. Ini akan memberi kita koleksi perangkat jarak jauh.

Kode dalam contoh ini mengharuskan Anda memiliki using Windows.System.RemoteSystems pernyataan dalam file kelas Anda.

private async Task BuildDeviceList()
{
    RemoteSystemAccessStatus accessStatus = await RemoteSystem.RequestAccessAsync();

    if (accessStatus == RemoteSystemAccessStatus.Allowed)
    {
        m_remoteSystemWatcher = RemoteSystem.CreateWatcher();

        // Subscribing to the event raised when a new remote system is found by the watcher.
        m_remoteSystemWatcher.RemoteSystemAdded += RemoteSystemWatcher_RemoteSystemAdded;

        // Subscribing to the event raised when a previously found remote system is no longer available.
        m_remoteSystemWatcher.RemoteSystemRemoved += RemoteSystemWatcher_RemoteSystemRemoved;

        m_remoteSystemWatcher.Start();
    }
}

Hal pertama yang harus Anda lakukan sebelum melakukan peluncuran jarak jauh adalah panggilan RemoteSystem.RequestAccessAsync(). Periksa nilai pengembalian untuk memastikan aplikasi Anda diizinkan untuk mengakses perangkat jarak jauh. Salah satu alasan pemeriksaan ini dapat gagal adalah jika Anda belum menambahkan remoteSystem kemampuan ke aplikasi Anda.

Penanganan aktivitas pengamat sistem dipanggil ketika perangkat yang dapat kami sambungkan ditemukan atau tidak lagi tersedia. Kami akan menggunakan penanganan aktivitas ini untuk menyimpan daftar perangkat terbaru yang dapat kami sambungkan.

private void RemoteSystemWatcher_RemoteSystemRemoved(
    RemoteSystemWatcher sender, RemoteSystemRemovedEventArgs args)
{
    if ( m_deviceMap.ContainsKey(args.RemoteSystemId))
    {
        m_deviceList.Remove(m_deviceMap[args.RemoteSystemId]);
        m_deviceMap.Remove(args.RemoteSystemId);
    }
}

private void RemoteSystemWatcher_RemoteSystemAdded(
    RemoteSystemWatcher sender, RemoteSystemAddedEventArgs args)
{
    m_deviceList.Add(args.RemoteSystem);
    m_deviceMap.Add(args.RemoteSystem.Id, args.RemoteSystem);
}

Kami akan melacak perangkat dengan ID sistem jarak jauh menggunakan Kamus. ObservableCollection digunakan untuk menyimpan daftar perangkat yang dapat kita hitung. ObservableCollection juga memudahkan untuk mengikat daftar perangkat ke UI, meskipun kami tidak akan melakukannya dalam contoh ini.

private RemoteSystemWatcher m_remoteSystemWatcher;
private ObservableCollection<RemoteSystem> m_deviceList = new ObservableCollection<RemoteSystem>();
private Dictionary<string, RemoteSystem> m_deviceMap = new Dictionary<string, RemoteSystem>();

Tambahkan panggilan ke BuildDeviceList() dalam kode pengaktifan aplikasi sebelum Anda mencoba meluncurkan aplikasi jarak jauh.

Meluncurkan aplikasi di perangkat jarak jauh

Luncurkan aplikasi dari jarak jauh dengan meneruskan perangkat yang ingin Anda sambungkan ke REMOTELauncher.LaunchUriAsync API. Ada tiga kelebihan beban untuk metode ini. Yang paling sederhana, yang ditunjukkan contoh ini, menentukan URI yang akan mengaktifkan aplikasi di perangkat jarak jauh. Dalam contoh ini, URI membuka aplikasi Maps di komputer jarak jauh dengan tampilan 3D dari Space Needle.

Kelebihan remoteLauncher.LaunchUriAsync lainnya memungkinkan Anda menentukan opsi seperti URI situs web untuk melihat apakah tidak ada aplikasi yang sesuai yang dapat diluncurkan pada perangkat jarak jauh, dan daftar opsional nama keluarga paket yang dapat digunakan untuk meluncurkan URI pada perangkat jarak jauh. Anda juga dapat menyediakan data dalam bentuk pasangan kunci/nilai. Anda dapat meneruskan data ke aplikasi yang Anda aktifkan untuk memberikan konteks ke aplikasi jarak jauh, seperti nama lagu untuk diputar dan lokasi pemutaran saat ini saat Anda menyerahkan pemutaran dari satu perangkat ke perangkat lain.

Dalam skenario praktis, Anda mungkin menyediakan UI untuk memilih perangkat yang ingin Anda targetkan. Tetapi untuk menyederhanakan contoh ini, kita hanya akan menggunakan perangkat jarak jauh pertama dalam daftar.

if ( m_deviceList.Count > 0)
{
    RemoteSystem SelectedDevice = m_deviceList[0];
    RemoteLaunchUriStatus launchUriStatus = 
        await RemoteLauncher.LaunchUriAsync(
            new RemoteSystemConnectionRequest(SelectedDevice), 
            new Uri("bingmaps:?cp=47.6204~-122.3491&sty=3d&rad=200&pit=75&hdg=165"));
}

Objek RemoteLaunchUriStatus yang dikembalikan dari RemoteLauncher.LaunchUriAsync() menyediakan informasi tentang apakah peluncuran jarak jauh berhasil, dan jika tidak, alasannya.

Referensi API Sistem Jarak Jauh
Gambaran umum aplikasi dan perangkat yang terhubung (Project Rome)
Menemukan perangkat jarak jauh
Sampel Sistem Jarak Jauh menunjukkan cara menemukan sistem jarak jauh, meluncurkan aplikasi pada sistem jarak jauh, dan menggunakan layanan aplikasi untuk mengirim pesan antar aplikasi yang berjalan di dua sistem.