Pemberitahuan Orang saya

Penting

Orang saya tidak lagi didukung di versi Windows 11 dan Windows 10 dengan KB5034203 diterapkan.

Pemberitahuan Orang saya memberikan cara baru bagi pengguna untuk terhubung dengan orang-orang yang mereka pedulikan, melalui gerakan ekspresif cepat. Artikel ini memperlihatkan cara merancang dan mengimplementasikan Pemberitahuan Orang saya di aplikasi Anda. Untuk implementasi lengkap, lihat Sampel Pemberitahuan Orang Saya.

heart emoji notification

Persyaratan

  • Windows 10 dan Microsoft Visual Studio 2019 atau yang lebih baru. Untuk detail penginstalan, lihat Menyiapkan Visual Studio.
  • Pengetahuan dasar tentang C# atau bahasa pemrograman berorientasi objek serupa. Untuk mulai menggunakan C#, lihat Membuat aplikasi "Halo, dunia".

Cara kerjanya

Sebagai alternatif untuk pemberitahuan toast generik, Anda sekarang dapat mengirim pemberitahuan melalui fitur My Orang untuk memberikan pengalaman yang lebih pribadi kepada pengguna. Ini adalah jenis toast baru, dikirim dari kontak yang disematkan di taskbar pengguna dengan fitur My Orang. Ketika pemberitahuan diterima, gambar kontak pengirim akan beranimasi di taskbar dan suara akan diputar, menandakan bahwa pemberitahuan dimulai. Animasi atau gambar yang ditentukan dalam payload akan ditampilkan selama 5 detik (atau, jika payload adalah animasi yang panjangnya kurang dari 5 detik, itu akan mengulang hingga 5 detik telah berlalu).

Jenis gambar yang didukung

  • GIF
  • Gambar Statis (JPEG, PNG)
  • Spritesheet (hanya vertikal)

Catatan

Spritesheet adalah animasi yang berasal dari gambar statis (JPEG atau PNG). Bingkai individual diatur secara vertikal, sedemikian rupa sehingga bingkai pertama berada di atas (meskipun Anda dapat menentukan bingkai awal yang berbeda dalam payload toast). Setiap bingkai harus memiliki tinggi yang sama, yang diulang program untuk membuat urutan animasi (seperti flipbook dengan halamannya ditata secara vertikal). Contoh spritesheet ditunjukkan di bawah ini.

rainbow spritesheet

Parameter pemberitahuan

Pemberitahuan Orang saya menggunakan kerangka kerja pemberitahuan toast, tetapi memerlukan simpul pengikatan tambahan dalam payload toast. Pengikatan kedua ini harus mencakup parameter berikut:

experienceType="shoulderTap"

Ini menunjukkan bahwa toast harus diperlakukan sebagai pemberitahuan My Orang.

Simpul gambar di dalam pengikatan harus menyertakan parameter berikut:

  • src
    • URI aset. Ini dapat berupa URI web HTTP/HTTPS, URI msappx, atau jalur ke file lokal.
  • spritesheet-src
    • URI aset. Ini dapat berupa URI web HTTP/HTTPS, URI msappx, atau jalur ke file lokal. Hanya diperlukan untuk animasi spritesheet.
  • spritesheet-height
    • Tinggi bingkai (dalam piksel). Hanya diperlukan untuk animasi spritesheet.
  • spritesheet-fps
    • Bingkai per detik (FPS). Hanya diperlukan untuk animasi spritesheet. Hanya nilai 1-120 yang didukung.
  • spritesheet-startingFrame
    • Nomor bingkai untuk memulai animasi. Hanya digunakan untuk animasi spritesheet dan default ke 0 jika tidak disediakan.
  • Alt
    • String teks yang digunakan untuk narasi pembaca layar.

Catatan

Saat membuat pemberitahuan animasi, Anda masih harus menentukan gambar statis dalam parameter "src". Ini akan digunakan sebagai fall-back jika animasi gagal ditampilkan.

Selain itu, node toast tingkat atas harus menyertakan parameter hint-people untuk menentukan kontak pengiriman. Parameter ini dapat memiliki nilai berikut:

  • Alamat email
    • Misalnya. mailto:johndoe@mydomain.com
  • Nomor telepon
  • ID Jarak Jauh
    • Misalnya remoteid:1234

Catatan

Jika aplikasi Anda menggunakan API ContactStore dan menggunakan properti StoredContact.RemoteId untuk menautkan kontak yang disimpan di PC dengan kontak yang disimpan dari jarak jauh, sangat penting bahwa nilai untuk properti RemoteId stabil dan unik. Ini berarti bahwa ID jarak jauh harus secara konsisten mengidentifikasi satu akun pengguna, dan harus berisi tag unik untuk menjamin bahwa id jarak jauh kontak lain di PC tidak bertentangan, termasuk kontak yang dimiliki oleh aplikasi lain. Jika ID jarak jauh yang digunakan oleh aplikasi Anda tidak dijamin stabil dan unik, Anda dapat menggunakan kelas RemoteIdHelper untuk menambahkan tag unik ke semua ID jarak jauh Anda sebelum Anda menambahkannya ke sistem. Atau, Anda dapat memilih untuk tidak menggunakan properti RemoteId sama sekali, dan sebaliknya membuat properti yang diperluas kustom untuk menyimpan ID jarak jauh untuk kontak Anda.

Selain pengikatan dan payload kedua, Anda harus menyertakan payload lain dalam pengikatan pertama untuk roti panggang fallback. Pemberitahuan akan menggunakan ini jika dipaksa untuk kembali ke roti panggang biasa (dijelaskan lebih lanjut di akhir artikel ini).

Membuat pemberitahuan

Anda dapat membuat templat pemberitahuan My Orang seperti pemberitahuan toast.

Berikut adalah contoh cara membuat pemberitahuan My Orang dengan payload gambar statis:

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-static-payload.png"/>
        </binding>
    </visual>
</toast>

Saat Anda memulai pemberitahuan, pemberitahuan akan terlihat seperti ini:

static image notification

Berikut adalah contoh cara membuat pemberitahuan dengan payload spritesheet animasi. Spritesheet ini memiliki tinggi bingkai 80 piksel, yang akan kita animasikan pada 25 bingkai per detik. Kami mengatur bingkai awal ke 15 dan menyediakannya dengan gambar fallback statis dalam parameter "src". Gambar fallback digunakan jika animasi spritesheet gagal ditampilkan.

<toast hint-people="mailto:johndoe@mydomain.com">
    <visual lang="en-US">
        <binding template="ToastGeneric">
            <text hint-style="body">Toast fallback</text>
            <text>Add your fallback toast content here</text>
        </binding>
        <binding template="ToastGeneric" experienceType="shoulderTap">
            <image src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-static.png"
                spritesheet-src="https://learn.microsoft.com/windows/uwp/contacts-and-calendar/images/shoulder-tap-pizza-spritesheet.png"
                spritesheet-height='80' spritesheet-fps='25' spritesheet-startingFrame='15'/>
        </binding>
    </visual>
</toast>

Saat Anda memulai pemberitahuan, pemberitahuan akan terlihat seperti ini:

spritesheet notification

Memulai pemberitahuan

Untuk memulai pemberitahuan Orang Saya, kita perlu mengonversi templat toast menjadi objek XmlDocument. Ketika Anda telah menentukan toast dalam file XML (di sini bernama "content.xml"), Anda dapat menggunakan kode ini untuk memulainya:

string xmlText = File.ReadAllText("content.xml");
XmlDocument xmlContent = new XmlDocument();
xmlContent.LoadXml(xmlText);

Anda kemudian dapat menggunakan kode ini untuk membuat dan mengirim toast:

ToastNotification notification = new ToastNotification(xmlContent);
ToastNotificationManager.CreateToastNotifier().Show(notification);

Jatuh kembali ke roti panggang

Ada beberapa kasus ketika pemberitahuan My Orang akan ditampilkan sebagai pemberitahuan toast biasa. Pemberitahuan Orang saya akan kembali bersulang dalam kondisi berikut:

  • Pemberitahuan gagal ditampilkan
  • Pemberitahuan Orang saya tidak diaktifkan oleh penerima
  • Kontak pengirim tidak disematkan ke taskbar penerima

Jika pemberitahuan My Orang kembali bersulang, pengikatan khusus my-Orang kedua diabaikan, dan hanya pengikatan pertama yang digunakan untuk menampilkan toast. Inilah sebabnya mengapa sangat penting untuk menyediakan payload fallback dalam pengikatan roti panggang pertama.

Baca juga