Sinkronisasi dan pembaruan perangkat untuk Menyimpan aplikasi perangkat di Windows 8.1

Di Windows 8.1, aplikasi UWP Anda dapat menggunakan tugas latar belakang perangkat untuk menyinkronkan data di perangkat periferal Anda. Jika aplikasi Anda dikaitkan dengan metadata perangkat, aplikasi perangkat UWP tersebut juga dapat menggunakan agen latar belakang perangkat untuk melakukan pembaruan perangkat, seperti pembaruan firmware. Agen latar belakang perangkat tunduk pada kebijakan yang memastikan persetujuan pengguna dan membantu mempertahankan masa pakai baterai saat perangkat sedang disinkronkan dan diperbarui.

Untuk melakukan operasi sinkronisasi dan pembaruan perangkat, buat tugas latar belakang perangkat yang masing-masing menggunakan DeviceUseTrigger dan DeviceServicingTrigger. Untuk mempelajari bagaimana hal ini dilakukan dengan sampel perangkat USB Kustom, lihat Membuat tugas latar belakang perangkat.

Catatan

API perangkat Windows Runtime tidak memerlukan metadata perangkat. Itu berarti aplikasi Anda tidak perlu menjadi aplikasi perangkat UWP untuk menggunakannya. Aplikasi UWP dapat menggunakan API ini untuk mengakses USB, Perangkat Antarmuka Manusia (HID), perangkat Bluetooth, dan banyak lagi. Untuk informasi selengkapnya, lihat Mengintegrasikan perangkat.

Gambaran umum tugas latar belakang perangkat

Saat pengguna memindahkan aplikasi UWP Anda di luar layar, Windows menangguhkan aplikasi Anda dalam memori. Ini memungkinkan aplikasi lain memiliki latar depan. Ketika aplikasi ditangguhkan, aplikasi berada dalam memori dan Windows telah menghentikannya agar tidak berjalan. Ketika ini terjadi, tanpa bantuan tugas latar belakang perangkat, operasi perangkat yang sedang berlangsung seperti sinkronisasi dan pembaruan akan terganggu. Windows 8.1 menyediakan dua pemicu tugas latar belakang baru yang memungkinkan aplikasi Anda melakukan operasi sinkronisasi dan pembaruan yang berjalan lama di perangkat periferal Anda dengan aman di latar belakang, bahkan jika aplikasi Anda ditangguhkan: DeviceUseTrigger dan DeviceServicingTrigger. Untuk informasi selengkapnya tentang penangguhan aplikasi, lihat Meluncurkan, memulai kembali, dan multitugas.

Pemicu tugas latar belakang Memerlukan metadata perangkat Deskripsi
DeviceUseTrigger No Memungkinkan operasi sinkronisasi jangka panjang ke atau dari perangkat periferal Anda saat aplikasi Anda ditangguhkan. Menyinkronkan perangkat Anda di latar belakang mengharuskan pengguna Anda telah menyetujui sinkronisasi latar belakang oleh aplikasi Anda. Perangkat Anda juga harus terhubung atau dipasangkan dengan PC, dengan I/O aktif, dan diizinkan maksimal 10 menit aktivitas latar belakang. Detail selengkapnya tentang penegakan kebijakan dijelaskan nanti dalam topik ini.
DeviceServicingTrigger Ya nables pembaruan perangkat yang berjalan lama, misalnya transfer pengaturan atau pembaruan firmware, saat aplikasi Anda ditangguhkan. Memperbarui perangkat Anda di latar belakang memerlukan persetujuan pengguna setiap kali tugas latar belakang digunakan. Tidak seperti tugas latar belakang DeviceUseTrigger, tugas latar belakang DeviceServicingTrigger memungkinkan boot ulang perangkat dan memutuskan sambungan dan memungkinkan maksimum 30 menit aktivitas latar belakang. Detail selengkapnya tentang penegakan kebijakan dijelaskan nanti dalam topik ini.

DeviceServicingTrigger memerlukan metadata perangkat karena aplikasi harus ditentukan sebagai aplikasi istimewa untuk melakukan operasi pembaruan perangkat.

Hak istimewa aplikasi

Beberapa operasi perangkat penting, seperti pembaruan perangkat yang berjalan lama, hanya dapat dilakukan oleh aplikasi istimewa. Aplikasi istimewa adalah aplikasi yang telah diizinkan produsen perangkat untuk melakukan operasi tersebut. Metadata perangkat menentukan aplikasi mana, jika ada, yang telah ditetapkan sebagai aplikasi istimewa untuk perangkat.

Saat membuat metadata perangkat Anda dengan wizard metadata perangkat, tentukan aplikasi Anda di halaman Tentukan informasi aplikasi perangkat UWP. Untuk informasi selengkapnya, lihat Langkah 2: Membuat metadata perangkat untuk aplikasi perangkat UWP Anda.

Protokol yang Didukung

Tugas latar belakang perangkat yang menggunakan DeviceUseTrigger dan DeviceServicingTrigger memungkinkan aplikasi Anda berkomunikasi dengan perangkat periferal melalui protokol yang tidak didukung oleh tugas yang dipicu sistem yang biasanya digunakan oleh aplikasi UWP.

Protokol DeviceServicingTrigger DeviceUseTrigger Pemicu sistem
USB deviceservicingtrigger supports usb. deviceusetrigger supports usb system triggers do not support usb
HID deviceservicingtrigger supports hid. deviceusetrigger supports hid system triggers do not support hid
Bluetooth RFCOMM deviceservicingtrigger supports bluetooth rfcomm. deviceusetrigger supports bluetooth rfcomm system triggers do not support bluetooth rfcomm
Bluetooth GATT deviceservicingtrigger supports bluetooth gatt. deviceusetrigger supports bluetooth gatt system triggers do not support bluetooth gatt
MTP deviceservicingtrigger supports mtp. deviceusetrigger does not support mtp system triggers do not support mtp
Jaringan berkabel deviceservicingtrigger supports network wired. deviceusetrigger does not support network wired system triggers do not support network wired
Wi-Fi Jaringan deviceservicingtrigger supports networked wi-fi. deviceusetrigger does not support networked wi-fi system triggers do not support network wi-fi
IDeviceIOControl deviceservicingtrigger supports ideviceiocontrol. deviceusetrigger does not support ideviceiocontrol system triggers do not support ideviceiocontrol

Mendaftarkan tugas latar belakang dalam manifes paket aplikasi

Aplikasi Anda akan melakukan operasi sinkronisasi dan pembaruan dalam kode yang berjalan sebagai bagian dari tugas latar belakang. Kode ini disematkan di kelas Runtime Windows yang mengimplementasikan IBackgroundTask (atau di halaman JavaScript khusus untuk aplikasi JavaScript). Untuk menggunakan tugas latar belakang perangkat, aplikasi Anda harus mendeklarasikannya dalam file manifes aplikasi dari aplikasi latar depan, seperti yang dilakukannya untuk tugas latar belakang yang dipicu sistem.

Dalam contoh file manifes paket aplikasi ini, DeviceLibrary.SyncContent dan DeviceLibrary.UpdateFirmware adalah titik masuk dari aplikasi latar depan. DeviceLibrary.SyncContent adalah titik masuk untuk tugas latar belakang yang menggunakan DeviceUseTrigger. DeviceLibrary.UpdateFirmware adalah titik masuk untuk tugas latar belakang yang menggunakan DeviceServicingTrigger.

<Extensions>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
    <BackgroundTasks>
      <m2:Task Type="deviceUse" /> 
    </BackgroundTasks>
  </Extension>
  <Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.UpdateFirmware">
    <BackgroundTasks>
      <m2:Task Type="deviceServicing" /> 
    </BackgroundTasks>
  </Extension>
</Extensions>

Menggunakan perangkat Anda dengan tugas latar belakang perangkat

Untuk mengembangkan aplikasi Anda untuk memanfaatkan tugas latar belakang DeviceUseTrigger dan DeviceServicingTrigger, Anda mengikuti serangkaian langkah dasar ini. Untuk informasi selengkapnya tentang tugas latar belakang, lihat Mendukung aplikasi Anda dengan tugas latar belakang.

  1. Aplikasi Anda mendaftarkan tugas latar belakangnya di manifes aplikasi dan menyematkan kode tugas latar belakang di kelas Windows Runtime yang mengimplementasikan IBackgroundTask atau di halaman JavaScript khusus untuk aplikasi JavaScript.

  2. Saat aplikasi Anda dimulai, aplikasi akan membuat dan mengonfigurasi objek pemicu perangkat dengan jenis yang sesuai, baik DeviceUseTrigger atau DeviceServicingTrigger, dan menyimpan instans pemicu untuk digunakan di masa mendatang.

  3. Aplikasi Anda memeriksa apakah tugas latar belakang telah didaftarkan sebelumnya dan, jika tidak, mendaftarkannya terhadap pemicu perangkat. Perhatikan bahwa aplikasi Anda tidak diizinkan untuk mengatur kondisi pada tugas yang terkait dengan pemicu ini.

  4. Saat aplikasi Anda perlu memicu tugas latar belakang, aplikasi memanggil metode aktivasi RequestAsync pada objek pemicu perangkat.

  5. Tugas latar belakang Anda tidak dibatasi seperti tugas latar belakang sistem lainnya (tidak ada kuota waktu CPU) tetapi akan berjalan dengan prioritas yang berkurang untuk menjaga aplikasi latar depan tetap responsif.

  6. Windows kemudian akan memvalidasi, berdasarkan jenis pemicu, bahwa kebijakan yang diperlukan telah terpenuhi, termasuk meminta persetujuan pengguna untuk operasi sebelum memulai tugas latar belakang.

  7. Windows memantau kondisi sistem dan runtime tugas dan, jika perlu, membatalkan tugas jika kondisi yang diperlukan tidak lagi terpenuhi.

  8. Saat tugas latar belakang melaporkan kemajuan atau penyelesaian, aplikasi Anda akan menerima peristiwa ini melalui kemajuan dan menyelesaikan peristiwa pada tugas terdaftar.

Poin penting yang perlu dipertimbangkan saat menggunakan tugas latar belakang perangkat

  • Kemampuan untuk secara terprogram memicu tugas latar belakang yang menggunakan DeviceUseTrigger dan DeviceServicingTrigger diperkenalkan di Windows 8.1 dan hanya terbatas pada tugas latar belakang perangkat.

  • Kebijakan tertentu diberlakukan oleh Windows untuk memastikan persetujuan pengguna saat memperbarui perangkat periferal mereka. Polisi tambahan diberlakukan untuk mempertahankan masa pakai baterai pengguna saat menyinkronkan dan memperbarui perangkat periferal.

  • Tugas latar belakang yang menggunakan DeviceUseTrigger dan DeviceServicingTrigger mungkin dibatalkan oleh Windows ketika persyaratan kebijakan tertentu tidak lagi terpenuhi, termasuk jumlah maksimum waktu latar belakang (waktu jam dinding). Penting untuk mempertimbangkan persyaratan kebijakan ini saat menggunakan tugas latar belakang ini untuk berinteraksi dengan perangkat periferal Anda.

Tip

Untuk melihat cara kerja tugas latar belakang ini, unduh sampel. Sampel perangkat USB Kustom menunjukkan tugas latar belakang yang melakukan sinkronisasi perangkat dengan DeviceUseTrigger.

Saat menggunakan DeviceUseTrigger atau DeviceServicingTrigger, Windows 8.1 memberlakukan kebijakan untuk memastikan bahwa pengguna telah memberikan izin aplikasi Anda untuk mengakses perangkat mereka di latar belakang untuk menyinkronkan dan memperbarui konten. Kebijakan juga diberlakukan untuk membantu mempertahankan masa pakai baterai pengguna saat menyinkronkan dan memperbarui perangkat periferal.

Tugas latar belakang yang menggunakan DeviceUseTrigger memerlukan persetujuan pengguna satu kali yang memungkinkan aplikasi Anda disinkronkan di latar belakang. Persetujuan ini disimpan per aplikasi dan model per perangkat. Pengguna menyetujui untuk mengizinkan aplikasi mengakses perangkat di latar belakang seperti yang mereka setujui untuk mengizinkan aplikasi mengakses perangkat saat aplikasi berada di latar depan.

Dalam contoh berikut, aplikasi bernama Tailspin Toys mendapatkan izin pengguna untuk disinkronkan di latar belakang.

device sync user consent message dialog.

Jika pengguna berubah pikiran nanti, mereka dapat mencabut izin di Pengaturan.

device sync permissions setting dialog.

Tidak seperti yang menggunakan DeviceUseTrigger, tugas latar belakang yang menggunakan tugas latar belakang DeviceServicingTrigger memerlukan persetujuan pengguna setiap kali tugas latar belakang dipicu. Dan persetujuan ini tidak disimpan seperti untuk DeviceUseTrigger. Ini karena operasi berisiko lebih tinggi yang terlibat dengan pembaruan firmware perangkat dan jumlah waktu yang lebih lama yang diperlukan untuk pembaruan perangkat. Selain mendapatkan persetujuan pengguna, Windows akan memberi pengguna informasi tentang pembaruan perangkat , seperti peringatan untuk menjaga perangkat tetap terhubung sepanjang pembaruan dan memastikan bahwa PC ditagih, dan perkiraan waktu operasi yang berjalan (jika aplikasi Anda menyediakannya).

device update user consent message dialog.

Pembatasan frekuensi dan latar depan

Tidak ada batasan pada frekuensi aplikasi Anda dapat memulai operasi, tetapi aplikasi Anda hanya dapat menjalankan satu operasi tugas latar belakang DeviceUseTrigger atau DeviceServicingTrigger pada satu waktu (ini tidak memengaruhi jenis tugas latar belakang lainnya), dan dapat memulai tugas latar belakang hanya saat aplikasi Anda berada di latar depan. Saat aplikasi Anda tidak berada di latar depan, aplikasi tidak dapat memulai tugas latar belakang dengan DeviceUseTrigger atau DeviceServicingTrigger. Aplikasi Anda tidak dapat memulai tugas latar belakang perangkat kedua sebelum tugas latar belakang pertama selesai.

Kebijakan tugas latar belakang perangkat

Windows memberlakukan kebijakan saat aplikasi Anda menggunakan tugas latar belakang perangkat. Jika kebijakan ini tidak terpenuhi, tugas latar belakang menggunakan DeviceUseTrigger atau DeviceServicingTrigger mungkin dibatalkan. Penting untuk mempertimbangkan persyaratan kebijakan ini saat menggunakan tugas latar belakang perangkat untuk berinteraksi dengan perangkat periferal Anda.

Kebijakan inisiasi tugas

Tabel ini menunjukkan kebijakan inisiasi tugas mana yang berlaku untuk setiap pemicu tugas latar belakang.

Kebijakan DeviceServicingTrigger DeviceUseTrigger
Aplikasi UWP Anda berada di latar depan saat memicu tugas latar belakang. policy applies. policy applies
Perangkat Anda terpasang pada sistem (atau dalam rentang untuk perangkat nirkabel). policy applies. policy applies
Tugas latar belakang Anda menggunakan waktu CPU 400ms (dengan asumsi CPU 1GHz) setiap menit ketika layar dikunci, atau setiap 5 menit ketika layar tidak dikunci. Kegagalan untuk memenuhi kebijakan ini dapat mengakibatkan pembatalan tugas Anda. policy applies. policy applies
Perangkat Anda dapat diakses oleh aplikasi menggunakan API periferal perangkat (API Runtime Windows untuk USB, HID, Bluetooth, dan sebagainya). Jika aplikasi Anda tidak dapat mengakses perangkat, akses ke tugas latar belakang ditolak. policy applies. policy applies
Titik entri tugas latar belakang yang disediakan oleh aplikasi terdaftar dalam manifes paket aplikasi. policy applies. policy applies
Pengguna telah memberikan izin tugas untuk melanjutkan. Setiap saat. Pertama kali, lalu dikontrol oleh izin aplikasi.
Perkiraan waktu yang disediakan oleh aplikasi kurang dari 30 menit. policy applies. policy does not apply
Aplikasi ini ditentukan sebagai aplikasi istimewa untuk perangkat. (Harus ada kecocokan ID aplikasi lengkap dengan daftar aplikasi istimewa dalam metadata perangkat kontainer perangkat.) policy applies. policy does not apply
Komputer memiliki kapasitas baterai lebih besar dari 33% yang tersisa atau menggunakan daya AC. policy applies. policy does not apply
Hanya satu tugas latar belakang perangkat yang berjalan per jenis operasi. policy check applies. policy applies

Pemeriksaan kebijakan runtime

Windows memberlakukan persyaratan kebijakan runtime berikut saat tugas Anda berjalan di latar belakang. Jika salah satu persyaratan runtime berhenti benar, Windows akan membatalkan tugas latar belakang perangkat Anda.

Tabel ini menunjukkan kebijakan runtime mana yang berlaku untuk setiap pemicu tugas latar belakang.

Pemeriksaan kebijakan DeviceServicingTrigger DeviceUseTrigger
Batas waktu jam dinding – jumlah total waktu tugas aplikasi Anda dapat berjalan di latar belakang. 30 menit 10 menit
Perangkat Anda terpasang pada sistem (atau dalam rentang untuk perangkat nirkabel). policy does not apply. policy check applies
Tugas melakukan I/O reguler ke perangkat (1 I/O setiap 5 detik). policy does not apply. policy check applies
Aplikasi belum membatalkan tugas. policy check applies. policy check applies
Aplikasi belum keluar. policy check applies. policy check applies

Praktik terbaik

Berikut ini adalah praktik terbaik untuk aplikasi perangkat UWP yang menggunakan tugas latar belakang perangkat.

Model pemrograman tugas latar belakang perangkat

Menggunakan tugas latar belakang DeviceUseTrigger atau DeviceServicingTrigger dari aplikasi Anda memastikan bahwa setiap operasi sinkronisasi atau pembaruan perangkat yang dimulai dari aplikasi latar depan Anda terus berjalan di latar belakang jika pengguna Anda beralih aplikasi dan aplikasi latar depan Anda ditangguhkan oleh Windows. Kami menyarankan agar Anda mengikuti model keseluruhan ini untuk mendaftarkan, memicu, dan membatalkan pendaftaran tugas latar belakang Anda:

  1. Daftarkan tugas latar belakang sebelum meminta pemicu.

  2. Koneksi penanganan aktivitas kemajuan dan penyelesaian ke pemicu Anda. Saat aplikasi Anda kembali dari penangguhan, Windows akan memberi aplikasi Anda peristiwa kemajuan atau penyelesaian antrean yang dapat digunakan untuk menentukan status tugas latar belakang Anda.

  3. Tutup objek perangkat terbuka saat Anda memicu tugas latar belakang DeviceUseTrigger atau DeviceServicingTrigger sehingga perangkat tersebut bebas dibuka dan digunakan oleh tugas latar belakang Anda.

  4. Daftarkan pemicu.

  5. Saat tugas selesai, batalkan pendaftaran tugas latar belakang. Saat tugas latar belakang selesai, Anda dapat membatalkan pendaftaran tugas latar belakang dan membuka kembali perangkat dan menggunakannya secara teratur dari aplikasi UWP Anda.

  6. Daftar untuk peristiwa pembatalan dari kelas tugas latar belakang Anda. Mendaftar untuk peristiwa pembatalan akan memungkinkan kode tugas latar belakang Anda untuk menghentikan tugas latar belakang yang berjalan dengan bersih saat dibatalkan oleh Windows atau aplikasi latar depan Anda.

  7. Saat keluar dari aplikasi (bukan penangguhan), batalkan pendaftaran dan batalkan tugas yang sedang berjalan.

    • Saat aplikasi Anda keluar, batalkan pendaftaran dan batalkan tugas yang sedang berjalan.

    • Saat aplikasi Anda keluar, tugas latar belakang Anda akan dibatalkan dan penanganan aktivitas yang ada akan terputus dari tugas latar belakang yang ada. Ini mencegah Anda menentukan status tugas latar belakang Anda. Membatalkan pendaftaran dan membatalkan tugas latar belakang akan memungkinkan kode pembatalan Anda menghentikan tugas latar belakang Anda dengan bersih.

Tip

Untuk deskripsi terperinci tentang bagaimana hal ini dilakukan dengan sampel perangkat USB Kustom, lihat Membuat tugas latar belakang perangkat.

Membatalkan tugas latar belakang

Untuk membatalkan tugas yang berjalan di latar belakang dari aplikasi latar depan Anda, gunakan metode Batalkan pendaftaran pada objek BackgroundTaskRegistration yang Anda gunakan di aplikasi Anda untuk mendaftarkan tugas latar belakang DeviceUseTrigger atau DeviceServicingTrigger . Membatalkan pendaftaran tugas latar belakang Anda dengan menggunakan metode Batalkan pendaftaran pada BackgroundTaskRegistration akan menyebabkan infrastruktur tugas latar belakang membatalkan tugas latar belakang Anda.

Metode Batalkan pendaftaran juga mengambil nilai benar atau salah Boolean untuk menunjukkan apakah saat ini menjalankan instans tugas latar belakang Anda harus dibatalkan tanpa mengizinkannya selesai. Untuk informasi selengkapnya, lihat referensi API untuk BackgroundTaskRegistration.Unregister.

Membuat tugas latar belakang perangkat

Sampel perangkat USB kustom

Meluncurkan, melanjutkan, dan multitugas

Mendukung aplikasi Anda dengan tugas latar belakang