Tutorial: Mengirim pemberitahuan push ke perangkat Android menggunakan Firebase SDK versi 0.6

Tutorial ini menjelaskan cara menggunakan Azure Notification Hubs dan Firebase Cloud Messaging (FCM) SDK versi 0.6 untuk mengirim pemberitahuan push ke aplikasi Android. Dalam tutorial ini, Anda akan membuat aplikasi Android kosong yang menerima pemberitahuan push menggunakan Firebase Cloud Messaging (FCM).

Penting

Google akan berhenti mendukung HTTP warisan FCM pada 20 Juni 2024. Untuk informasi selengkapnya, lihat Azure Notification Hubs dan migrasi Google Firebase Cloud Messaging.

Kode lengkap untuk tutorial ini dapat diunduh dari GitHub.

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

  • Membuat proyek Android Studio.
  • Buat proyek Firebase yang mendukung Firebase Cloud Messaging.
  • Membuat hub.
  • Hubungkan aplikasi Anda ke hub.
  • Menguji aplikasi.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus memiliki akun Azure yang aktif. Jika Anda tidak memiliki akun, Anda dapat membuat akun uji coba gratis hanya dalam beberapa menit. Untuk detailnya, lihat Uji Coba Gratis Azure.

Hal-hal yang diperlukan:

  • Versi terbaru Android Studio
  • Android 2.3 atau yang lebih tinggi untuk Firebase Cloud Messaging
  • Google Repository revisi 27 atau lebih tinggi untuk Firebase Cloud Messaging
  • Google Play Services 9.0.2 atau yang lebih tinggi untuk Firebase Cloud Messaging

Menyelesaikan tutorial ini merupakan prasyarat untuk melakukan semua tutorial Notification Hubs lainnya untuk aplikasi Android.

Membuat proyek Android Studio

  1. Luncurkan Android Studio.
  2. Pilih File, arahkan ke Baru, lalu pilih Proyek Baru.
  3. Pada halaman Pilih proyek Anda, pilih Aktivitas Kosong, lalu pilih Berikutnya.
  4. Pada halaman Konfigurasikan proyek Anda, lakukan langkah-langkah berikut:
    1. Masukkan nama untuk aplikasi.

    2. Tentukan lokasi tempat menyimpan file proyek.

    3. Pilih Selesai.

      Configure your project)

Buat proyek Firebase yang mendukung FCM

  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, salin nilai applicationId Anda di file build.gradle aplikasi. Contohnya, com.fabrikam.fcmtutorial1app.

      Specify the package name

    2. Pilih Daftarkan aplikasi.

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

    Download 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.

      build.gradle configuration changes

  6. Pilih Selanjutnya.

  7. Pilih Lompati langkah ini.

    Skip the last step

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

    Select Project Settings

  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.

  12. Jika Anda tidak melihat kunci Server di tab Firebase Cloud Messaging, ikuti langkah-langkah tambahan ini.

    1. Klik menu tiga titik judul "Cloud Messaging API (Warisan) 🚫 Dinonaktifkan"
    2. Ikuti tautan yang ditawarkan ke "Kelola API di Google Cloud Console".
    3. Di konsol cloud google, tekan tombol untuk mengaktifkan API googlecloudmessaging.
    4. Tunggu beberapa saat.
    5. Kembali ke tab Cloud Messaging proyek firebase console Anda, dan refresh halaman.
    6. Lihat bahwa header CLOUD Messaging API telah berubah menjadi "Cloud Messaging API (Legacy) ✅ Diaktifkan" dan sekarang menampilkan Kunci Server.

    Screenshot showing the Enable Cloud Messaging API (Legacy) tab.

Mengonfigurasi hub

  1. Masuk ke portal Microsoft 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 Firebase Cloud Messaging untuk hub

  1. Di panel kiri, di bawah Pengaturan, pilih Google (GCM/FCM).

  2. Masukkan kunci server untuk proyek FCM yang Anda simpan sebelumnya.

  3. Pilih Simpan pada toolbar.

    Azure Notification Hub - Google (FCM)

  4. Portal Microsoft Azure menampilkan pesan dalam pemberitahuan bahwa hub telah berhasil diperbarui. Tombol Simpan dinonaktifkan.

Hub Anda kini dikonfigurasi agar dapat digunakan dengan Firebase Cloud Messaging. Anda juga memiliki string koneksi yang diperlukan untuk mengirim pemberitahuan ke perangkat dan mendaftarkan aplikasi untuk menerima pemberitahuan.

Menyambungkan aplikasi Anda ke hub pemberitahuan

Menambahkan layanan Google Play ke proyek

  1. Di Android Studio, pilih Alat pada menu, lalu pilih SDK Manager.

  2. Pilih versi target Android SDK yang digunakan dalam proyek Anda. Lalu pilih Tampilkan Detail Paket.

    Android SDK Manager - select target version

  3. Pilih Google API,jika belum diinstal.

    Android SDK Manager - Google APIs selected

  4. Beralih ke tab Alat SDK. Jika Anda belum menginstal Layanan Google Play, pilih Layanan Google Play seperti yang ditunjukkan pada gambar berikut. Selanjutnya pilih Terapkan untuk menginstal. Perhatikan jalur SDK, untuk digunakan di langkah selanjutnya.

    Android SDK Manager - Google Play Services selected

  5. Jika Anda melihat kotak dialog Konfirmasi Perubahan, pilih OK. Penginstal Komponen akan menginstal komponen yang diminta. Pilih Selesai setelah komponen diinstal.

  6. Pilih OK untuk menutup kotak dialog Pengaturan untuk Proyek Baru.

  7. Buka file AndroidManifest.xml, lalu tambahkan tag berikut ke tag aplikasi.

    <meta-data android:name="com.google.android.gms.version"
         android:value="@integer/google_play_services_version" />
    

Menambahkan pustaka Azure Notification Hubs

  1. Di file Build.Gradle untuk aplikasi, tambahkan baris berikut di bagian dependensi.

    implementation 'com.microsoft.azure:notification-hubs-android-sdk:0.6@aar'
    
  2. Tambahkan repositori berikut setelah bagian dependensi.

    repositories {
        maven {
            url "https://dl.bintray.com/microsoftazuremobile/SDK"
        }
    }
    

Menambahkan dukungan Google Firebase

  1. Di file Build.Gradle untuk aplikasi, tambahkan baris berikut di bagian dependensi jika belum ada.

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.google.firebase:firebase-iid:21.1.0'
    
  2. Tambahkan plug-in berikut di akhir file jika belum ada.

    apply plugin: 'com.google.gms.google-services'
    
  3. Pilih Sinkronkan Sekarang pada toolbar.

Memperbarui file AndroidManifest.xml

  1. Setelah menerima token pendaftaran FCM, gunakan untuk mendaftar di Azure Notification Hubs. Dukung pendaftaran ini di latar belakang menggunakan IntentService bernama RegistrationIntentService. Layanan ini juga merefresh token pendaftaran FCM Anda. Buat kelas bernama FirebaseService sebagai subkelas FirebaseMessagingService dan ambil alih metode onMessageReceived untuk menerima dan menangani notifikasi.

    Tambahkan definisi layanan berikut ke file AndroidManifest.xml, di dalam tag <application>.

    <service
        android:name=".RegistrationIntentService"
        android:exported="false">
    </service>
    <service
        android:name=".FirebaseService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    
  2. Tambahkan izin terkait FCM berikut ini di bawah tag </application>.

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    

Tambahkan kode

  1. Di Tampilan Proyek, perluasapp>src>main>java. Klik kanan folder paket Anda di bawah java, pilih Baru, lalu pilih Kelas Java. Masukkan NotificationSettings sebagai namanya, lalu pilih OK.

    Pastikan untuk memperbarui dua placeholder ini dalam kode berikut untuk NotificationSettings kelas:

    • HubListenConnectionString: String koneksi DefaultListenAccessSignature untuk hub Anda. Anda dapat menyalin string koneksi tersebut dengan mengeklik Kebijakan Akses di hub Anda di portal Microsoft Azure.

    • HubName: Gunakan nama hub Anda yang muncul di halaman hub di portal Microsoft Azure.

      NotificationSettings kode:

      public class NotificationSettings {
          public static String HubName = "<Your HubName>";
          public static String HubListenConnectionString = "<Enter your DefaultListenSharedAccessSignature connection string>";
      }
      

      Penting

      Masukkan nama dan DefaultListenSharedAccessSignature hub Anda sebelum melanjutkan.

  2. Tambahkan kelas baru lainnya ke proyek Anda yang bernama RegistrationIntentService. Kelas ini menerapkan antarmuka IntentService. Selain itu, kelas ini menangani refresh token FCM dan pendaftaran dengan hub pemberitahuan.

    Gunakan kode berikut untuk kelas ini.

    import android.app.IntentService;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
    import android.util.Log;
    import com.google.android.gms.tasks.OnSuccessListener;
    import com.google.firebase.iid.FirebaseInstanceId;
    import com.google.firebase.iid.InstanceIdResult;
    import com.microsoft.windowsazure.messaging.NotificationHub;
    import java.util.concurrent.TimeUnit;
    
    public class RegistrationIntentService extends IntentService {
    
        private static final String TAG = "RegIntentService";
        String FCM_token = null;
    
        private NotificationHub hub;
    
        public RegistrationIntentService() {
            super(TAG);
        }
    
        @Override
        protected void onHandleIntent(Intent intent) {
    
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
            String resultString = null;
            String regID = null;
            String storedToken = null;
    
            try {
                FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() { 
                    @Override 
                    public void onSuccess(InstanceIdResult instanceIdResult) { 
                        FCM_token = instanceIdResult.getToken(); 
                        Log.d(TAG, "FCM Registration Token: " + FCM_token); 
                    } 
                }); 
                TimeUnit.SECONDS.sleep(1);
    
                // Storing the registration ID that indicates whether the generated token has been
                // sent to your server. If it is not stored, send the token to your server.
                // Otherwise, your server should have already received the token.
                if (((regID=sharedPreferences.getString("registrationID", null)) == null)){
    
                    NotificationHub hub = new NotificationHub(NotificationSettings.HubName,
                            NotificationSettings.HubListenConnectionString, this);
                    Log.d(TAG, "Attempting a new registration with NH using FCM token : " + FCM_token);
                    regID = hub.register(FCM_token).getRegistrationId();
    
                    // If you want to use tags...
                    // Refer to : https://azure.microsoft.com/documentation/articles/notification-hubs-routing-tag-expressions/
                    // regID = hub.register(token, "tag1,tag2").getRegistrationId();
    
                    resultString = "New NH Registration Successfully - RegId : " + regID;
                    Log.d(TAG, resultString);
    
                    sharedPreferences.edit().putString("registrationID", regID ).apply();
                    sharedPreferences.edit().putString("FCMtoken", FCM_token ).apply();
                }
    
                // Check to see if the token has been compromised and needs refreshing.
               else if (!(storedToken = sharedPreferences.getString("FCMtoken", "")).equals(FCM_token)) {
    
                    NotificationHub hub = new NotificationHub(NotificationSettings.HubName,
                            NotificationSettings.HubListenConnectionString, this);
                    Log.d(TAG, "NH Registration refreshing with token : " + FCM_token);
                    regID = hub.register(FCM_token).getRegistrationId();
    
                    // If you want to use tags...
                    // Refer to : https://azure.microsoft.com/documentation/articles/notification-hubs-routing-tag-expressions/
                    // regID = hub.register(token, "tag1,tag2").getRegistrationId();
    
                    resultString = "New NH Registration Successfully - RegId : " + regID;
                    Log.d(TAG, resultString);
    
                    sharedPreferences.edit().putString("registrationID", regID ).apply();
                    sharedPreferences.edit().putString("FCMtoken", FCM_token ).apply();
                }
    
                else {
                    resultString = "Previously Registered Successfully - RegId : " + regID;
                }
            } catch (Exception e) {
                Log.e(TAG, resultString="Failed to complete registration", e);
                // If an exception happens while fetching the new token or updating registration data
                // on a third-party server, this ensures that we'll attempt the update at a later time.
            }
    
            // Notify UI that registration has completed.
            if (MainActivity.isVisible) {
                MainActivity.mainActivity.ToastNotify(resultString);
            }
        }
    }
    
  3. Di kelas MainActivity, tambahkan pernyataan import berikut di atas deklarasi kelas.

    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GoogleApiAvailability;
    import android.content.Intent;
    import android.util.Log;
    import android.widget.TextView;
    import android.widget.Toast;
    
  4. Tambahkan anggota berikut di bagian atas kelas. Gunakan kolom ini untuk memeriksa ketersediaan Google Play Services seperti yang direkomendasikan oleh Google.

    public static MainActivity mainActivity;
    public static Boolean isVisible = false;
    private static final String TAG = "MainActivity";
    private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
    
  5. Di kelas MainActivity, tambahkan metode berikut untuk memeriksa ketersediaan Google Play Services.

    /**
    * Check the device to make sure it has the Google Play Services APK. If
    * it doesn't, display a dialog box that enables  users to download the APK from
    * the Google Play Store or enable it in the device's system settings.
    */
    
    private boolean checkPlayServices() {
        GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
        int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
        if (resultCode != ConnectionResult.SUCCESS) {
            if (apiAvailability.isUserResolvableError(resultCode)) {
                apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
                        .show();
            } else {
                Log.i(TAG, "This device is not supported by Google Play Services.");
                ToastNotify("This device is not supported by Google Play Services.");
                finish();
            }
            return false;
        }
        return true;
    }
    
  6. Di kelas MainActivity, tambahkan kode berikut yang memeriksa Google Play Services sebelum memanggil IntentService untuk mendapatkan token pendaftaran FCM Anda dan mendaftar dengan hub Anda:

    public void registerWithNotificationHubs()
    {
        if (checkPlayServices()) {
            // Start IntentService to register this application with FCM.
            Intent intent = new Intent(this, RegistrationIntentService.class);
            startService(intent);
        }
    }
    
  7. Dalam metode OnCreate kelas MainActivity, tambahkan kode berikut untuk memulai proses pendaftaran saat aktivitas dibuat:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mainActivity = this;
        registerWithNotificationHubs();
        FirebaseService.createChannelAndHandleNotifications(getApplicationContext());
    }
    
  8. Untuk memverifikasi status aplikasi dan status laporan di aplikasi Anda, tambahkan metode tambahan ini ke MainActivity:

    @Override
    protected void onStart() {
        super.onStart();
        isVisible = true;
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        isVisible = false;
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        isVisible = true;
    }
    
    @Override
    protected void onStop() {
        super.onStop();
        isVisible = false;
    }
    
    public void ToastNotify(final String notificationMessage) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this, notificationMessage, Toast.LENGTH_LONG).show();
                TextView helloText = (TextView) findViewById(R.id.text_hello);
                helloText.setText(notificationMessage);
            }
        });
    }
    
  9. Metode ToastNotify ini menggunakan kontrol "Halo Dunia"TextView untuk melaporkan status dan pemberitahuan secara terus-menerus di aplikasi. Di tata letak res>layout>activity_main.xml, tambahkan ID berikut untuk kontrol tersebut.

    android:id="@+id/text_hello"
    

    Screenshot that shows the android:id=

  10. Selanjutnya, tambahkan subkelas untuk penerima yang Anda tetapkan di AndroidManifest.xml. Tambahkan kelas baru lainnya ke proyek Anda yang bernama FirebaseService.

  11. Tambahkan pernyataan impor berikut di bagian atas FirebaseService.java:

    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    import android.util.Log;
    import android.app.NotificationChannel;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.media.RingtoneManager;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import androidx.core.app.NotificationCompat;
    
  12. Tambahkan kode berikut untuk kelas FirebaseService, guna menjadikannya sebagai subkelas dari FirebaseMessagingService.

    Kode ini mengambil alih metode onMessageReceived dan melaporkan pemberitahuan yang diterima. Kode juga akan mengirimkan pemberitahuan push ke manajer pemberitahuan Android menggunakan metode sendNotification() tersebut. Panggil metode sendNotification() saat aplikasi tidak berjalan dan pemberitahuan diterima.

    public class FirebaseService extends FirebaseMessagingService
    {
        private String TAG = "FirebaseService";
    
        public static final String NOTIFICATION_CHANNEL_ID = "nh-demo-channel-id";
        public static final String NOTIFICATION_CHANNEL_NAME = "Notification Hubs Demo Channel";
        public static final String NOTIFICATION_CHANNEL_DESCRIPTION = "Notification Hubs Demo Channel";
    
        public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        static Context ctx;
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            // ...
    
            // TODO(developer): Handle FCM messages here.
            // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
            Log.d(TAG, "From: " + remoteMessage.getFrom());
    
            String nhMessage;
            // Check if message contains a notification payload.
            if (remoteMessage.getNotification() != null) {
                Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
    
                nhMessage = remoteMessage.getNotification().getBody();
            }
            else {
                nhMessage = remoteMessage.getData().values().iterator().next();
            }
    
            // Also if you intend on generating your own notifications as a result of a received FCM
            // message, here is where that should be initiated. See sendNotification method below.
            if (MainActivity.isVisible) {
                MainActivity.mainActivity.ToastNotify(nhMessage);
            }
            sendNotification(nhMessage);
        }
    
        private void sendNotification(String msg) {
    
            Intent intent = new Intent(ctx, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
            mNotificationManager = (NotificationManager)
                    ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    
            PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
                    intent, PendingIntent.FLAG_ONE_SHOT);
    
            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                    ctx,
                    NOTIFICATION_CHANNEL_ID)
                    .setContentText(msg)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setSmallIcon(android.R.drawable.ic_popup_reminder)
                    .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL);
    
            notificationBuilder.setContentIntent(contentIntent);
            mNotificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
        }
    
        public static void createChannelAndHandleNotifications(Context context) {
            ctx = context;
    
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel(
                        NOTIFICATION_CHANNEL_ID,
                        NOTIFICATION_CHANNEL_NAME,
                        NotificationManager.IMPORTANCE_HIGH);
                channel.setDescription(NOTIFICATION_CHANNEL_DESCRIPTION);
                channel.setShowBadge(true);
    
                NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
                notificationManager.createNotificationChannel(channel);
             }
        }
    }
    
  13. Di Android Studio, pada bilah menu, pilih Build>Rebuild Project untuk memastikan bahwa tidak ada kesalahan apa pun dalam kode Anda. Jika Anda menerima kesalahan tentang ikon ic_launcher tersebut, hapus pernyataan berikut dari file AndroidManifest.xml:

        android:icon="@mipmap/ic_launcher"
    
  14. Pastikan Anda memiliki perangkat virtual untuk menjalankan aplikasi. Jika Anda tidak memilikinya, tambahkan satu sebagai berikut:

    1. Open device manager
    2. Create virtual device
  15. Jalankan aplikasi di perangkat yang Anda pilih dan verifikasi bahwa aplikasi berhasil didaftarkan ke hub.

    Catatan

    Pendaftaran mungkin gagal saat peluncuran awal hingga metode onTokenRefresh() dari instans layanan ID dipanggil. Refresh akan memulai pendaftaran yang sukses dengan hub pemberitahuan.

    Device registration successful

Menguji pengiriman pemberitahuan dari hub pemberitahuan

Anda dapat mengirim pemberitahuan push dari portal Microsoft Azure dengan melakukan langkah-langkah berikut:

  1. Di portal Microsoft Azure, pada halaman Notification Hub untuk hub Anda, pilih Uji Kirim di bagian Pemecahan Masalah.

  2. Untuk Platform, pilih Android.

  3. Pilih Kirim. Anda tidak akan melihat pemberitahuan di perangkat Android karena Anda belum menjalankan aplikasi ponsel di perangkat tersebut. Setelah menjalankan aplikasi seluler, pilih lagi tombol Kirim untuk melihat pesan pemberitahuan.

  4. Lihat hasil operasi dalam daftar di bagian bawah.

    Azure Notification Hubs - Test Send

  5. Anda akan melihat pesan pemberitahuan di perangkat Anda.

    Notification message on device

Pemberitahuan push biasanya dikirim dalam layanan ujung belakang seperti Mobile Apps 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.

Berikut ini adalah daftar beberapa tutorial lain yang mungkin ingin Anda lihat untuk mengirim pemberitahuan:

Menjalankan aplikasi ponsel di emulator

Sebelum menguji pemberitahuan push di dalam emulator, pastikan gambar emulator Anda mendukung level Google API yang Anda pilih untuk aplikasi. Jika gambar tidak mendukung API Google asli, Anda mungkin mendapatkan pengecualianSERVICE_NOT_AVAILABLE.

Pastikan juga untuk menambahkan akun Google ke emulator yang sedang berjalan di bawah>Akun Pengaturan. Jika tidak, upaya Anda untuk mendaftar di FCM dapat mengakibatkan pengecualian AUTHENTICATION_FAILED.

Langkah berikutnya

Dalam tutorial ini, Anda menggunakan Firebase Cloud Messaging untuk menyiarkan pemberitahuan ke semua perangkat Android yang terdaftar di layanan ini. Untuk mempelajari cara mengirim pemberitahuan push ke perangkat tertentu, lanjutkan ke tutorial berikut: