Tutorial: Kirim pemberitahuan push ke aplikasi Xamarin.Android menggunakan Notification Hubs

Gambaran Umum

Catatan

Untuk informasi tentang langkah-langkah penghentian dan migrasi Firebase Cloud Messaging, lihat migrasi Google Firebase Cloud Messaging.

Tutorial ini menunjukkan kepada Anda cara menggunakan Azure Notification Hubs untuk mengirim pemberitahuan push ke aplikasi Xamarin.Android. Anda membuat aplikasi Xamarin.Android kosong yang menerima pemberitahuan push dengan menggunakan Firebase Cloud Messaging (FCM). Anda menggunakan hub pemberitahuan untuk menyiarkan pemberitahuan push ke semua perangkat yang menjalankan aplikasi Anda. Kode yang sudah selesai tersedia dalam sampel aplikasi NotificationHubs.

Dalam tutorial ini, Anda akan melakukan langkah-langkah berikut:

  • Membuat proyek Firebase dan mengaktifkan Firebase Cloud Messaging
  • Membuat hub pemberitahuan
  • Membuat aplikasi Xamarin.Android dan menghubungkannya ke hub pemberitahuan
  • Mengirim pemberitahuan uji dari portal Microsoft Azure

Prasyarat

Membuat proyek Firebase dan mengaktifkan Firebase Cloud Messaging

  1. Masuk ke konsol Firebase. Buat projek Firebase baru jika Anda belum memilikinya.

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

    Add Firebase to your Android app

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

    1. Untuk nama paket Android, masukkan nama untuk paket Anda. Sebagai contoh: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. Pilih Daftarkan aplikasi.

    3. Pilih Unduh google-services.json. Selanjutnya simpan file ke folder proyek Anda dan pilih Berikutnya. Jika Anda belum membuat proyek Visual Studio, Anda dapat menjalankan langkah-langkah ini setelah membuat proyek.

      Download google-services.json

    4. Pilih Selanjutnya.

    5. Pilih Lompati langkah ini.

      Skip the last step

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

    Select Project Settings

  5. Jika Anda belum mengunduh file google-services.json, Anda dapat mengunduhnya di halaman ini.

    Download google-services.json from the General tab

  6. Alihkan ke tab Perpesanan Cloud di bagian atas. Salin dan simpan Kunci Server untuk digunakan nanti. Anda menggunakan nilai ini untuk mengonfigurasi hub pemberitahuan Anda.

    Copy server key

Membuat hub pemberitahuan

  1. Masuk ke portal Azure.

  2. Pilih Semua layanan di menu sebelah kiri. A screenshot showing select All Services for an existing namespace.

  3. Ketik Notification Hubs di kotak teks Layanan filter. Pilih ikon bintang di samping nama layanan untuk menambahkan layanan ke bagian FAVORITE di menu sebelah kiri. Pilih Notification Hubs.

    A screenshot showing how to filter for notification hubs.

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

    A screenshot showing how to create a new notification hub.

  5. Pada tab Dasar di halaman Notification Hub, lakukan langkah berikut ini:

    1. Di Langganan, pilih nama langganan Azure yang ingin Anda gunakan, lalu pilih grup sumber daya yang sudah ada, atau buat yang baru.

    2. Masukkan nama unik untuk namespace baru di Detail Namespace.

    3. Namespace berisi satu atau beberapa hub pemberitahuan, jadi ketikkan nama untuk hub di Detail Hub Pemberitahuan.

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

      Screenshot showing notification hub details.

    5. Tinjau opsi Zona Ketersediaan. Jika Anda memilih wilayah yang memiliki zona ketersediaan, kotak centang dipilih secara default. Zona Ketersediaan adalah fitur berbayar, sehingga biaya tambahan ditambahkan ke tingkat Anda.

    6. Pilih opsi Pemulihan bencana: Tidak ada, wilayah pemulihan berpasangan, atau wilayah pemulihan Fleksibel. Jika Anda memilih Wilayah pemulihan berpasangan, wilayah failover akan ditampilkan. Jika Anda memilih Wilayah pemulihan fleksibel, gunakan menu drop-down untuk memilih dari daftar wilayah pemulihan.

      Screenshot showing availability zone details.

    7. Pilih Buat.

  6. Saat penyebaran selesai, pilih Buka sumber daya.

Konfigurasi pengaturan GCM untuk hub pemberitahuan

  1. Pilih Google (GCM/FCM)/ di bagian Pengaturan di menu sebelah kiri.

  2. Masukkan kunci server yang Anda catat dari Google Firebase Console.

  3. Pilih Simpan pada toolbar.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

Hub pemberitahuan Anda dikonfigurasi untuk bekerja dengan FCM, dan Anda memiliki string koneksi untuk mendaftarkan aplikasi Anda untuk menerima pemberitahuan dan mengirim pemberitahuan push.

Membuat aplikasi Xamarin.Android dan menghubungkannya ke hub pemberitahuan

Buat proyek Visual Studio dan tambahkan paket NuGet

Catatan

Langkah-langkah yang didokumentasikan dalam tutorial ini adalah untuk Visual Studio 2017.

  1. Di Visual Studio, buka menu File, pilih Baru, lalu pilih Project. Di jendela Proyek Baru, lakukan langkah-langkah ini:

    1. Perluas Terinstal, Visual C#, lalu klik Android.

    2. Pilih Android App (Xamarin) dari daftar.

    3. Masukkan nama untuk proyek tersebut.

    4. Pilih lokasi untuk proyek.

    5. Pilih OK

      New Project dialog

  2. Pada kotak dialog Aplikasi Android Baru, pilih Aplikasi Kosong, dan pilih OK.

    Screenshot that highlights the Blank App template.

  3. Di jendela Penjelajah Solusi, perluas Properti, dan klik AndroidManifest.xml . Perbarui nama paket agar sesuai dengan nama paket yang Anda masukkan saat menambahkan Firebase Cloud Messaging ke proyek Anda di Google Firebase Console.

    Package name in GCM

  4. Tetapkan versi Android target untuk proyek ke Android 10.0 dengan mengikuti langkah-langkah berikut:

    1. Klik kanan proyek Anda, dan pilih Properti.
    2. Untuk bidang Kompilasi menggunakan versi Android: (Kerangka kerja target), pilih Android 10.0.
    3. Pilih Ya pada kotak pesan untuk melanjutkan dengan mengubah kerangka kerja target.
  5. Tambahkan paket NuGet yang diperlukan ke proyek dengan mengikuti langkah-langkah berikut:

    1. Klik kanan proyek Anda, dan pilih Kelola Paket NuGet....

    2. Beralih ke tab Terinstal, pilih Xamarin.Android.Support.Design, dan pilih Perbarui di panel kanan untuk memperbarui paket ke versi terbaru.

    3. Beralih ke tab Telusuri. Cari Xamarin.GooglePlayServices.Base. Pilih Xamarin.GooglePlayServices.Base dalam daftar hasil. Lalu pilih Pasang.

      Google Play Services NuGet

    4. Di jendela Manajer Paket NuGet, cari Xamarin.Firebase.Messaging. Pilih Xamarin.Firebase.Messaging di daftar hasil. Lalu pilih Pasang.

    5. Sekarang, cari Xamarin.Azure.NotificationHubs.Android. Pilih Xamarin.Azure.NotificationHubs.Android dalam daftar hasil. Lalu pilih Pasang.

Tambahkan File JSON Layanan Google

  1. Salin file google-services.json yang Anda unduh dari Google Firebase Console ke folder proyek.

  2. Tambahkan google-services.json ke proyek.

  3. Pilih google-services.json di jendela Penjelajah Solusi.

  4. Di panel Properti, atur Tindakan Bangun ke GoogleServicesJson. Jika Anda tidak melihat GoogleServicesJson, tutup Visual Studio, luncurkan kembali, buka kembali proyek, dan coba lagi.

    GoogleServicesJson build action

Menyiapkan hub pemberitahuan di proyek Anda

Mendaftar dengan Firebase Cloud Messaging

  1. Jika Anda melakukan migrasi dari Google Cloud Messaging ke Firebase, file AndroidManifest.xml proyek Anda mungkin berisi konfigurasi GCM yang usang, yang dapat menyebabkan duplikasi pemberitahuan. Edit file dan hapus baris berikut dalam bagian <application>, jika ada:

    <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>
    
  2. Tambahkan pernyataan berikut sebelum elemen aplikasi.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    
  3. Kumpulkan informasi berikut untuk aplikasi Android dan hub pemberitahuan:

    • Dengarkan string koneksi: Pada dasbor di portal Microsoft Azure, pilih Tampilkan string koneksi. Salin string koneksi DefaultListenSharedAccessSignature untuk nilai ini.
    • Nama hub: Nama hub Anda dari portal Microsoft Azure. Misalnya, mynotificationhub2.
  4. Di jendela Penjelajah Solusi, klik kanan proyek Anda, pilih Tambahkan, lalu pilih Kelas.

  5. Buat kelas Constants.cs untuk proyek Xamarin Anda dan tentukan nilai konstanta berikut di kelas. Ganti tempat penampung dengan nilai Anda.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. Tambahkan pernyataan penggunaan berikut ke MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. Tambahkan properti berikut ke kelas MainActivity:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. Di MainActivity.cs, tambahkan kode berikut ke OnCreate setelah base.OnCreate(savedInstanceState):

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. Tambahkan kelas yang dinamai AzureListener ke proyek Anda.

  10. Tambahkan pernyataan penggunaan berikut ke AzureListener.cs.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. Tambahkan yang berikut ini di atas deklarasi kelas Anda, dan buat kelas Anda mewarisi Java.Lang.Object dan mengimplementasikan INotificationListener :

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. Tambahkan kode berikut di dalam kelas AzureListener, untuk memproses pesan yang diterima.

        public void OnPushNotificationReceived(Context context, INotificationMessage message)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
    
            var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID);
    
            notificationBuilder.SetContentTitle(message.Title)
                        .SetSmallIcon(Resource.Drawable.ic_launcher)
                        .SetContentText(message.Body)
                        .SetAutoCancel(true)
                        .SetShowWhen(false)
                        .SetContentIntent(pendingIntent);
    
            var notificationManager = NotificationManager.FromContext(this);
    
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    
  13. Bangun proyek Anda.

  14. Jalankan aplikasi Anda di perangkat atau emulator yang dimuat

Mengirim pemberitahuan uji dari portal Microsoft Azure

Anda dapat menguji pemberitahuan penerimaan di aplikasi Anda dengan opsi Uji Pengiriman di portal Azure. Ini mengirimkan pemberitahuan push pengujian ke perangkat Anda.

Azure portal - Test Send

Pemberitahuan push biasanya dikirim dalam layanan ujung belakang seperti Aplikasi Seluler atau ASP.NET menggunakan pustaka yang kompatibel. Jika pustaka tidak tersedia untuk ujung belakang, Anda juga dapat menggunakan REST API secara langsung untuk mengirim pesan pemberitahuan.

Langkah berikutnya

Dalam tutorial ini, Anda akan mengirimkan pemberitahuan siaran ke semua perangkat Android Anda yang terdaftar di backend{i>.