Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menjelaskan cara membantu pengguna melanjutkan apa yang mereka lakukan di aplikasi Anda di PC mereka, dan di seluruh perangkat.
Nota
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 akan membuat aktivitas tersebut muncul di Garis Waktu Windows dan fitur Mulai Lagi di tempat saya berhenti milik Cortana. 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 telah 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.
Anggaplah UserActivity sebagai sesuatu spesifik yang sedang dikerjakan pengguna dalam aplikasi Anda. Misalnya, jika Anda menggunakan pembaca RSS, UserActivity bisa menjadi umpan yang Anda baca. Jika Anda memainkan game, UserActivity bisa menjadi level yang Anda mainkan. Jika Anda mendengarkan aplikasi musik, UserActivity bisa menjadi daftar putar yang Anda dengarkan. Jika Anda mengerjakan dokumen, UserActivity mungkin adalah tempat di mana Anda berhenti mengerjakannya, dan sebagainya. Singkatnya, UserActivity mewakili tujuan dalam aplikasi Anda sehingga memungkinkan pengguna untuk melanjutkan apa yang mereka lakukan.
Ketika Anda berinteraksi dengan UserActivity dengan memanggil UserActivity.CreateSession, sistem membuat rekaman riwayat yang menunjukkan waktu mulai dan berakhir untuk UserActivitytersebut. Saat Anda berinteraksi kembali dengan UserActivity
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 judul, deskripsi, atau elemen Kartu Adaptif.
- Terakhir, Content adalah tempat Anda dapat menyimpan metadata untuk aktivitas yang dapat digunakan untuk mengelompokkan dan mengambil aktivitas dalam konteks tertentu. Seringkali, ini berbentuk data https://schema.org.
Untuk menambahkan UserActivity ke aplikasi Anda:
- Hasilkan objek UserActivity ketika konteks pengguna dalam aplikasi Anda berubah (seperti navigasi halaman, level permainan baru, dll.)
- Isi objek UserActivity dengan kumpulan bidang minimum yang diperlukan: ActivityId, ActivationUri, dan UserActivity.VisualElements.DisplayText.
- Tambahkan pengelola 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 GenerateActivityAsync() di atas mengakses UserActivityChannelpengguna. Ini adalah umpan di mana aktivitas aplikasi ini akan dipublikasikan. Baris berikutnya meminta saluran aktivitas yang disebut MainPage.
- Aplikasi Anda harus memberi nama aktivitas dalam aplikasi sedemikian rupa sehingga ID yang sama dihasilkan setiap kali pengguna berada di lokasi tertentu dalam aplikasi. Misalnya, jika aplikasi Anda berbasis halaman, gunakan pengidentifikasi untuk halaman; jika aplikasi Anda berbasis dokumen, gunakan nama dokumen (atau hash dari nama).
- Jika ada aktivitas yang ada di umpan dengan ID yang sama, aktivitas tersebut akan dikembalikan dari saluran dengan
UserActivity.Statediatur ke Diterbitkan). Jika tidak ada aktivitas dengan nama tersebut, maka aktivitas baru akan dikembalikan denganUserActivity.Statediatur ke New. - 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.DisplayTextdan UserActivity.ActivationUri.
Selanjutnya, simpan metadata UserActivity Dispose() di _currentActivity sebelum memanggil CreateSession(). Ini karena kami menjadikan _currentActivity sebagai anggota dari halaman kami, dan kami ingin menghentikan aktivitas yang ada sebelum memulai yang baru (catatan: ? adalah operator null-conditional yang memeriksa null sebelum melakukan akses terhadap 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 metode OnActivated 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 iya, maka aplikasi akan memeriksa apa yang harus dilakukan 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
]
Contoh string JSON payload dari kartu yang dapat beradaptasi:
{
"$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 antar 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 Aktivitas
Ringkasan
Anda dapat menggunakan API UserActivity untuk membuat aplikasi Anda muncul di Garis Waktu 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.