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 Timeline 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 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 digarap pengguna dalam aplikasi Anda. Misalnya, jika Anda menggunakan pembaca RSS, UserActivity bisa menjadi umpan yang Anda baca. Jika Anda bermain game, UserActivity bisa menjadi level 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 tinggalkan mengerjakannya, dan sebagainya. Singkatnya, UserActivity mewakili tujuan dalam aplikasi Anda sehingga memungkinkan pengguna untuk melanjutkan apa yang mereka lakukan.
Saat Anda berinteraksi 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 penangan protokol untuk skema (misalnya, "my-app://page2?action=edit") atau appUriHandler (misalnya,
http://contoso.com/page2?action=edit
). - VisualElements memaparkan 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:
- Hasilkan objek UserActivity saat konteks pengguna Anda berubah dalam aplikasi (seperti navigasi halaman, tingkat permainan baru, dll.)
- Isi objek UserActivity dengan kumpulan bidang minimum 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 di 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 diterbitkan. Baris berikutnya meminta 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 tersebut; 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 dilingkup 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 kapan 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 bersyar-nihil 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 OnActivated
alih 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 tampaknya 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.
Menggunakan 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 memublikasikan Aktivitas Pengguna melalui Microsoft Graph. Setelah aplikasi atau layanan Anda diautentikasi dengan Akun Microsoft, dibutuhkan 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.
API Kunci
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk