Lanjutkan aktivitas pengguna, bahkan di seluruh perangkat
Topik ini menjelaskan cara membantu pengguna melanjutkan apa yang mereka lakukan di aplikasi Anda di PC mereka, dan di seluruh perangkat.
Catatan
Mulai Juli 2021, pengguna yang memiliki riwayat aktivitas yang disinkronkan di seluruh perangkat Windows mereka melalui Akun Microsoft (MSA) mereka tidak akan lagi memiliki opsi untuk mengunggah aktivitas baru di Timeline. Mereka masih dapat menggunakan Garis Waktu dan melihat riwayat aktivitas mereka (informasi tentang aplikasi, situs web, dan file terbaru) di PC lokal mereka. Akun yang terhubung dengan AAD tidak akan terpengaruh.
Aktivitas dan Garis Waktu Pengguna
Waktu kami setiap hari tersebar di beberapa perangkat. Kami mungkin menggunakan ponsel kami saat berada di bus, PC di siang hari, lalu ponsel atau tablet di malam hari. Mulai dari Windows 10 Build 1803 atau yang lebih baru, membuat Aktivitas Pengguna membuat aktivitas tersebut muncul di Linimasa Windows dan di Penjemputan Cortana tempat saya meninggalkan fitur. Garis waktu adalah tampilan tugas kaya yang memanfaatkan Aktivitas Pengguna untuk menunjukkan tampilan kronologis tentang apa yang telah Anda kerjakan. Ini juga dapat mencakup apa yang Sedang Anda kerjakan di seluruh perangkat.
Demikian juga, menautkan ponsel ke PC Windows memungkinkan Anda untuk melanjutkan apa yang Anda lakukan sebelumnya di perangkat iOS atau Android Anda.
Anggap UserActivity sebagai sesuatu yang spesifik yang sedang digali pengguna dalam aplikasi Anda. Misalnya, jika Anda menggunakan pembaca RSS, UserActivity bisa menjadi umpan yang Anda baca. Jika Anda memainkan game, UserActivity bisa menjadi tingkat yang Anda mainkan. Jika Anda mendengarkan aplikasi musik, UserActivity bisa menjadi daftar putar yang Anda dengarkan. Jika Anda sedang mengerjakan dokumen, UserActivity bisa menjadi tempat Anda berhenti mengerjakannya, dan sebagainya. Singkatnya, UserActivity mewakili tujuan dalam aplikasi Anda sehingga memungkinkan pengguna untuk melanjutkan apa yang mereka lakukan.
Saat Anda terlibat dengan UserActivity dengan memanggil UserActivity.CreateSession, sistem membuat rekaman riwayat yang menunjukkan waktu mulai dan berakhir untuk UserActivity tersebut. Saat Anda berinteraksi kembali dengan UserActivity tersebut dari waktu ke waktu, beberapa rekaman riwayat direkam untuk itu.
Menambahkan Aktivitas Pengguna ke aplikasi Anda
UserActivity adalah unit keterlibatan pengguna di Windows. Ini memiliki tiga bagian: URI yang digunakan untuk mengaktifkan aplikasi tempat aktivitas berada, visual, dan metadata yang menjelaskan aktivitas.
- ActivationUri digunakan untuk melanjutkan aplikasi dengan konteks tertentu. Biasanya, tautan ini mengambil bentuk handler protokol untuk skema (misalnya, "my-app://page2?action=edit") atau AppUriHandler (misalnya,
http://contoso.com/page2?action=edit
). - VisualElements mengekspos kelas yang memungkinkan pengguna mengidentifikasi aktivitas secara visual dengan elemen judul, deskripsi, atau Kartu Adaptif.
- Terakhir, Konten adalah tempat Anda dapat menyimpan metadata untuk aktivitas yang dapat digunakan untuk mengelompokkan dan mengambil aktivitas dalam konteks tertentu. Seringkali, ini mengambil bentuk https://schema.org data.
Untuk menambahkan UserActivity ke aplikasi Anda:
- Buat objek UserActivity saat konteks pengguna Anda berubah dalam aplikasi (seperti navigasi halaman, tingkat permainan baru, dll.)
- Isi objek UserActivity dengan kumpulan minimum bidang yang diperlukan: ActivityId, ActivationUri, dan UserActivity.VisualElements.DisplayText.
- Tambahkan handler skema kustom ke aplikasi Anda sehingga dapat diaktifkan kembali oleh UserActivity.
UserActivity dapat diintegrasikan ke dalam aplikasi hanya dengan beberapa baris kode. Misalnya, bayangkan kode ini dalam MainPage.xaml.cs, di dalam kelas MainPage (catatan: mengasumsikan using Windows.ApplicationModel.UserActivities;
):
UserActivitySession _currentActivity;
private async Task GenerateActivityAsync()
{
// Get the default UserActivityChannel and query it for our UserActivity. If the activity doesn't exist, one is created.
UserActivityChannel channel = UserActivityChannel.GetDefault();
UserActivity userActivity = await channel.GetOrCreateUserActivityAsync("MainPage");
// Populate required properties
userActivity.VisualElements.DisplayText = "Hello Activities";
userActivity.ActivationUri = new Uri("my-app://page2?action=edit");
//Save
await userActivity.SaveAsync(); //save the new metadata
// Dispose of any current UserActivitySession, and create a new one.
_currentActivity?.Dispose();
_currentActivity = userActivity.CreateSession();
}
Baris pertama dalam metode di GenerateActivityAsync()
atas mendapatkan UserActivityChannel pengguna. Ini adalah umpan tempat aktivitas aplikasi ini akan dipublikasikan. Baris berikutnya mengkueri saluran aktivitas yang disebut MainPage
.
- Aplikasi Anda harus memberi nama aktivitas sewaktu-waktu ID yang sama dihasilkan setiap kali pengguna berada di lokasi tertentu di aplikasi. Misalnya, jika aplikasi Anda berbasis halaman, gunakan pengidentifikasi untuk halaman; jika berbasis dokumennya, gunakan nama dokumen (atau hash nama).
- Jika ada aktivitas yang ada di umpan dengan ID yang sama, aktivitas tersebut akan dikembalikan dari saluran dengan
UserActivity.State
diatur ke Diterbitkan). Jika tidak ada aktivitas dengan nama tersebut, dan aktivitas baru dikembalikan denganUserActivity.State
diatur ke Baru. - Aktivitas dilingkupkan ke aplikasi Anda. Anda tidak perlu khawatir tentang ID aktivitas yang bertabrakan dengan ID di aplikasi lain.
Setelah mendapatkan atau membuat UserActivity, tentukan dua bidang lain yang diperlukan: UserActivity.VisualElements.DisplayText
dan UserActivity.ActivationUri
.
Selanjutnya, simpan metadata UserActivity dengan memanggil SaveAsync, dan akhirnya CreateSession, yang mengembalikan UserActivitySession. UserActivitySession adalah objek yang dapat kita gunakan untuk mengelola ketika pengguna benar-benar terlibat dengan UserActivity. Misalnya, kita harus memanggil Dispose()
UserActivitySession saat pengguna meninggalkan halaman. Dalam contoh di atas, kami juga memanggil Dispose()
_currentActivity
sebelum memanggil CreateSession()
. Ini karena kami membuat _currentActivity
bidang anggota halaman kami, dan kami ingin menghentikan aktivitas yang ada sebelum memulai yang baru (catatan: ?
adalah operator null-conditional yang menguji null sebelum melakukan akses anggota).
Karena, dalam hal ini, ActivationUri
adalah skema kustom, kita juga perlu mendaftarkan protokol dalam manifes aplikasi. Ini dilakukan dalam file XML Package.appmanifest, atau dengan menggunakan perancang.
Untuk membuat perubahan dengan perancang, klik dua kali file Package.appmanifest di proyek Anda untuk meluncurkan perancang, pilih tab Deklarasi dan tambahkan definisi Protokol . Satu-satunya properti yang perlu diisi, untuk saat ini, adalah Nama. Ini harus cocok dengan URI yang kami tentukan di atas, my-app
.
Sekarang kita perlu menulis beberapa kode untuk memberi tahu aplikasi apa yang harus dilakukan ketika telah diaktifkan oleh protokol. Kami akan mengambil alih OnActivated
metode di App.xaml.cs untuk meneruskan URI ke halaman utama, seperti:
protected override void OnActivated(IActivatedEventArgs e)
{
if (e.Kind == ActivationKind.Protocol)
{
var uriArgs = e as ProtocolActivatedEventArgs;
if (uriArgs != null)
{
if (uriArgs.Uri.Host == "page2")
{
// Navigate to the 2nd page of the app
}
}
}
Window.Current.Activate();
}
Apa yang dilakukan kode ini adalah mendeteksi apakah aplikasi diaktifkan melalui protokol. Jika ya, maka aplikasi akan melihat apa yang harus dilakukan aplikasi untuk melanjutkan tugas yang sedang diaktifkan. Menjadi aplikasi sederhana, satu-satunya aktivitas yang dilanjutkan aplikasi ini adalah menempatkan Anda di halaman sekunder saat aplikasi muncul.
Gunakan Kartu Adaptif untuk meningkatkan pengalaman Garis Waktu
Aktivitas Pengguna muncul di Cortana dan Garis Waktu. Saat aktivitas muncul di Garis Waktu, kami menampilkannya menggunakan kerangka kerja Kartu Adaptif. Jika Anda tidak menyediakan kartu adaptif untuk setiap aktivitas, Timeline akan secara otomatis membuat kartu aktivitas sederhana berdasarkan nama dan ikon aplikasi Anda, bidang judul, dan bidang deskripsi opsional. Di bawah ini adalah contoh payload Kartu Adaptif dan kartu yang dihasilkannya.
]
Contoh string JSON payload kartu adaptif:
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"backgroundImage": "https://winblogs.azureedge.net/win/2017/11/eb5d872c743f8f54b957ff3f5ef3066b.jpg",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Windows Blog",
"weight": "bolder",
"size": "large",
"wrap": true,
"maxLines": 3
},
{
"type": "TextBlock",
"text": "Training Haiti’s radiologists: St. Louis doctor takes her teaching global",
"size": "default",
"wrap": true,
"maxLines": 3
}
]
}
]
}
Tambahkan payload Kartu Adaptif sebagai string JSON ke UserActivity seperti ini:
activity.VisualElements.Content =
Windows.UI.Shell.AdaptiveCardBuilder.CreateAdaptiveCardFromJson(jsonCardText); // where jsonCardText is a JSON string that represents the card
Integrasi lintas platform dan Layanan-ke-layanan
Jika aplikasi Anda berjalan lintas platform (misalnya di Android dan iOS), atau mempertahankan status pengguna di cloud, Anda dapat menerbitkan Aktivitas Pengguna melalui Microsoft Graph. Setelah aplikasi atau layanan Anda diautentikasi dengan Akun Microsoft, hanya perlu dua panggilan REST sederhana untuk menghasilkan objek Aktivitas dan Riwayat , menggunakan data yang sama seperti yang dijelaskan di atas.
Ringkasan
Anda dapat menggunakan USERActivity API untuk membuat aplikasi Anda muncul di Timeline dan Cortana.
- Pelajari selengkapnya tentang USERActivity API
- Lihat kode sampel.
- Lihat Kartu Adaptif yang lebih canggih.
- Terbitkan UserActivity dari iOS, Android, atau layanan web Anda melalui Microsoft Graph.
- Pelajari selengkapnya tentang Project Rome di GitHub.