البرنامج التعليمي: إرسال الإعلامات المؤقتة إلى أجهزة الروبوت باستخدام الإصدار 0.6 لـ Firebase SDK
يوضح لك هذا البرنامج التعليمي كيفية استخدام Azure Notification Hubs والإصدار 0.6 من Firebase Cloud Messaging (FCM) SDK لإرسال الإعلامات المؤقتة إلى تطبيق Android. في هذا البرنامج التعليمي، تقوم بإنشاء تطبيق Android فارغ يتلقى الإعلامات الفورية باستخدام Firebase Cloud Messaging (FCM).
هام
ستتوقف Google عن دعم FCM القديم HTTP في 20 يونيو 2024. لمزيد من المعلومات، راجع Azure Notification Hubs وترحيل Google Firebase Cloud Messaging.
يمكن تحميل الرمز الذي تم الانتهاء منه لهذا البرنامج التعليمي من GitHub.
في هذا البرنامج التعليمي، نُفذت الخطوات التالية:
- أنشئ مشروع Android Studio.
- أنشئ مشروع Firebase يدعم Firebase Cloud Messaging.
- أنشئ مركزًا.
- قم بتوصيل تطبيقك بمركز الإعلامات.
- قم باختبار التطبيق.
المتطلبات الأساسية
لكي يتم إكمال هذا البرنامج التعليمي، يجب أن يكون لديك حساب Azure نشط. إذا لم يكن لديك حساب، يمكنك إنشاء حساب تجريبي مجاني في غضون دقيقتين فقط. لمزيد من التفاصيل، راجع Azure Free Trial.
ستحتاج أيضاً إلى العناصر التالية:
- أحدث نسخة من Android Studio
- إصدار Android 2.3 أو إصدار أحدث لـ Firebase Cloud Messaging
- إصدار Google Repository المراجعة 27 أو إصدار أحدث من Firebase Cloud Messaging
- إصدار Google Play Services 9.0.2 أو إصدار أحدث من Firebase Cloud Messaging
يعد إكمال هذا البرنامج التعليمي شرطاً أساسياً لعمل جميع البرامج التعليمية الأخرى لـ Notification Hubs لتطبيقات Android.
إنشاء مشروع Android Studio
- قم بتشغيل Android Studio.
- حدد File، ثم توجه إلى New، ثم حدد New Project.
- في صفحة Choose your project، حدد Empty Activity، ثم حدد Next.
- في صفحة Configure your project ، اتبع الخطوات التالية:
أدخِل اسماً للتطبيق.
قم بتحديد موقع لحفظ ملفات المشروع فيه.
حدد إنهاء.
قم بإنشاء مشروع Firebase يدعم FCM
تسجيل الدخول إلىوحدة تحكم Firebase. إنشاء مشروع Firebase جديد إذا لم يكن لديك بالفعل واحد.
بعد إنشاء المشروع حدد إضافة Firebase إلى تطبيق Android.
في صفحة إضافة مشروع Firebase إلى تطبيق Android،اتخذ الخطوات التالية:
للحصول على اسم حزمة الروبوت، نسخ قيمة التطبيق الخاص بك في ملف build.gradle التطبيق الخاص بك. في هذا المثال، هو
com.fabrikam.fcmtutorial1app
.حدد "Register app".
حدد تنزيل google-services.json، ثم احفظ الملف في مجلد التطبيق الخاص بالمشروع، ثم حدد التالي.
قم بإجراء تغييرات التكوين التالية على مشروعك في Android Studio.
في ملف build.gradle مستوى المشروع < (مشروع > /build.gradle)، إضافة العبارة التالية إلى قسم التبعيات.
classpath 'com.google.gms:google-services:4.0.1'
في ملف build.gradle على مستوى التطبيق (<مشروع> /< app-module> /build.gradle)، أضف العبارات التالية إلى قسم التبعيات.
implementation 'com.google.firebase:firebase-core:16.0.8' implementation 'com.google.firebase:firebase-messaging:17.3.4'
إضافة السطر التالي إلى نهاية الملف build.gradle مستوى التطبيق بعد قسم التبعيات.
apply plugin: 'com.google.gms.google-services'
حدد أيقونة المزامنة الآن في شريط الأدوات.
حدد التالي.
حدد تخطي هذه الخطوة.
في وحدة تحكم Firebase حدد ترس للمشروع الخاص بك. ثم حدد إعدادات المشروع.
إذا لم تكن قد قمت بتنزيل الملف google-services.json إلى مجلد التطبيق لمشروع Android Studio، يمكنك القيام بذلك على هذه الصفحة.
انتقل إلى علامة التبويب Cloud Messaging في الأعلى.
انسخكلمة مرور الخادم واحفظه للاستخدام لاحقًا. يمكنك استخدام هذه القيمة لتكوين لوحة الوصل الخاصة بك.
إذا لم تشاهد مفتاح Server في علامة التبويب firebase Cloud Messaging، فاتبع هذه الخطوات الإضافية.
- انقر فوق قائمة النقاط الثلاث لعنوان "Cloud Messaging API (Legacy) 🚫 Disabled"
- اتبع الارتباط المعروض إلى "إدارة واجهة برمجة التطبيقات في Google Cloud Console".
- في وحدة تحكم google السحابية، اضغط على الزر لتمكين واجهة برمجة تطبيقات googlecloudmessaging.
- انتظر بضع دقائق
- ارجع إلى علامة التبويب Cloud Messaging لمشروع وحدة تحكم firebase، وقم بتحديث الصفحة.
- راجع تغيير عنوان واجهة برمجة تطبيقات المراسلة السحابية إلى "تمكين واجهة برمجة تطبيقات المراسلة السحابية (القديمة) ✅ " ويعرض الآن مفتاح الخادم.
تكوين مركز
قم بتسجيل الدخول إلى بوابة Azure.
حدد كل الخدمات في القائمة اليسرى.
اكتب Notification Hubs في مربع النص Filter services . حدد رمز النجمة بجوار اسم الخدمة لإضافة الخدمة إلى قسم FAVORITES في القائمة اليمنى. حدد مراكز الإعلامات.
في صفحة مراكز الإعلام حدد إنشاء على شريط الأدوات.
في علامة التبويب أساسيات في صفحة مركز الإعلام، بادر باتخاذ الخطوات التالية:
في الاشتراك، حدد اسم اشتراك Azure الذي تريد استخدامه، ثم حدد مجموعة موارد موجودة، أو أنشئ واحداً جديداً.
أدخل اسماً فريداً لمساحة الاسم الجديدة في تفاصيل مساحة الاسم.
تحتوي مساحة الاسم على مركز إعلام واحد أو أكثر، لذا اكتب اسم المركز في تفاصيل مركز الإعلام.
حدد قيمة من القائمة المنسدلة الموقع. تحدد هذه القيمة الموقع الذي تريد إنشاء المحور فيه.
راجع خيار مناطق التوفر. إذا اخترت منطقة تحتوي على مناطق توفر، يتم تحديد خانة الاختيار بشكل افتراضي. مناطق التوفر هي ميزة مدفوعة، لذلك تتم إضافة رسوم إضافية إلى المستوى الخاص بك.
اختر خيار التعافي من الكوارث: لا شيء أو منطقة استرداد مقترنة أو منطقة استرداد مرنة. إذا اخترت منطقة الاسترداد المقترنة، يتم عرض منطقة تجاوز الفشل. إذا حددت منطقة استرداد مرنة، فاستخدم القائمة المنسدلة للاختيار من قائمة مناطق الاسترداد.
حدد إنشاء.
عند اكتمال النشر، حدد Go to resource.
تكوين إعدادات المراسلة السحابية لـFirebase للمركز
في الجزء الأيسر، ضمن Settings، حدد Networking.
أدخِل مفتاح الخادم لمشروع FCM الذي قمت بحفظه سابقاً.
في شريط الأدوات، قم بتحديد Save.
يعرض مدخل Microsoft Azure رسالة في التنبيهات بأن المركز قد تم تحديثه بنجاح. تم تعطيل زر Save.
تم الآن تكوين المركز الخاص بك للعمل مع Firebase Cloud Messaging. لديك أيضاً سلاسل الاتصال الضرورية لإرسال إعلامات إلى الجهاز وتسجيل التطبيق لتلقي الإعلامات.
توصيل تطبيقك بمركز الإشعارات
إضافة خدمات Google Play إلى المشروع
في Android Studio، حدد أدوات في القائمة، ثم حدد إدارة SDK.
حدد الإصدار المستهدف من Android SDK الذي تم استخدامه في المشروع. ثم حدد Show Package Details.
حدد Google APIs، إذا لم تكن مثبتة بالفعل.
التبديل إلى SDK Tools إذا لم تكن قد قمت بتثبيت خدمات Google Play مسبقاً، فحدد Google Play Services كما هو موضح في الصورة التالية. ثم حدد Apply للتثبيت. لاحظ مسار SDK، للاستخدام في خطوة لاحقة.
إذا رأيت مربع الحوار Confirm Change فحدد OK. يقوم مثبت المكونات بتثبيت المكونات المطلوبة. حدد Finish بعد تثبيت المكونات.
حدد OK لإغلاق مربع الحوار الإعدادات للمشاريع الجديدة.
افتح الملف AndroidManifest.xml، ثم أضف العلامة التالية إلى علامة التطبيق.
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
قم بإضافة مكتبات Azure Notification Hubs
في ملف Build.Gradle للتطبيق، قم بإضافة الأسطر التالية في قسم التبعيات.
implementation 'com.microsoft.azure:notification-hubs-android-sdk:0.6@aar'
إضافة المستودع التالي بعد قسم التبعيات.
repositories { maven { url "https://dl.bintray.com/microsoftazuremobile/SDK" } }
أضف دعم Google Firebase
في ملف Build.Gradle للتطبيق، قم بإضافة الأسطر التالية في قسم التبعيات إذا لم تكن موجودة بالفعل.
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'
أضف المكون الإضافي التالي في نهاية الملف إذا لم يكن موجوداً بالفعل.
apply plugin: 'com.google.gms.google-services'
حدد أيقونة Sync Now في شريط الأدوات.
قم بتحديث ملف AndroidManifest.xml
بعد أن تتلقى الرمز المميز للتسجيل في FCM، يمكنك استخدامه لكي تسجيل في Azure Notification Hubs. تقوم بدعم هذا التسجيل في الخلفية باستخدام
IntentService
يسمىRegistrationIntentService
. هذه الخدمة مسؤولة أيضاً عن تحديث الرمز المميز لتسجيل FCM. يمكنك أيضاً إنشاء فئة تسمىFirebaseService
كفئة فرعية لـFirebaseMessagingService
وتتجاوز طريقةonMessageReceived
لاستلام الإعلامات والتعامل معها.إضافة تعريف الخدمة التالية إلى ملف AndroidManifest.xml داخل
<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>
إضافة الأذونات المرتبطة بـ FCM الضرورية التالية أسفل
</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" />
إضافة تعليمة برمجية
في Project View، قم بتوسيع app>src>main>java. اضغط بزر الماوس الأيمن فوق مجلد الحزمة أسفل جافا، ومن ثم انقر فوق جديد، ثم حدد Java Class. أدخلNotificationSettings للاسم، ثم حدد "Ok".
تأكد من تحديث هذين العنصرين النائبين في التعليمة البرمجية التالية
NotificationSettings
للفصل الدراسي:HubListenConnectionString: سلسلة الاتصال DefaultListenAccessSignature لمركز الإعلامات الخاص بك. يمكنك نسخ سلسلة الاتصال تلك بالنقر فوق Access Policies في مركز إعلاماتك في مدخل Microsoft Azure.
HubName:استخدم اسم مركز الإعلامات الذي يظهر في صفحة لوحة المركز في مدخل Microsoft Azure.
NotificationSettings
التعليمة البرمجية:public class NotificationSettings { public static String HubName = "<Your HubName>"; public static String HubListenConnectionString = "<Enter your DefaultListenSharedAccessSignature connection string>"; }
هام
أدخل Name وDefaultListenSharedAccessSignature للمركز الخاص بك قبل المتابعة.
قم بإضافة فئة جديدة أخرى إلى مشروعك، تسمى
RegistrationIntentService
. هذه الفئة تقوم بتطبيق الواجهةIntentService
. كما أنها تتعامل مع تحديث الرمز المميز لـ FCM و التسجيل في مركز الإعلامات.استخدم الرمز التالي لهذه الفئة.
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); } } }
في الفئة
MainActivity
، قم بإضافة عباراتimport
التالية أعلى إعلان الفئة.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;
أضف الأعضاء التالين في أعلى الفئة. يمكنك استخدام هذه الحقول في التحقق من توفر خدمات Google Play كما توصي شركة جوجل.
public static MainActivity mainActivity; public static Boolean isVisible = false; private static final String TAG = "MainActivity"; private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
في الفئة
MainActivity
، قم بإضافة الطريقة التالية للتحقق من توافر خدمات Google Play./** * 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; }
في
MainActivity
الفئة، قم بإضافة التعليمة البرمجية التالية التي تتحقق من خدمات Google Play قبل الاتصالIntentService
للحصول على رمز تسجيل FCM والتسجيل مع مركز الإعلامات:public void registerWithNotificationHubs() { if (checkPlayServices()) { // Start IntentService to register this application with FCM. Intent intent = new Intent(this, RegistrationIntentService.class); startService(intent); } }
في أسلوب
OnCreate
بالفئةMainActivity
الفئة، قم بإضافة التعليمة البرمجية التالية لبدء عملية التسجيل عند انتهاء إنشاء النشاط:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainActivity = this; registerWithNotificationHubs(); FirebaseService.createChannelAndHandleNotifications(getApplicationContext()); }
للتحقق من حالة التطبيق وحالة التقرير في تطبيقك، قم بإضافة هذه الأساليب الإضافية إلى
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); } }); }
الطريقة
ToastNotify
تستخدم عنصر التحكم "مرحبًا بالعالم"TextView
للإبلاغ عن الحالة والإعلامات باستمرار في التطبيق. في تخطيط res>layout>activity_main.xml أضف المعرف التالي لعنصر التحكم هذا.android:id="@+id/text_hello"
بعد ذلك قم بإضافة فئة فرعية لجهاز الاستقبال المحدد في AndroidManifest.xml. قم بإضافة فئة جديدة أخرى إلى مشروعك، تسمى
FirebaseService
.قم بإضافة عبارات الإدخال التالية أعلى كل من
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;
قم بإضافة التعليمة البرمجية التالية
FirebaseService
للفئة، مما يجعلها فئة فرعية منFirebaseMessagingService
.تتجاوز هذه التعليمة البرمجية الأسلوب
onMessageReceived
وتقوم بإبلاغ الإعلامات التي يتم استلامها. تقوم أيضا بإرسال عرض الإعلامات إلى مدير إعلامات Android باستخدام الطريقةsendNotification()
. قم باستدعاء الأسلوبsendNotification()
عندما لا يكون التطبيق قيد التشغيل ويتم تلقي إعلام.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); } } }
في Android Studio على شريط القوائم، حدد Build>Rebuild Project للتأكد من عدم وجود أخطاء في التعليمة البرمجية. إذا تلقيت خطأ بشأن التعليمة البرمجية
ic_launcher
، فقم بإزالة العبارة التالية من ملف AndroidManifest.xml:android:icon="@mipmap/ic_launcher"
تأكد من وجود جهاز ظاهري لتشغيل التطبيق. إذا لم يكن لديك واحد، فأضف واحدًا كما يلي:
قم بتشغيل التطبيق على جهازك المحدد وتحقق من تسجيله بنجاح مع مركز الإعلامات.
إشعار
قد يفشل التسجيل أثناء محاولة الإطلاق الأولي حتى يتم استدعاء الأسلوب
onTokenRefresh()
لخدمة معرف المثيل. يجب أن يبدأ التحديث تسجيلاً ناجحاً مع مركز الإعلام.
اختبار إرسال الإعلامات من مركز الإعلام
يمكنك إرسال إعلامات من مدخل Microsoft Azure باتباع الخطوات التالية:
في مدخل Microsoft Azure، في صفحة مركز الإعلام الخاصة بالمحور، حدد Test Send في قسم Troubleshooting.
للمنصات، حدد Android.
حدد إرسال. لن تتمكن من رؤية إعلام على جهاز Android حتى الآن لأنك لم تقم بتشغيل تطبيق الجوال عليه. بعد تشغيل تطبيق الجوال، حدد الزر Send مرة أخرى لمشاهدة رسالة الإعلام.
تحقق من نتيجة العملية في القائمة الموجودة أسفل النافذة.
يمكنك رؤية رسالة الإعلام على جهازك.
عادة ما يتم إرسال الإشعارات المنبثقة في خدمة back-end مثل Mobile Apps لـ ASP.NET باستخدام compatible library. إذا لم تكن المكتبة متوفرة على الخادم، يمكنك أيضًا استخدام واجهة برمجة تطبيقات REST مباشرة لإرسال رسائل الإعلام.
فيما يلي قائمة ببعض البرامج التعليمية الأخرى التي ننصح بمراجعتها لإرسال الإعلامات:
- تطبيقات Azure Mobile: للحصول على مثال حول كيفية إرسال إشعارات من تطبيقات الجوال المدمجة مع مراكز الإشعارات، راجع إضافة إشعارات دفع إلى تطبيق iOS الخاص بك.
- ASP.NET:استخدام Notification Hubs لإرسال إشعارات دفع للمستخدمين.
- Azure Notification Hubs Java SDK: راجع كيفية استخدام Notification Hubs من Java لإرسال الإشعارات من Java. قد تم اختبار هذا في Eclipse لـAndroid Development.
- PHP: كيفية استخدام Notification Hubs من PHP.
تشغيل تطبيقات الأجهزة المحمولة على المحاكي
قبل أن تختبر عرض الإعلامات داخل المحاكي، تأكد من أن صورة المحاكي تدعم مستوى Google API الذي اخترته لتطبيقك. إذا كانت صورتك لا تدعم واجهات برمجة التطبيقات الأصلية في Google، فقد تحصل على استثناء SERVICE_NOT_AVAILABLE.
تأكد أيضاً من إضافة حسابك في حساب Google إلى جهاز المحاكاة المُشغل ضمن Settings>Accounts. وخلاف ذلك، قد تؤدي محاولاتك للتسجيل مع FCM إلى استثناء AUTHENTICATION_FAILED.
الخطوات التالية
في هذا البرنامج التعليمي، استخدمت Firebase Cloud Messaging لبث الإعلامات إلى جميع أجهزة Android التي تم تسجيلها في الخدمة. لمعرفة كيفية إرسال إعلامات مباشرة إلى أجهزة معينة، اكتشف البرنامج التعليمي التالي: