Menambahkan pemberitahuan push ke aplikasi Xamarin.Forms Anda

Gambaran Umum

Dalam tutorial ini, Anda menambahkan pemberitahuan push ke semua proyek yang dihasilkan dari mulai cepat Xamarin.Forms. Ini berarti bahwa pemberitahuan push dikirim ke semua klien lintas platform setiap kali rekaman dimasukkan.

Jika Anda tidak menggunakan proyek server mulai cepat yang diunduh, Anda akan memerlukan paket ekstensi pemberitahuan push. Untuk informasi selengkapnya, lihat Bekerja dengan SDK server backend .NET untuk Azure Mobile Apps.

Prasyarat

Untuk iOS, Anda memerlukan keanggotaan Program Pengembang Apple dan perangkat iOS fisik. Simulator iOS tidak mendukung pemberitahuan push.

Konfigurasi hub pemberitahuan

Fitur Mobile Apps Azure App Service menggunakan Azure Notification Hubs untuk mengirim push, sehingga Anda akan mengonfigurasi hub pemberitahuan untuk aplikasi seluler Anda.

  1. Di portal Azure, buka App Services, lalu pilih back end aplikasi Anda. Di bawah Pengaturan, pilih Dorong.

  2. Untuk menambahkan sumber daya hub pemberitahuan ke aplikasi, pilih Sambungkan. Anda dapat membuat hub atau menyambungkan ke hub yang sudah ada.

    Mengonfigurasi hub

Sekarang Anda telah menyambungkan hub pemberitahuan ke proyek back-end Mobile Apps Anda. Nantinya Anda mengonfigurasi hub pemberitahuan ini untuk terhubung ke sistem pemberitahuan platform (PNS) untuk mendorong ke perangkat.

Memperbarui proyek server untuk mengirim pemberitahuan push

Di bagian ini, Anda memperbarui kode di proyek back-end Mobile Apps yang ada untuk mengirim pemberitahuan push setiap kali item baru ditambahkan. Proses ini didukung oleh fitur templat Azure Notification Hubs, yang memungkinkan pendorongan lintas platform. Berbagai klien terdaftar untuk pemberitahuan push menggunakan templat, dan satu push universal dapat masuk ke semua platform klien.

Pilih salah satu prosedur berikut yang cocok dengan jenis proyek back-end Anda—baik back end .NET atau back endNode.js.

Proyek back-end .NET

  1. Di Visual Studio, klik kanan proyek server. Lalu pilih Kelola Paket NuGet. Cari Microsoft.Azure.NotificationHubs, kemudian pilih Instal. Proses ini menginstal pustaka Notification Hubs untuk mengirim pemberitahuan dari ujung belakang.

  2. Dalam proyek server, buka Pengontrol>TodoItemController.cs. Kemudian tambahkan pernyataan penggunaan berikut:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. Dalam metode PostTodoItem , tambahkan kode berikut setelah panggilan ke InsertAsync:

    // Get the settings for the server project.
    HttpConfiguration config = this.Configuration;
    MobileAppSettingsDictionary settings =
        this.Configuration.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
    // Get the Notification Hubs credentials for the mobile app.
    string notificationHubName = settings.NotificationHubName;
    string notificationHubConnection = settings
        .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
    // Create a new Notification Hub client.
    NotificationHubClient hub = NotificationHubClient
    .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
    // Send the message so that all template registrations that contain "messageParam"
    // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
    Dictionary<string,string> templateParams = new Dictionary<string,string>();
    templateParams["messageParam"] = item.Text + " was added to the list.";
    
    try
    {
        // Send the push notification and log the results.
        var result = await hub.SendTemplateNotificationAsync(templateParams);
    
        // Write the success result to the logs.
        config.Services.GetTraceWriter().Info(result.State.ToString());
    }
    catch (System.Exception ex)
    {
        // Write the failure result to the logs.
        config.Services.GetTraceWriter()
            .Error(ex.Message, null, "Push.SendAsync Error");
    }
    

    Proses ini mengirimkan pemberitahuan templat yang berisi item. Teks saat item baru disisipkan.

  4. Menerbitkan ulang proyek server.

Node.js proyek back-end

  1. Siapkan proyek backend Anda.

  2. Ganti kode yang ada di todoitem.js dengan kode berikut:

    var azureMobileApps = require('azure-mobile-apps'),
    promises = require('azure-mobile-apps/src/utilities/promises'),
    logger = require('azure-mobile-apps/src/logger');
    
    var table = azureMobileApps.table();
    
    table.insert(function (context) {
    // For more information about the Notification Hubs JavaScript SDK,
    // see https://aka.ms/nodejshubs.
    logger.info('Running TodoItem.insert');
    
    // Define the template payload.
    var payload = '{"messageParam": "' + context.item.text + '" }';  
    
    // Execute the insert. The insert returns the results as a promise.
    // Do the push as a post-execute action within the promise flow.
    return context.execute()
        .then(function (results) {
            // Only do the push if configured.
            if (context.push) {
                // Send a template notification.
                context.push.send(null, payload, function (error) {
                    if (error) {
                        logger.error('Error while sending push notification: ', error);
                    } else {
                        logger.info('Push notification sent successfully!');
                    }
                });
            }
            // Don't forget to return the results from the context.execute().
            return results;
        })
        .catch(function (error) {
            logger.error('Error while running context.execute: ', error);
        });
    });
    
    module.exports = table;  
    

    Proses ini mengirimkan pemberitahuan templat yang berisi item.text saat item baru disisipkan.

  3. Saat Anda mengedit file di komputer lokal Anda, terbitkan ulang proyek server.

Mengonfigurasi dan menjalankan proyek Android (opsional)

Lengkapi bagian ini untuk mengaktifkan pemberitahuan push untuk proyek Droid Xamarin.Forms untuk Android.

Mengaktifkan Firebase Cloud Messaging (FCM)

  1. Masuk ke Konsol Firebase. Buat proyek Firebase baru jika Anda belum memilikinya.

  2. Setelah membuat proyek, pilih Tambahkan Firebase ke aplikasi Android Anda.

    Menambahkan Firebase ke aplikasi Android Anda

  3. Di halaman Tambahkan Firebase ke aplikasi Android Anda, lakukan langkah-langkah berikut:

    1. Untuk nama paket Android, salin nilai applicationId Anda di file build.gradle aplikasi. Contohnya, com.fabrikam.fcmtutorial1app.

      Menentukan nama paket

    2. Pilih Daftarkan aplikasi.

  4. Pilih Unduh google-services.jsanda, simpan file ke folder aplikasi proyek Anda, lalu pilih Berikutnya.

    Mengunduh google-services.json

  5. Buat perubahan konfigurasi berikut ke proyek Anda di Android Studio.

    1. Di file build.gradle tingkat proyek Anda (<project>/build.gradle), tambahkan pernyataan berikut ke bagian dependensi.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Di file gradle build tingkat aplikasi Anda (<project>/<app-module>/build.gradle), tambahkan pernyataan berikut ke bagian dependensi.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Tambahkan baris berikut ke bagian akhir file build.gradle tingkat aplikasi setelah bagian dependensi.

      apply plugin: 'com.google.gms.google-services'
      
    4. Pilih Sinkronkan sekarang pada toolbar.

      perubahan konfigurasi build.gradle

  6. Pilih Selanjutnya.

  7. Pilih Lompati langkah ini.

    Melompati langkah terakhir

  8. Di konsol Firebase, pilih cog untuk proyek Anda. Pilih Pengaturan Proyek.

    Memilih pengaturan proyek

  9. Jika belum mengunduh file google-services.json ke dalam folder aplikasi proyek Android Studio Anda, Anda dapat melakukannya di halaman ini.

  10. Alihkan ke tab Perpesanan Cloud di bagian atas.

  11. Salin dan simpan Kunci Server untuk digunakan nanti. Gunakan nilai ini untuk mengonfigurasi hub Anda.

Mengonfigurasi back end Mobile Apps untuk mengirim permintaan push dengan menggunakan FCM

  1. Di portal Azure, pilih Telusuri Semua>App Services. Kemudian pilih back end Mobile Apps Anda.
  2. Di bawah Pengaturan, pilih Dorong. Lalu pilih Konfigurasikan layanan pemberitahuan push.
  3. Buka Google (GCM). Masukkan kunci server warisan FCM yang Anda peroleh dari konsol Firebase, lalu pilih Simpan.

Layanan Anda sekarang dikonfigurasi untuk bekerja dengan Firebase Cloud Messaging.

Menambahkan pemberitahuan push ke proyek Android

Dengan back end yang dikonfigurasi dengan FCM, Anda dapat menambahkan komponen dan kode ke klien untuk mendaftar dengan FCM. Anda juga dapat mendaftar untuk pemberitahuan push dengan Azure Notification Hubs melalui back end Mobile Apps, dan menerima pemberitahuan.

  1. Dalam proyek Droid , klik kanan Referensi > Kelola Paket NuGet ....
  2. Di jendela Manajer Paket NuGet, cari paket Xamarin.Firebase.Messaging dan tambahkan ke proyek.
  3. Di properti proyek untuk proyek Droid , atur aplikasi untuk mengkompilasi menggunakan Android versi 7.0 atau yang lebih tinggi.
  4. Tambahkan file google-services.json , yang diunduh dari Firebase console, ke akar proyek Droid dan atur tindakan build-nya ke GoogleServicesJson. Untuk informasi selengkapnya, lihat Menambahkan File JSON Google Services.

Mendaftar dengan Firebase Cloud Messaging

  1. Buka file AndroidManifest.xml dan sisipkan elemen berikut <receiver> ke <application> dalam elemen :

    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>
    

Menerapkan Layanan ID Instans Firebase

  1. Tambahkan kelas baru ke proyek Droid bernama FirebaseRegistrationService, dan pastikan bahwa pernyataan berikut using ada di bagian atas file:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. Ganti kelas kosong FirebaseRegistrationService dengan kode berikut:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseRegistrationService : FirebaseInstanceIdService
    {
        const string TAG = "FirebaseRegistrationService";
    
        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationTokenToAzureNotificationHub(refreshedToken);
        }
    
        void SendRegistrationTokenToAzureNotificationHub(string token)
        {
            // Update notification hub registration
            Task.Run(async () =>
            {
                await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token);
            });
        }
    }
    

    Kelas FirebaseRegistrationService ini bertanggung jawab untuk menghasilkan token keamanan yang mengotorisasi aplikasi untuk mengakses FCM. Metode OnTokenRefresh ini dipanggil ketika aplikasi menerima token pendaftaran dari FCM. Metode ini mengambil token dari FirebaseInstanceId.Instance.Token properti , yang diperbarui secara asinkron oleh FCM. Metode OnTokenRefresh ini jarang dipanggil, karena token hanya diperbarui ketika aplikasi diinstal atau dihapus, ketika pengguna menghapus data aplikasi, ketika aplikasi menghapus ID Instans, atau ketika keamanan token telah disusupi. Selain itu, layanan ID Instans FCM akan meminta agar aplikasi me-refresh tokennya secara berkala, biasanya setiap 6 bulan.

    Metode ini OnTokenRefresh juga memanggil SendRegistrationTokenToAzureNotificationHub metode , yang digunakan untuk mengaitkan token pendaftaran pengguna dengan Azure Notification Hub.

