Menambahkan pemberitahuan push ke aplikasi Android Anda
Gambaran Umum
Dalam tutorial ini, Anda menambahkan pemberitahuan push ke proyek mulai cepat Android sehingga pemberitahuan push dikirim ke perangkat setiap kali rekaman dimasukkan.
Jika Anda tidak menggunakan proyek server mulai cepat yang diunduh, Anda memerlukan paket ekstensi pemberitahuan push. Untuk informasi selengkapnya, lihat Bekerja dengan SDK server backend .NET untuk Azure Mobile Apps.
Prasyarat
Anda membutuhkan hal berikut ini:
IDE, tergantung pada back end proyek Anda:
- Android Studio jika aplikasi ini memiliki back end Node.js.
- Visual Studio Community 2013 atau yang lebih baru jika aplikasi ini memiliki back end Microsoft .NET.
Android 2.3 atau yang lebih baru, revisi Repositori Google 27 atau yang lebih baru, dan Google Play Services 9.0.2 atau yang lebih baru untuk Firebase Cloud Messaging.
Selesaikan mulai cepat Android.
Membuat proyek yang mendukung Firebase Cloud Messaging
Masuk ke Konsol Firebase. Buat proyek Firebase baru jika Anda belum memilikinya.
Setelah membuat proyek, pilih Tambahkan Firebase ke aplikasi Android Anda.
Di halaman Tambahkan Firebase ke aplikasi Android Anda, lakukan langkah-langkah berikut:
Untuk nama paket Android, salin nilai applicationId Anda di file build.gradle aplikasi. Contohnya,
com.fabrikam.fcmtutorial1app
.Pilih Daftarkan aplikasi.
Pilih Unduh google-services.jsanda, simpan file ke folder aplikasi proyek Anda, lalu pilih Berikutnya.
Buat perubahan konfigurasi berikut ke proyek Anda di Android Studio.
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'
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'
Tambahkan baris berikut ke bagian akhir file build.gradle tingkat aplikasi setelah bagian dependensi.
apply plugin: 'com.google.gms.google-services'
Pilih Sinkronkan sekarang pada toolbar.
Pilih Selanjutnya.
Pilih Lompati langkah ini.
Di konsol Firebase, pilih cog untuk proyek Anda. Pilih Pengaturan Proyek.
Jika belum mengunduh file google-services.json ke dalam folder aplikasi proyek Android Studio Anda, Anda dapat melakukannya di halaman ini.
Alihkan ke tab Perpesanan Cloud di bagian atas.
Salin dan simpan Kunci Server untuk digunakan nanti. Gunakan nilai ini untuk mengonfigurasi hub Anda.
Mengonfigurasi 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.
Di portal Azure, buka App Services, lalu pilih back end aplikasi Anda. Di bawah Pengaturan, pilih Dorong.
Untuk menambahkan sumber daya hub pemberitahuan ke aplikasi, pilih Sambungkan. Anda dapat membuat hub atau menyambungkan ke hub yang sudah ada.
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.
Mengonfigurasi Azure untuk mengirim pemberitahuan push
Di portal Azure, klik Telusuri Semua>App Services, lalu klik back end Aplikasi Seluler Anda. Di bawah Pengaturan, klik App Service Push, lalu klik nama hub pemberitahuan Anda.
Buka Google (GCM), masukkan nilai Kunci Server yang Anda peroleh dari Firebase di prosedur sebelumnya, lalu klik Simpan.
Back end Mobile Apps sekarang dikonfigurasi untuk menggunakan Firebase Cloud Messaging. Ini memungkinkan Anda mengirim pemberitahuan push ke aplikasi yang berjalan di perangkat Android, dengan menggunakan hub pemberitahuan.
Mengaktifkan pemberitahuan push untuk proyek server
Gunakan prosedur yang cocok dengan jenis proyek back-end Anda—back end .NET atau back endNode.js.
Proyek back-end .NET
Di Visual Studio, klik kanan proyek server, dan klik Kelola Paket NuGet. Cari
Microsoft.Azure.NotificationHubs
, lalu klik Instal. Ini menginstal pustaka klien Notification Hubs.Di folder Pengontrol, buka TodoItemController.cs dan tambahkan pernyataan berikut
using
:using Microsoft.Azure.Mobile.Server.Config; using Microsoft.Azure.NotificationHubs;
Ganti metode
PostTodoItem
dengan kode berikut:public async Task<IHttpActionResult> PostTodoItem(TodoItem item) { TodoItem current = await InsertAsync(item); // 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); // Android payload var androidNotificationPayload = "{ \"data\" : {\"message\":\"" + item.Text + "\"}}"; try { // Send the push notification and log the results. var result = await hub.SendGcmNativeNotificationAsync(androidNotificationPayload); // 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"); } return CreatedAtRoute("Tables", new { id = current.Id }, current); }
Menerbitkan ulang proyek server.
Node.js proyek back-end
Siapkan proyek backend Anda.
Ganti kode yang ada di file todoitem.js dengan yang berikut ini:
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 GCM payload. var payload = { "data": { "message": 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 GCM native notification. context.push.gcm.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;
Ini mengirimkan pemberitahuan GCM yang berisi item.text saat item tugas baru disisipkan.
Saat mengedit file di komputer lokal Anda, terbitkan ulang proyek server.
Menambahkan pemberitahuan push ke aplikasi Anda
Di bagian ini, Anda memperbarui aplikasi Android klien untuk menangani pemberitahuan push.
Memverifikasi versi Android SDK
Karena pengembangan yang sedang berlangsung, versi Android SDK yang diinstal di Android Studio mungkin tidak cocok dengan versi dalam kode. Android SDK yang dirujuk dalam tutorial ini adalah versi 26, yang terbaru pada saat penulisan. Nomor versi dapat meningkat saat rilis baru SDK muncul, dan sebaiknya gunakan versi terbaru yang tersedia.
Dua gejala ketidakcocokan versi adalah:
- Saat membuat atau membangun kembali proyek, Anda mungkin mendapatkan pesan kesalahan Gradle seperti
Gradle sync failed: Failed to find target with hash string 'android-XX'
. - Objek Android standar dalam kode yang harus diselesaikan berdasarkan
import
pernyataan mungkin menghasilkan pesan kesalahan.
Jika salah satu dari ini muncul, versi Android SDK yang diinstal di Android Studio mungkin tidak cocok dengan target SDK proyek yang diunduh. Untuk memverifikasi versi, buat perubahan berikut:
Di Android Studio, klik Alat>Android>SDK Manager. Jika Anda belum menginstal platform SDK versi terbaru, klik untuk menginstalnya. Catat nomor versi.
Pada tab Project Explorer , di bawah Skrip Gradle, buka file build.gradle (Module: app). Pastikan compileSdkVersion dan targetSdkVersion diatur ke versi SDK terbaru yang diinstal. Mungkin
build.gradle
terlihat seperti ini:android { compileSdkVersion 26 defaultConfig { targetSdkVersion 26 } }
Langkah Selanjutnya adalah menginstal layanan Google Play. Firebase Cloud Messaging memiliki beberapa persyaratan tingkat API minimum untuk pengembangan dan pengujian, yang harus sesuai dengan properti minSdkVersion dalam manifes.
Jika Anda menguji dengan perangkat yang lebih lama, lihat Menambahkan Firebase ke Proyek Android Anda untuk menentukan seberapa rendah Anda dapat mengatur nilai ini, dan mengaturnya dengan tepat.
Menambahkan Firebase Cloud Messaging ke proyek
Di Android Studio, pilihStruktur ProyekFile>. Pilih Pemberitahuan, pilih Firebase Cloud Messaging, lalu klik OK.
Menambahkan kode
Di proyek aplikasi Anda, buka file
AndroidManifest.xml
. Tambahkan kode berikut setelahapplication
tag pembuka:<service android:name=".ToDoMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name=".ToDoInstanceIdService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service>
Buka file
ToDoActivity.java
, dan buat perubahan berikut:Tambahkan pernyataan impor:
import com.google.firebase.iid.FirebaseInstanceId;
Ubah definisi dari
MobileServiceClient
privat ke statis privat, sehingga sekarang terlihat seperti ini:private static MobileServiceClient mClient;
Tambahkan
registerPush
metode:public static void registerPush() { final String token = FirebaseInstanceId.getInstance().getToken(); if (token != null) { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { mClient.getPush().register(token); return null; } }.execute(); } }
Perbarui metode onCreate kelas
ToDoActivity
. Pastikan untuk menambahkan kode ini setelahMobileServiceClient
dibuat.registerPush();
Tambahkan kelas baru untuk menangani pemberitahuan. Di Project Explorer, buka nodejavayour-project-namespace> aplikasi>, dan klik kanan node nama paket. Klik Baru, lalu klik Kelas Java. Di Nama, ketik
ToDoMessagingService
, lalu klik OK. Kemudian, ganti deklarasi kelas dengan:import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; public class ToDoMessagingService extends FirebaseMessagingService { private static final int NOTIFICATION_ID = 1; @Override public void onMessageReceived(RemoteMessage remoteMessage) { String message = remoteMessage.getData().get("message"); if (message != null) { sendNotification("Notification Hub Demo", message); } } private void sendNotification(String title, String messageBody) { PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, ToDoActivity.class), 0); Notification.Builder notificationBuilder = new Notification.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle(title) .setContentText(messageBody) .setContentIntent(contentIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (notificationManager != null) { notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build()); } } }
Tambahkan kelas lain untuk menangani pembaruan token. Buat
ToDoInstanceIdService
kelas java dan ganti deklarasi kelas dengan:import com.google.firebase.iid.FirebaseInstanceIdService; public class ToDoInstanceIdService extends FirebaseInstanceIdService { @Override public void onTokenRefresh() { ToDoActivity.registerPush(); } }
Aplikasi Anda sekarang diperbarui untuk mendukung pemberitahuan push.
Menguji aplikasi terhadap layanan seluler yang diterbitkan
Anda dapat menguji aplikasi dengan langsung melampirkan ponsel Android dengan kabel USB, atau dengan menggunakan perangkat virtual di emulator.
Langkah berikutnya
Sekarang setelah Anda menyelesaikan tutorial ini, pertimbangkan untuk melanjutkan ke salah satu tutorial berikut:
- Tambahkan autentikasi ke aplikasi Android Anda. Pelajari cara menambahkan autentikasi ke proyek mulai cepat todolist di Android menggunakan IdP yang didukung.
- Aktifkan sinkronisasi offline untuk aplikasi Android Anda. Pelajari cara menambahkan dukungan offline ke aplikasi Anda dengan menggunakan back end Mobile Apps. Dengan sinkronisasi offline, pengguna dapat berinteraksi dengan aplikasi seluler—melihat, menambahkan, atau memodifikasi data—bahkan ketika tidak ada koneksi jaringan.