Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan cloud Baidu adalah layanan cloud Tiongkok yang dapat Anda gunakan untuk mengirim notifikasi push ke perangkat seluler.
Karena Google Play dan FCM (Firebase Cloud Messaging) tidak tersedia di Tiongkok, Anda perlu menggunakan penyimpanan aplikasi dan layanan push yang berbeda. Baidu adalah salah satunya, dan yang saat ini digunakan oleh Notification Hub.
Prasyarat
Tutorial ini memerlukan:
- Android SDK (kami berasumsi bahwa Anda menggunakan Android Studio), yang dapat Anda unduh dari situs Android
- Baidu Push Android SDK
Nota
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.
Untuk memulai, lakukan hal berikut ini:
- Buat akun Baidu.
- Buat proyek pendorongan cloud Baidu, dan catat kunci API dan kunci rahasia.
Mengonfigurasi hub pemberitahuan baru
Masuk ke portal Azure.
Pilih Semua layanan di menu sebelah kiri.
Ketik Notification Hubs di kotak teks Filter services. Pilih ikon bintang di samping nama layanan untuk menambahkan layanan ke bagian FAVORITE di menu sebelah kiri. Pilih Notification Hubs.
Pada halaman Notification Hubs, pilih Tambahkan pada toolbar.
Pada tab Dasar di halaman Notification Hub, lakukan langkah berikut ini:
Di Langganan, pilih nama langganan Azure yang ingin Anda gunakan, lalu pilih grup sumber daya yang sudah ada, atau buat yang baru.
Masukkan nama unik untuk namespace baru di Detail Namespace.
Namespace berisi satu atau beberapa hub pemberitahuan, jadi ketikkan nama untuk hub di Detail Hub Pemberitahuan.
Pilih nilai dari kotak daftar drop-down Lokasi. Nilai ini menentukan lokasi tempat Anda ingin membuat hub.
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.
Pilih opsi Pemulihan bencana: Tidak ada, wilayah pemulihan berpasangan, atau wilayah pemulihan Fleksibel. Jika Anda memilih Wilayah pemulihan yang berpasangan, wilayah failover akan ditampilkan. Jika Anda memilih Wilayah pemulihan fleksibel, gunakan menu drop-down untuk memilih dari daftar wilayah pemulihan.
Pilih Buat.
Saat penyebaran selesai, pilih Masuk ke sumber daya.
6. Di hub pemberitahuan Anda, pilih Layanan Pemberitahuan lalu Baidu (Android Tiongkok).
7. Gulir ke bawah ke bagian pengaturan pemberitahuan Baidu. Masukkan kunci API dan kunci rahasia yang Anda peroleh dari konsol Baidu di proyek Baidu Cloud Push. Lalu klik Simpan.
Hub pemberitahuan Anda sekarang dikonfigurasi untuk bekerja dengan Baidu. Anda juga memiliki string koneksi untuk mendaftarkan aplikasi Anda agar dapat mengirim dan menerima pemberitahuan push.
Make a note of the DefaultListenSharedAccessSignature
and DefaultFullSharedAccessSignature
from the Access connection information window.
Menyambungkan aplikasi Anda ke hub pemberitahuan
Di Android Studio, buat proyek Android baru (File > Proyek Baru > ).
Masukkan Nama Aplikasi dan pastikan bahwa versi Minimum Required SDK diatur ke API 16: Android 4.1. Pastikan juga nama paket Anda (应用包名) sama seperti di Portal Push Cloud Baidu
Klik Berikutnya dan lanjutkan mengikuti panduan hingga jendela Buat Aktivitas muncul. Pastikan Aktivitas Kosong dipilih, dan akhirnya pilih Selesai untuk membuat Aplikasi Android baru.
Make sure that the Project Build Target is set correctly.
Then add Azure Notification Hubs libraries.
Build.Gradle
Dalam file untuk aplikasi, tambahkan baris berikut di bagian dependensi.implementation 'com.microsoft.azure:notification-hubs-android-sdk:0.6@aar' implementation 'com.microsoft.azure:azure-notifications-handler:1.0.1@aar'
Tambahkan repositori berikut setelah bagian dependensi.
repositories { maven { url "https://dl.bintray.com/microsoftazuremobile/SDK" } }
Untuk menghindari konflik Daftar, tambahkan kode berikut dalam file proyek
Manifest.xml
:<manifest package="YOUR.PACKAGE.NAME" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
and in the
<application/>
tag:<application tools:replace="android:allowBackup,icon,theme,label">
Unduh dan buka zip Baidu Push Android SDK. Copy the
pushservice-x.y.z jar
file in the libs folder. Kemudian salin.so
file disrc/main/jniLibs
folder (buat folder baru) aplikasi Android Anda.Di folder proyek
libs
, klik kanan padapushervice-x.y.z.jar
file; pilih Tambahkan sebagai Pustaka untuk menyertakan pustaka ini dalam proyek.Buka file proyek
AndroidManifest.xml
Android dan tambahkan izin yang diperlukan oleh Baidu SDK. GantiYOURPACKAGENAME
dengan nama paket Anda.<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> !! <uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YOURPACKAGENAME" /> !!<permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YOURPACKAGENAME" android:protectionLevel="normal" />
Tambahkan konfigurasi berikut dalam elemen aplikasi setelah
.MainActivity
elemen aktivitas, ganti nama proyek Anda (misalnya,com.example.BaiduTest
):<activity android:name="com.baidu.android.pushservice.richmedia.MediaViewActivity" android:configChanges="orientation|keyboardHidden" android:label="MediaViewActivity" /> <activity android:name="com.baidu.android.pushservice.richmedia.MediaListActivity" android:configChanges="orientation|keyboardHidden" android:label="MediaListActivity" android:launchMode="singleTask" /> <!-- Push application definition message --> <receiver android:name=".MyPushMessageReceiver"> <intent-filter> <!-- receive push message--> <action android:name="com.baidu.android.pushservice.action.MESSAGE" /> <!-- receive bind,unbind,fetch,delete.. message--> <action android:name="com.baidu.android.pushservice.action.RECEIVE" /> <action android:name="com.baidu.android.pushservice.action.notification.CLICK" /> </intent-filter> </receiver> <receiver android:name="com.baidu.android.pushservice.PushServiceReceiver" android:process=":bdservice_v1"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="com.baidu.android.pushservice.action.notification.SHOW" /> <action android:name="com.baidu.android.pushservice.action.media.CLICK" /> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver> <receiver android:name="com.baidu.android.pushservice.RegistrationReceiver" android:process=":bdservice_v1"> <intent-filter> <action android:name="com.baidu.android.pushservice.action.METHOD" /> <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <service android:name="com.baidu.android.pushservice.PushService" android:exported="true" android:process=":bdservice_v1"> <intent-filter> <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" /> </intent-filter> </service> <service android:name="com.baidu.android.pushservice.CommandService" android:exported="true" /> <!-- Adapt the ContentProvider declaration required for the Android N system, and the write permissions include the application package name--> <provider android:name="com.baidu.android.pushservice.PushInfoProvider" android:authorities="com.baidu.push.example.bdpush" android:exported="true" android:protectionLevel="signature" android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER. yourprojectname " /> <!-- API Key of the Baidu application --> <meta-data android:name="api_key" !! android:value="api_key" /> </application>
Tambahkan kelas baru yang dipanggil
ConfigurationSettings.java
ke proyek.public class ConfigurationSettings { public static String API_KEY = "..."; public static String NotificationHubName = "..."; public static String NotificationHubConnectionString = "..."; }
Atur nilai
API_KEY
string dengan API_KEY dari Baidu Cloud Project.Atur nilai
NotificationHubName
string dengan nama hub pemberitahuan Anda dari portal Microsoft Azure laluNotificationHubConnectionString
denganDefaultListenSharedAccessSignature
dari portal Microsoft Azure.Buka MainActivity.java, dan tambahkan yang berikut ini ke metode onCreate:
PushManager.startWork(this, PushConstants.LOGIN_TYPE_API_KEY, API_KEY );
Tambahkan kelas baru yang disebut
MyPushMessageReceiver.java
, dan tambahkan kode berikut ke dalamnya. Ini adalah kelas yang menangani pemberitahuan push yang diterima dari server push Baidu.package your.package.name; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.text.TextUtils; import android.util.Log; import com.baidu.android.pushservice.PushMessageReceiver; import com.microsoft.windowsazure.messaging.NotificationHub; import org.json.JSONException; import org.json.JSONObject; import java.util.List; public class MyPushMessageReceiver extends PushMessageReceiver { public static final String TAG = MyPushMessageReceiver.class .getSimpleName(); public static NotificationHub hub = null; public static String mChannelId, mUserId; @Override public void onBind(Context context, int errorCode, String appid, String userId, String channelId, String requestId) { String responseString = "onBind errorCode=" + errorCode + " appid=" + appid + " userId=" + userId + " channelId=" + channelId + " requestId=" + requestId; Log.d(TAG, responseString); if (errorCode == 0) { // Binding successful Log.d(TAG, " Binding successful"); } try { if (hub == null) { hub = new NotificationHub( ConfigurationSettings.NotificationHubName, ConfigurationSettings.NotificationHubConnectionString, context); Log.i(TAG, "Notification hub initialized"); } } catch (Exception e) { Log.e(TAG, e.getMessage()); } mChannelId = channelId; mUserId = userId; registerWithNotificationHubs(); } private void registerWithNotificationHubs() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { hub.registerBaidu(mUserId, mChannelId); Log.i(TAG, "Registered with Notification Hub - '" + ConfigurationSettings.NotificationHubName + "'" + " with UserId - '" + mUserId + "' and Channel Id - '" + mChannelId + "'"); } catch (Exception e) { Log.e(TAG, e.getMessage()); } return null; } }.execute(null, null, null); } @Override public void onMessage(Context context, String message, String customContentString) { String messageString = " onMessage=\"" + message + "\" customContentString=" + customContentString; Log.d(TAG, messageString); if (!TextUtils.isEmpty(customContentString)) { JSONObject customJson = null; try { customJson = new JSONObject(customContentString); String myvalue = null; if (!customJson.isNull("mykey")) { myvalue = customJson.getString("mykey"); } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void onNotificationArrived(Context context, String title, String description, String customContentString) { String notifyString = " Notice Arrives onNotificationArrived title=\"" + title + "\" description=\"" + description + "\" customContent=" + customContentString; Log.d(TAG, notifyString); if (!TextUtils.isEmpty(customContentString)) { JSONObject customJson = null; try { customJson = new JSONObject(customContentString); String myvalue = null; if (!customJson.isNull("mykey")) { myvalue = customJson.getString("mykey"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void onNotificationClicked(Context context, String title, String description, String customContentString) { String notifyString = " onNotificationClicked title=\"" + title + "\" description=\"" + description + "\" customContent=" + customContentString; Log.d(TAG, notifyString); Intent intent = new Intent(context.getApplicationContext(),MainActivity.class); intent.putExtra("title",title); intent.putExtra("description",description); intent.putExtra("isFromNotify",true); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.getApplicationContext().startActivity(intent); } @Override public void onSetTags(Context context, int errorCode, List<String> successTags, List<String> failTags, String requestId) { String responseString = "onSetTags errorCode=" + errorCode + " successTags=" + successTags + " failTags=" + failTags + " requestId=" + requestId; Log.d(TAG, responseString); } @Override public void onDelTags(Context context, int errorCode, List<String> successTags, List<String> failTags, String requestId) { String responseString = "onDelTags errorCode=" + errorCode + " successTags=" + successTags + " failTags=" + failTags + " requestId=" + requestId; Log.d(TAG, responseString); } @Override public void onListTags(Context context, int errorCode, List<String> tags, String requestId) { String responseString = "onListTags errorCode=" + errorCode + " tags=" + tags; Log.d(TAG, responseString); } @Override public void onUnbind(Context context, int errorCode, String requestId) { String responseString = "onUnbind errorCode=" + errorCode + " requestId = " + requestId; Log.d(TAG, responseString); if (errorCode == 0) { // Unbinding is successful Log.d(TAG, " Unbinding is successful "); } } }
Mengirim pemberitahuan ke aplikasi Anda
Anda dapat dengan cepat menguji pemberitahuan penerimaan dari portal Microsoft Azure melalui tombol Kirim di layar konfigurasi hub pemberitahuan, seperti yang ditunjukkan pada layar berikut:
Pemberitahuan push biasanya dikirim dalam layanan back-end seperti Layanan Seluler atau ASP.NET menggunakan pustaka yang kompatibel. Jika pustaka tidak tersedia untuk back-end Anda, Anda dapat menggunakan REST API secara langsung untuk mengirim pesan pemberitahuan.
Untuk kesederhanaan, tutorial ini menggunakan aplikasi konsol sebagai demonstrasi tentang cara mengirim pemberitahuan dengan .NET SDK. Namun, kami merekomendasikan tutorial Menggunakan Notification Hubs untuk mendorong pemberitahuan kepada pengguna sebagai langkah berikutnya untuk mengirim pemberitahuan dari backend ASP.NET.
Berikut adalah pendekatan yang berbeda untuk mengirim pemberitahuan:
- Antarmuka REST: Anda dapat mendukung pemberitahuan di platform backend apa pun menggunakan antarmuka REST.
- Microsoft Azure Notification Hubs .NET SDK: Di Manajer Paket Nuget untuk Visual Studio, jalankan Install-Package Microsoft.Azure.NotificationHubs.
- Node.js: Cara menggunakan Notification Hubs dari Node.js.
- Aplikasi Seluler: Untuk contoh cara mengirim pemberitahuan dari backend Azure App Service Mobile Apps yang terintegrasi dengan Notification Hubs, lihat Menambahkan pemberitahuan push ke aplikasi seluler Anda.
- Java / PHP: Untuk contoh cara mengirim pemberitahuan dengan menggunakan REST API, lihat "Cara menggunakan Notification Hubs dari Java/PHP" (Java | PHP).
(Opsional) Kirim pemberitahuan dari aplikasi konsol .NET.
Di bagian ini, kami menampilkan pengiriman pemberitahuan menggunakan aplikasi konsol .NET.
Buat aplikasi konsol Visual C# baru:
Di jendela Package Manager Console, atur proyek Default ke proyek aplikasi konsol baru Anda, lalu di jendela konsol, jalankan perintah berikut:
Install-Package Microsoft.Azure.NotificationHubs
Instruksi ini menambahkan referensi ke Azure Notification Hubs SDK menggunakan paket NuGet Microsoft.Azure.Notification Hubs.
Buka file
Program.cs
dan tambahkan pernyataan penggunaan berikut:using Microsoft.Azure.NotificationHubs;
Di kelas Anda
Program
, tambahkan metode berikut dan gantiDefaultFullSharedAccessSignatureSASConnectionString
danNotificationHubName
dengan nilai yang Anda miliki.private static async void SendNotificationAsync() { NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString("DefaultFullSharedAccessSignatureSASConnectionString", "NotificationHubName"); string message = "{\"title\":\"((Notification title))\",\"description\":\"Hello from Azure\"}"; var result = await hub.SendBaiduNativeNotificationAsync(message); }
Tambahkan baris berikut dalam metode Anda
Main
:SendNotificationAsync(); Console.ReadLine();
Menguji aplikasi Anda
Untuk menguji aplikasi ini dengan ponsel aktual, cukup sambungkan ponsel ke komputer Anda dengan menggunakan kabel USB. Tindakan ini memuat aplikasi Anda ke ponsel yang terpasang.
Untuk menguji aplikasi ini dengan emulator, pada toolbar teratas Android Studio, klik Jalankan, lalu pilih aplikasi Anda: aplikasi memulai emulator, memuat, dan menjalankan aplikasi.
Aplikasi ini mengambil userId
dan channelId
dari layanan pemberitahuan Baidu Push dan mendaftar dengan hub pemberitahuan.
Untuk mengirim pemberitahuan pengujian, Anda dapat menggunakan tab debug portal Microsoft Azure. Jika Anda membuat aplikasi konsol .NET untuk Visual Studio, cukup tekan tombol F5 di Visual Studio untuk menjalankan aplikasi. Aplikasi mengirimkan pemberitahuan yang muncul di area pemberitahuan teratas perangkat atau emulator Anda.