Mendaftar dengan Azure Notification Hub

  1. Tambahkan kelas baru ke proyek Droid bernama AzureNotificationHubService, dan pastikan bahwa pernyataan berikut using ada di bagian atas file:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. Ganti kelas kosong AzureNotificationHubService dengan kode berikut:

    public class AzureNotificationHubService
    {
        const string TAG = "AzureNotificationHubService";
    
        public static async Task RegisterAsync(Push push, string token)
        {
            try
            {
                const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}";
                JObject templates = new JObject();
                templates["genericMessage"] = new JObject
                {
                    {"body", templateBody}
                };
    
                await push.RegisterAsync(token, templates);
                Log.Info("Push Installation Id: ", push.InstallationId.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message);
            }
        }
    }
    

    Metode ini RegisterAsync membuat templat pesan pemberitahuan sederhana sebagai JSON, dan mendaftar untuk menerima pemberitahuan templat dari hub pemberitahuan, menggunakan token pendaftaran Firebase. Ini memastikan bahwa setiap pemberitahuan yang dikirim dari Azure Notification Hub akan menargetkan perangkat yang diwakili oleh token pendaftaran.

Menampilkan Isi Pemberitahuan Push

  1. Tambahkan kelas baru ke proyek Droid bernama FirebaseNotificationService, dan pastikan bahwa pernyataan berikut using ada di bagian atas file:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. Ganti kelas kosong FirebaseNotificationService dengan kode berikut:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class FirebaseNotificationService : FirebaseMessagingService
    {
        const string TAG = "FirebaseNotificationService";
    
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
    
            // Pull message body out of the template
            var messageBody = message.Data["message"];
            if (string.IsNullOrWhiteSpace(messageBody))
                return;
    
            Log.Debug(TAG, "Notification message body: " + messageBody);
            SendNotification(messageBody);
        }
    
        void SendNotification(string messageBody)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            //Unique request code to avoid PendingIntent collision.
            var requestCode = new Random().Next();
            var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot);
            var notificationBuilder = new NotificationCompat.Builder(this)
                .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                .SetContentTitle("New Todo Item")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent)
                .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                .SetAutoCancel(true);
    
            var notificationManager = NotificationManager.FromContext(this);
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    }
    

    Metode OnMessageReceived , yang dipanggil ketika aplikasi menerima pemberitahuan dari FCM, mengekstrak konten pesan, dan memanggil SendNotification metode . Metode ini mengonversi konten pesan menjadi pemberitahuan lokal yang diluncurkan saat aplikasi berjalan, dengan pemberitahuan muncul di area pemberitahuan.

Sekarang, Anda siap menguji pemberitahuan push di aplikasi yang berjalan di perangkat Android atau emulator.

Menguji pemberitahuan push di aplikasi Android Anda

Dua langkah pertama hanya diperlukan saat Anda menguji di emulator.

  1. Pastikan Anda menyebarkan atau menelusuri kesalahan di perangkat atau emulator yang dikonfigurasi dengan Layanan Google Play. Ini dapat diverifikasi dengan memeriksa apakah aplikasi Play diinstal pada perangkat atau emulator.
  2. Tambahkan akun Google ke perangkat Android dengan mengeklikPengaturan>Aplikasi>Tambahkan akun. Kemudian ikuti perintah untuk menambahkan akun Google yang ada ke perangkat, atau untuk membuat akun baru.
  3. Di Visual Studio atau Xamarin Studio, klik kanan proyek Droid dan klik Atur sebagai proyek startup.
  4. Klik Jalankan untuk membuat proyek dan memulai aplikasi di perangkat Android atau emulator Anda.
  5. Di aplikasi, ketik tugas, lalu klik ikon plus (+).
  6. Verifikasi bahwa pemberitahuan diterima saat item ditambahkan.

Mengonfigurasi dan menjalankan proyek iOS (opsional)

Bagian ini untuk menjalankan proyek Xamarin iOS untuk perangkat iOS. Anda dapat melewati bagian ini jika Anda tidak bekerja dengan perangkat iOS.

Membuat file permintaan penandatanganan sertifikat

Layanan Pemberitahuan Push Apple (APNs) menggunakan sertifikat untuk mengautentikasi pemberitahuan push Anda. Ikuti instruksi ini untuk membuat sertifikat push yang diperlukan untuk mengirim dan menerima pemberitahuan. Untuk informasi selengkapnya tentang konsep-konsep ini, lihat dokumentasi Layanan Pemberitahuan Push Apple resmi.

Buat file Permintaan Penandatanganan Sertifikat (CSR), yang digunakan Apple untuk menghasilkan sertifikat push yang ditandatangani.

  1. Di Mac Anda, jalankan alat Keychain Access. Ini dapat dibuka dari folder Utilitas atau folder Lainnya di Launchpad.

  2. Pilih Keychain Access, perluas Asisten Sertifikat , lalu pilih Minta Sertifikat dari Otoritas Sertifikat.

    Menggunakan Keychain Access untuk meminta sertifikat baru

    Catatan

    Secara default, Keychain Access memilih item pertama dalam daftar. Ini bisa menjadi masalah jika Anda berada dalam kategori Sertifikat dan Otoritas Sertifikasi Hubungan Pengembang Seluruh Dunia Apple bukan item pertama dalam daftar. Pastikan Anda memiliki item non-kunci, atau kunci Otoritas Sertifikasi Hubungan Pengembang Seluruh Dunia Apple dipilih, sebelum membuat CSR (Permintaan Penandatanganan Sertifikat).

  3. Pilih Alamat Email Pengguna Anda, masukkan nilai Nama Umum Anda, pastikan Anda menentukan Disimpan ke disk, lalu pilih Lanjutkan. Biarkan Alamat Email CA kosong karena tidak diperlukan.

    Informasi sertifikat yang diperlukan

  4. Masukkan nama untuk file CSR di Simpan Sebagai, pilih lokasi di Di mana, lalu pilih Simpan.

    Pilih nama file untuk sertifikat

    Aksi ini menyimpan file CSR di lokasi terpilih. Lokasi default adalah di Desktop. Ingat lokasi yang dipilih untuk file.

Selanjutnya, daftarkan aplikasi Anda dengan Apple, aktifkan pemberitahuan push, dan unggah CSR yang diekspor untuk membuat sertifikat push.

Daftarkan aplikasi Anda untuk pemberitahuan push

Untuk mengirim pemberitahuan push ke app iOS, daftarkan aplikasi Anda dengan Apple, dan juga daftarkan untuk pemberitahuan push.

  1. Jika Anda belum mendaftarkan aplikasi, telusuri ke Portal Provisi iOS di Pusat Pengembang Apple. Masuk ke portal dengan ID Apple Anda, dan pilih Pengidentifikasi. Lalu pilih + untuk mendaftarkan aplikasi baru.

    Halaman ID Aplikasi Portal Provisi iOS

  2. Pada layar Daftarkan Pengidentifikasi Baru, pilih tombol radio App ID. Lalu pilih Lanjutkan.

    Portal Provisi iOS mendaftarkan halaman ID baru

  3. Perbarui tiga nilai berikut untuk aplikasi baru Anda, lalu pilih Lanjutkan:

    • Deskripsi: Ketikkan nama deskriptif untuk aplikasi Anda.

    • ID Bundel: Masukkan ID Bundel formulir Nama Identifier.Product Organisasi seperti yang disebutkan dalam Panduan Distribusi Aplikasi. Nilai Pengidentifikasi Organisasi dan Nama Produk harus cocok dengan pengidentifikasi organisasi dan nama produk yang Anda gunakan saat membuat proyek Xcode. Dalam cuplikan layar berikut, nilaiNotificationHubs digunakan sebagai pengidentifikasi organisasi dan nilai GetStarted digunakan sebagai nama produk. Pastikan nilai Pengidentifikasi Bundel cocok dengan nilai dalam project Xcode Anda, sehingga Xcode menggunakan profil penerbitan yang benar.

      Portal Provisi iOS mendaftarkan halaman ID aplikasi

    • Pemberitahuan Push: Periksa opsi Pemberitahuan Push di bagian Kapabilitas.

      Formulir untuk mendaftarkan ID Aplikasi baru

      Tindakan ini menghasilkan ID Aplikasi Anda dan meminta Anda mengonfirmasi informasi tersebut. Pilih Lanjutkan, lalu pilih Daftar untuk mengonfirmasi ID Aplikasi baru.

      Konfirmasi ID Aplikasi baru

      Setelah Anda Mendaftar, Anda akan melihat ID Aplikasi baru sebagai item baris di halaman Sertifikat, Pengidentifikasi & Profil.

  4. Di halaman Sertifikat, Pengidentifikasi, & Profil, di Pengidentifikasi, temukan item baris ID Aplikasi yang baru saja Anda buat, dan pilih barisnya untuk menampilkan layar Edit Konfigurasi ID Aplikasi Anda.

Membuat Sertifikat untuk Notification Hubs

Sertifikat diperlukan untuk mengaktifkan hub pemberitahuan agar berfungsi dengan APNS. Ini dapat dilakukan dengan salah satu dari dua cara:

  1. Membuat .p12 yang dapat diunggah langsung ke Notification Hub.
  2. Membuat .p8 yang dapat digunakan untuk autentikasi berbasis token (pendekatan yang lebih baru).

Opsi kedua memiliki sejumlah keuntungan (dibandingkan dengan menggunakan sertifikat) seperti yang didokumentasikan dalam autentikasi berbasis Token (HTTP/2) untuk APNS. Namun, langkah-langkah disediakan untuk kedua pendekatan.

Opsi 1: Membuat sertifikat push .p12 yang dapat diunggah langsung ke Notification Hubs

  1. Gulir ke bawah ke opsi Pemberitahuan Push yang dicentang, lalu pilih Konfigurasikan untuk membuat sertifikat.

    Edit halaman ID Aplikasi

  2. Jendela Sertifikat SSL layanan Pemberitahuan Push Apple muncul. Pilih tombol Buat Sertifikat di bagian Sertifikat SSL Pengembangan.

    Buat sertifikat untuk tombol ID Aplikasi

    Layar Buat Sertifikat Baru ditampilkan.

    Catatan

    Tutorial ini menggunakan sertifikat pengembangan. Proses yang sama digunakan saat mendaftarkan sertifikat produksi. Pastikan Anda menggunakan jenis sertifikat yang sama saat mengirim pemberitahuan.

  3. Klik Pilih File, telusuri ke lokasi tempat Anda menyimpan file CSR dari tugas pertama, lalu klik dua kali nama sertifikat untuk memuatnya. Lalu pilih Lanjutkan.

  4. Setelah portal membuat sertifikat, pilih tombol Unduh. Simpan sertifikat, dan ingat lokasi penyimpanannya.

    Halaman unduhan sertifikat yang dihasilkan

    Sertifikat diunduh dan disimpan pada komputer di folder Unduhan Anda.

    Menemukan file sertifikat di folder Unduhan

    Catatan

    Secara default, sertifikat pengembangan yang diunduh diberi nama aps_development.cer.

  5. Klik dua kali pada sertifikat push yang diunduh aps_development.cer. Tindakan ini menginstal sertifikat baru di Keychain, seperti yang diperlihatkan dalam gambar berikut:

    Daftar sertifikat keychain access memperlihatkan sertifikat baru

    Catatan

    Meskipun nama dalam sertifikat Anda mungkin berbeda, nama tersebut akan diawali dengan Layanan Push iOS Pengembangan Apple.

  6. Di Keychain Access, klik kanan sertifikat push baru yang Anda buat di kategori Sertifikat. Pilih Ekspor, beri nama file, pilih format .p12 lalu pilih Simpan.

    Mengekspor sertifikat sebagai format p12

    Anda dapat memilih untuk melindungi sertifikat dengan kata sandi, tetapi ini opsional. Klik OK jika Anda ingin melewati pembuatan kata sandi. Catat nama file dan lokasi sertifikat .p12 yang diekspor. Sertifikat digunakan untuk mengaktifkan autentikasi dengan APNs.

    Catatan

    Nama dan lokasi file .p12 Anda mungkin berbeda dari apa yang digambarkan dalam tutorial ini.

OPSI 2: Membuat sertifikat .p8 yang dapat digunakan untuk autentikasi berbasis token

  1. Catat hal-hal berikut ini:

    • Awalan ID Aplikasi (ini adalah ID Tim)
    • ID Bundel
  2. Kembali ke Sertifikat, Pengidentifikasi, & Profil, klik Tombol.

    Catatan

    Jika Anda sudah memiliki kunci yang dikonfigurasi untuk APNS, Anda dapat menggunakan kembali sertifikat .p8 yang Anda unduh tepat setelah dibuat. Jika demikian, Anda dapat mengabaikan langkah 3 sampai 5.

  3. Klik tombol + (atau tombol Buat kunci) untuk membuat kunci baru.

  4. Berikan nilai Nama Kunci yang sesuai, lalu centang opsi Layanan Pemberitahuan Push Apple (APNS) , lalu klik Lanjutkan, diikuti dengan Daftar di layar berikutnya.

  5. Klik Unduh lalu pindahkan file .p8 (diawali dengan AuthKey_ ) ke direktori lokal yang aman, lalu klik Selesai.

    Catatan

    Pastikan untuk menyimpan file .p8 Anda di tempat yang aman (dan simpan cadangan). Setelah mengunduh kunci Anda, kunci tersebut tidak dapat diunduh ulang dan salinan server dihapus.

  6. Pada Kunci, klik kunci yang baru saja Anda buat (atau kunci yang ada jika Anda telah memilih untuk menggunakannya sebagai gantinya).

  7. Catat nilai ID Kunci.

  8. Buka sertifikat .p8 Anda dalam aplikasi pilihan Anda yang sesuai, seperti Visual Studio Code, lalu catat nilai kuncinya. Ini adalah nilai antara -----BEGIN PRIVATE KEY----- dan -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    Catatan

    Ini adalah nilai token yang akan digunakan nanti untuk mengonfigurasi Notification Hub.

Di akhir langkah-langkah ini Anda sudah harus memiliki informasi berikut untuk digunakan nanti di Mengkonfigurasi hub pemberitahuan Anda dengan informasi APNs:

  • ID Tim (lihat langkah 1)
  • ID Bundel (lihat langkah 1)
  • ID Kunci (lihat langkah 7)
  • Nilai token misalnya, nilai kunci .p8 (lihat langkah 8)

Membuat profil provisi untuk aplikasi

  1. Kembali ke Portal Provisi iOS, pilih Sertifikat, Pengidentifikasi, & Profil, pilih Profil dari menu kiri, lalu pilih + untuk membuat profil baru. Layar Mendaftarkan Profil Provisi Baru muncul.

  2. Pilih Pengembangan Aplikasi iOS di Pengembangan sebagai jenis profil provisi, lalu pilih Lanjutkan.

    Daftar profil provisi

  3. Berikutnya, pilih ID aplikasi yang Anda buat dari daftar drop-down ID Aplikasi, lalu pilih Lanjutkan.

    Pilih ID Aplikasi

  4. Di jendela Pilih sertifikat, pilih sertifikat pengembangan yang Anda gunakan untuk penandatanganan kode, dan pilih Lanjutkan. Sertifikat ini bukan sertifikat push yang Anda buat. Jika tidak ada, Anda harus membuatnya. Jika sertifikat memang ada, lewati ke langkah berikutnya. Untuk membuat sertifikat pengembangan jika sertifikat tidak ada:

    1. Jika Tidak ada Sertifikat yang tersedia, pilih Buat Sertifikat.
    2. Di bagian Perangkat Lunak, pilih Pengembangan Apple. Lalu pilih Lanjutkan.
    3. Di layar Buat Sertifikat Baru, klik Pilih File.
    4. Telusuri ke sertifikat Permintaan Penandatanganan Sertifikat yang Anda buat sebelumnya, pilih sertifikat tersebut, lalu pilih Buka.
    5. Pilih Lanjutkan.
    6. Unduh sertifikat pengembangan, dan ingat lokasi tempat sertifikat disimpan.
  5. Kembali ke halaman Sertifikat, Pengidentifikasi, & Profil, pilih Profil dari menu sebelah kiri, lalu pilih + untuk membuat profil baru. Layar Mendaftarkan Profil Provisi Baru muncul.

  6. Di jendela Pilih sertifikat, pilih sertifikat pengembangan yang baru saja Anda buat. Lalu pilih Lanjutkan.

  7. Selanjutnya, pilih perangkat yang akan digunakan untuk pengujian, dan pilih Lanjutkan.

  8. Terakhir, pilih nama untuk profil di Nama Profil Provisi, lalu pilih Buat.

    Pilih nama profil provisi

  9. Saat profil provisi baru dibuat, pilih Unduh. Ingat lokasi tempat profil disimpan.

  10. Telusuri ke lokasi profil provisi, lalu klik dua kali untuk menginstalnya di mesin pengembangan Xcode Anda.

Membuat hub pemberitahuan

Di bagian ini, Anda membuat hub pemberitahuan dan mengkonfigurasi autentikasi dengan APNs dengan menggunakan sertifikat push .p12 atau autentikasi berbasis token. Jika Anda ingin menggunakan hub pemberitahuan yang sudah Anda buat, Anda bisa langsung melewati ke langkah 5.

  1. Masuk ke portal Azure.

  2. Pilih Semua layanan di menu sebelah kiri, lalu pilih Notification Hubs di bagian Seluler. Pilih ikon bintang di samping nama layanan untuk menambahkan layanan ke bagian FAVORITE di menu sebelah kiri. Setelah Anda menambahkan Notification Hubs ke FAVORIT, pilih di menu sebelah kiri.

    Portal Azure - pilih Notification Hubs

  3. Pada halaman Notification Hubs, pilih Tambahkan pada toolbar.

    Notification Hub - Tambahkan tombol toolbar

  4. Pada halaman Notification Hubs, lakukan langkah-langkah berikut ini:

    1. Masukkan nama di Notification Hubs.

    2. Masukkan nama di Buat namespace baru. Namespace berisi satu atau beberapa hub.

    3. Pilih nilai dari kotak daftar drop-down Lokasi. Nilai ini menentukan lokasi tempat Anda ingin membuat hub.

    4. Pilih grup sumber daya yang sudah ada di Grup Sumber Daya, atau buat nama untuk grup sumber daya baru.

    5. Pilih Buat.

      Portal Azure - mengatur properti hub pemberitahuan

  5. Pilih Pemberitahuan (ikon bel), lalu pilih Buka sumber daya. Anda juga dapat me-refresh daftar di halaman Notification Hubs dan memilih hub Anda.

    portal Azure - pemberitahuan -> Buka sumber daya

  6. Pilih Kebijakan Akses dari daftar. Perhatikan bahwa dua string koneksi tersedia untuk Anda. Anda akan membutuhkannya nanti untuk menangani pemberitahuan push.

    Penting

    Jangan gunakan kebijakan DefaultFullSharedAccessSignature di aplikasi Anda. Kebijakan ini dimaksudkan untuk digunakan di ujung belakang Anda saja.

    Portal Azure - string koneksi hub pemberitahuan

Mengkonfigurasikan hub pemberitahuan dengan informasi APNs

Di Notification Services, pilih Apple (APNS) lalu ikuti langkah-langkah yang sesuai berdasarkan pendekatan yang Anda pilih sebelumnya di bagian Membuat Sertifikat untuk Notification Hubs.

Catatan

Gunakan Produksi untuk Mode Aplikasi hanya jika Anda ingin mengirim pemberitahuan push ke pengguna yang membeli aplikasi Anda dari toko.

OPSI 1: Gunakan sertifikat push .p12

  1. Pilih Sertifikat.

  2. Pilih ikon file.

  3. Pilih file .p12 yang Anda ekspor sebelumnya, lalu pilih Buka.

  4. Jika diperlukan, tentukan kata sandi yang benar.

  5. Pilih mode Kotak pasir.

    Mengonfigurasi sertifikasi APN di portal Azure

  6. Pilih Simpan.

OPSI 2: Gunakan autentikasi berbasis token

  1. Pilih Token.

  2. Masukkan nilai berikut yang Anda peroleh sebelumnya:

    • ID Kunci
    • ID Bundel
    • ID tim
    • Token
  3. Pilih Kotak pasir

  4. Pilih Simpan.

Sekarang Anda telah mengkonfigurasi hub pemberitahuan Anda dengan APNs. Anda juga memiliki string koneksi untuk mendaftarkan aplikasi Anda dan mengirim pemberitahuan push.

Mengonfigurasi hub pemberitahuan untuk APNS

  1. Di Mac Anda, luncurkan Akses Rantai Kunci. Di bilah navigasi kiri, di bawah Kategori, buka Sertifikat Saya. Temukan sertifikat SSL yang Anda unduh di bagian sebelumnya, lalu ungkapkan kontennya. Pilih hanya sertifikat (jangan pilih kunci privat). Kemudian ekspor.
  2. Di portal Azure, pilih Telusuri Semua>App Services. Kemudian pilih back end Mobile Apps Anda.
  3. Di bawah Pengaturan, pilih App Service Push. Kemudian pilih nama hub pemberitahuan Anda.
  4. Buka Apple Push Notification Services>Upload Certificate. Unggah file .p12, memilih Mode yang benar (tergantung pada apakah sertifikat SSL klien Anda dari sebelumnya adalah produksi atau kotak pasir). Simpan perubahan apa pun.

Layanan Anda sekarang dikonfigurasi untuk bekerja dengan pemberitahuan push di iOS.

Selanjutnya, Anda akan mengonfigurasi pengaturan proyek iOS di Xamarin Studio atau Visual Studio.

Mengonfigurasi proyek iOS di Xamarin Studio

  1. Di Xamarin.Studio, buka Info.plist, dan perbarui Pengidentifikasi Bundel dengan ID bundel yang Anda buat sebelumnya dengan ID aplikasi baru Anda.

  2. Gulir ke bawah ke Mode Latar Belakang. Pilih kotak Aktifkan Mode Latar Belakang dan kotak Pemberitahuan jarak jauh .

  3. Klik dua kali proyek Anda di Panel Solusi untuk membuka Opsi Proyek.

  4. Di bawah Bangun, pilih Penandatanganan Bundel iOS, dan pilih identitas dan profil provisi yang sesuai yang baru saja Anda siapkan untuk proyek ini.

    Ini memastikan bahwa proyek menggunakan profil baru untuk penandatanganan kode. Untuk dokumentasi provisi perangkat Xamarin resmi, lihat Penyediaan Perangkat Xamarin.

Mengonfigurasi proyek iOS di Visual Studio

  1. Di Visual Studio, klik kanan proyek, lalu klik Properti.

  2. Di halaman properti, klik tab Aplikasi iOS , dan perbarui Pengidentifikasi dengan ID yang Anda buat sebelumnya.

  3. Di tab Penandatanganan Bundel iOS , pilih identitas dan profil provisi yang sesuai yang baru saja Anda siapkan untuk proyek ini.

    Ini memastikan bahwa proyek menggunakan profil baru untuk penandatanganan kode. Untuk dokumentasi provisi perangkat Xamarin resmi, lihat Penyediaan Perangkat Xamarin.

  4. Klik dua kali Info.plist untuk membukanya, lalu aktifkan RemoteNotifications di bawah Mode Latar Belakang.

Menambahkan pemberitahuan push ke aplikasi iOS Anda

  1. Dalam proyek iOS , buka AppDelegate.cs dan tambahkan pernyataan berikut ke bagian atas file kode.

    using Newtonsoft.Json.Linq;
    
  2. Di kelas AppDelegate , tambahkan penimpaan untuk peristiwa RegisteredForRemoteNotifications untuk mendaftar pemberitahuan:

    public override void RegisteredForRemoteNotifications(UIApplication application,
        NSData deviceToken)
    {
        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
            {
                {"body", templateBodyAPNS}
            };
    
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        push.RegisterAsync(deviceToken, templates);
    }
    
  3. Di AppDelegate, tambahkan juga penimpaan berikut untuk penanganan aktivitas DidReceiveRemoteNotification :

    public override void DidReceiveRemoteNotification(UIApplication application,
        NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
    
        string alert = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
            alert = (aps[new NSString("alert")] as NSString).ToString();
    
        //show alert
        if (!string.IsNullOrEmpty(alert))
        {
            UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
            avAlert.Show();
        }
    }
    

    Metode ini menangani pemberitahuan masuk saat aplikasi sedang berjalan.

  4. Di kelas AppDelegate , tambahkan kode berikut ke metode FinishedLaunching :

    // Register for push notifications.
    var settings = UIUserNotificationSettings.GetSettingsForTypes(
        UIUserNotificationType.Alert
        | UIUserNotificationType.Badge
        | UIUserNotificationType.Sound,
        new NSSet());
    
    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
    

    Ini memungkinkan dukungan untuk pemberitahuan jarak jauh dan meminta pendaftaran push.

Aplikasi Anda sekarang diperbarui untuk mendukung pemberitahuan push.

Menguji pemberitahuan push di aplikasi iOS Anda

  1. Klik kanan proyek iOS, dan klik Atur sebagai Proyek StartUp.

  2. Tekan tombol Jalankan atau F5 di Visual Studio untuk membangun proyek dan memulai aplikasi di perangkat iOS. Lalu klik OK untuk menerima pemberitahuan push.

    Catatan

    Anda harus secara eksplisit menerima pemberitahuan push dari aplikasi Anda. Permintaan ini hanya terjadi saat pertama kali aplikasi berjalan.

  3. Di aplikasi, ketik tugas, lalu klik ikon plus (+).

  4. Verifikasi bahwa pemberitahuan diterima, lalu klik OK untuk menutup pemberitahuan.

Mengonfigurasi dan menjalankan proyek Windows (opsional)

Bagian ini untuk menjalankan proyek Xamarin.Forms WinApp dan WinPhone81 untuk perangkat Windows. Langkah-langkah ini juga mendukung proyek Platform Windows Universal (UWP). Anda dapat melewati bagian ini jika Anda tidak bekerja dengan perangkat Windows.

Daftarkan aplikasi Windows Anda untuk pemberitahuan push dengan Windows Notification Service (WNS)

  1. Di Visual Studio Penjelajah Solusi, klik kanan proyek aplikasi Windows Store. Lalu pilih Simpan>Kaitkan Aplikasi dengan Toko.

    Mengaitkan aplikasi dengan Bursa Windows

  2. Di wizard, pilih Berikutnya. Kemudian masuk dengan akun Microsoft Anda. Di Pesan nama aplikasi baru, ketik nama untuk aplikasi Anda, lalu pilih Pesan.

  3. Setelah pendaftaran aplikasi berhasil dibuat, pilih nama aplikasi baru. Pilih Berikutnya, lalu pilih Kaitkan. Proses ini menambahkan informasi pendaftaran Bursa Windows yang diperlukan ke manifes aplikasi.

  4. Ulangi langkah 1 dan 3 untuk proyek aplikasi Windows Phone Store dengan menggunakan pendaftaran yang sama dengan yang sebelumnya Anda buat untuk aplikasi Windows Store.

  5. Buka Pusat Dev Windows, lalu masuk dengan akun Microsoft Anda. Di Aplikasi saya, pilih pendaftaran aplikasi baru. Kemudian perluaspemberitahuan PushLayanan>.

  6. Pada halaman Pemberitahuan push , di bawah Windows Push Notification Services (WNS) dan Microsoft Azure Mobile Apps, pilih situs Layanan Langsung. Catat nilai SID Paket dan nilai saat ini di Rahasia Aplikasi.

    Pengaturan aplikasi di pusat pengembang

    Penting

    Rahasia aplikasi dan paket SID adalah kredensial keamanan yang penting. Jangan bagikan nilai-nilai ini dengan siapa pun atau distribusikan dengan aplikasi Anda.

Mengonfigurasi hub pemberitahuan untuk WNS

  1. Di portal Azure, pilih Telusuri Semua>App Services. Kemudian pilih back end Mobile Apps Anda. Di bawah Pengaturan, pilih App Service Push. Kemudian pilih nama hub pemberitahuan Anda.

  2. Buka Windows (WNS). Kemudian masukkan Kunci keamanan (rahasia klien) dan SID Paket yang Anda peroleh dari situs Layanan Langsung. Selanjutnya, pilih Simpan.

    Mengatur kunci WNS di portal

Back end Anda sekarang dikonfigurasi untuk menggunakan WNS untuk mengirim pemberitahuan push.

Menambahkan pemberitahuan push ke aplikasi Windows Anda

  1. Di Visual Studio, buka App.xaml.cs di proyek Windows, dan tambahkan pernyataan berikut.

    using Newtonsoft.Json.Linq;
    using Microsoft.WindowsAzure.MobileServices;
    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    using <your_TodoItemManager_portable_class_namespace>;
    

    Ganti <your_TodoItemManager_portable_class_namespace> dengan namespace proyek portabel Anda yang berisi TodoItemManager kelas .

  2. Di App.xaml.cs, tambahkan metode InitNotificationsAsync berikut:

    private async Task InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        const string templateBodyWNS =
            "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        JObject headers = new JObject();
        headers["X-WNS-Type"] = "wns/toast";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyWNS},
            {"headers", headers} // Needed for WNS.
        };
    
        await TodoItemManager.DefaultManager.CurrentClient.GetPush()
            .RegisterAsync(channel.Uri, templates);
    }
    

    Metode ini mendapatkan saluran pemberitahuan push, dan mendaftarkan templat untuk menerima pemberitahuan templat dari hub pemberitahuan Anda. Pemberitahuan templat yang mendukung messageParam akan dikirimkan ke klien ini.

  3. Di App.xaml.cs, perbarui definisi metode penanganan aktivitas OnLaunched dengan menambahkan pengubah async . Kemudian tambahkan baris kode berikut di akhir metode:

    await InitNotificationsAsync();
    

    Ini memastikan bahwa pendaftaran pemberitahuan push dibuat atau di-refresh setiap kali aplikasi diluncurkan. Penting untuk melakukan ini untuk menjamin bahwa saluran push WNS selalu aktif.

  4. Di Penjelajah Solusi untuk Visual Studio, buka file Package.appxmanifest, dan atur Toast Capable ke Ya di bawah Pemberitahuan.

  5. Buat aplikasi dan verifikasi bahwa Anda tidak memiliki kesalahan. Aplikasi klien Anda sekarang harus mendaftar untuk pemberitahuan templat dari back end Mobile Apps. Ulangi bagian ini untuk setiap proyek Windows dalam solusi Anda.

Menguji pemberitahuan push di aplikasi Windows Anda

  1. Di Visual Studio, klik kanan proyek Windows, dan klik Atur sebagai proyek startup.
  2. Tekan tombol Jalankan untuk membangun proyek dan memulai aplikasi.
  3. Di aplikasi, ketik nama untuk todoitem baru, lalu klik ikon plus (+) untuk menambahkannya.
  4. Verifikasi bahwa pemberitahuan diterima saat item ditambahkan.

Langkah berikutnya

Anda dapat mempelajari selengkapnya tentang pemberitahuan push:

Anda juga dapat melanjutkan ke salah satu tutorial berikut: