البرنامج التعليمي: إرسال إعلامات مؤقتة إلى تطبيقات Xamarin.Android باستخدام Notification Hubs
نظرة عامة
إشعار
للحصول على معلومات حول إيقاف Firebase Cloud Messaging وخطوات الترحيل، راجع ترحيل Google Firebase Cloud Messaging.
يوضح لك هذا البرنامج التعليمي كيفية استخدام Azure Notification Hubs لإرسال إعلامات مؤقتة إلى تطبيق Xamarin.Android. يمكنك إنشاء تطبيق Xamarin.Android فارغ يتلقى الإشعارات الفورية باستخدام Firebase Cloud Messaging (FCM). يمكنك استخدام مركز الإشعارات لبث الإشعارات الفورية لجميع الأجهزة التي تقوم بتشغيل تطبيقك. الشفرة النهائية متاحة في نموذج تطبيق NotificationHubs.
في هذا البرنامج التعليمي، نُفذت الخطوات التالية:
- أنشئ مشروع Firebase ومكّن Firebase Cloud Messaging
- إنشاء مركز إعلامات
- قم بإنشاء تطبيق Xamarin.Android وربطه بمركز الإشعارات
- إرسال إعلامات الاختبار من مدخل Microsoft Azure
المتطلبات الأساسية
- اشتراك Azure. إذا لم تكن مشتركًا في Azure، فيمكنك إنشاء حساب مجاني على Azure قبل البدء.
- Visual Studio مع Xamarin على Windows أو Visual Studio for Mac على OS X.
- حساب جوجل النشط
أنشئ مشروع Firebase ومكّن Firebase Cloud Messaging
تسجيل الدخول إلىوحدة تحكم Firebase. إنشاء مشروع Firebase جديد إذا لم يكن لديك بالفعل واحد.
بعد إنشاء المشروع حدد إضافة Firebase إلى تطبيق Android.
في صفحة إضافة مشروع Firebase إلى تطبيق Android،اتخذ الخطوات التالية:
للحصول على اسم حزمة Android، أدخل اسماً للحزمة. على سبيل المثال:
tutorials.tutoria1.xamarinfcmapp
.حدد "Register app".
حدد "Download google-services.json". ثم احفظ الملف في مجلد المشروع وحدد "Next". إذا لم تكن قد أنشأت مشروع Visual Studio بعد، يمكن تنفيذ هذه الخطوة بعد إنشاء المشروع.
حدد التالي.
حدد تخطي هذه الخطوة.
في وحدة تحكم Firebase حدد ترس للمشروع الخاص بك. ثم حدد إعدادات المشروع.
إذا لم تكن قد قمت بتحميل ملف google-services.js، يمكن تنزيله على هذه الصفحة.
انتقل إلى علامة التبويب Cloud Messaging في الأعلى. انسخكلمة مرور الخادم واحفظه للاستخدام لاحقًا. يمكن استخدام هذه القيمة لتكوين لوحة مركز الإعلامات.
إنشاء مركز إعلامات
قم بتسجيل الدخول إلى بوابة Azure.
حدد كل الخدمات في القائمة اليسرى.
اكتب Notification Hubs في مربع النص Filter services . حدد رمز النجمة بجوار اسم الخدمة لإضافة الخدمة إلى قسم FAVORITES في القائمة اليمنى. حدد مراكز الإعلامات.
في صفحة مراكز الإعلام حدد إنشاء على شريط الأدوات.
في علامة التبويب أساسيات في صفحة مركز الإعلام، بادر باتخاذ الخطوات التالية:
في الاشتراك، حدد اسم اشتراك Azure الذي تريد استخدامه، ثم حدد مجموعة موارد موجودة، أو أنشئ واحداً جديداً.
أدخل اسماً فريداً لمساحة الاسم الجديدة في تفاصيل مساحة الاسم.
تحتوي مساحة الاسم على مركز إعلام واحد أو أكثر، لذا اكتب اسم المركز في تفاصيل مركز الإعلام.
حدد قيمة من القائمة المنسدلة الموقع. تحدد هذه القيمة الموقع الذي تريد إنشاء المحور فيه.
راجع خيار مناطق التوفر. إذا اخترت منطقة تحتوي على مناطق توفر، يتم تحديد خانة الاختيار بشكل افتراضي. مناطق التوفر هي ميزة مدفوعة، لذلك تتم إضافة رسوم إضافية إلى المستوى الخاص بك.
اختر خيار التعافي من الكوارث: لا شيء أو منطقة استرداد مقترنة أو منطقة استرداد مرنة. إذا اخترت منطقة الاسترداد المقترنة، يتم عرض منطقة تجاوز الفشل. إذا حددت منطقة استرداد مرنة، فاستخدم القائمة المنسدلة للاختيار من قائمة مناطق الاسترداد.
حدد إنشاء.
عند اكتمال النشر، حدد Go to resource.
قم بتكوين إعدادات GCM / FCM لمركز الإشعارات
حدد Google (GCM/FCM)/ في قسم Settings في القائمة اليمنى.
أدخل مفتاح الخادم الذي سجلته من Google Firebase Console.
تحديد Save في شريط الأدوات.
تم تكوين مركز الإشعارات للعمل مع FCM، ولديك سلاسل الاتصال لتسجيل تطبيقك لتلقي الإشعارات وإرسال الإشعارات الفورية.
قم بإنشاء تطبيق Xamarin.Android وربطه بمحور الإشعارات
إنشاء مشروع Visual Studio وإضافة حزم NuGet
إشعار
الخطوات الموثقة في هذا البرنامج التعليمي مخصصة لبرنامج Visual Studio 2017.
في Visual Studio، افتح القائمة ملف، وحدد New، ثم حدد Project. في نافذة مشروع جديد، قم بالخطوات التالية:
قم بتوسيع مثبت، Visual C #، ثم انقر فوق Android.
حدد تطبيق Android (Xamarin) من القائمة.
أدخل اسماً للمشروع.
حدد location للمشروع.
حدد موافق
في مربع الحوار تطبيق Android جديد، حدد Blank App، وحدد OK.
في نافذة مستكشف الحلول، وسّع خصائص، وانقر على AndroidManifest.xml. قم بتحديث اسم الحزمة لمطابقة اسم الحزمة الذي أدخلته عند إضافة Firebase Cloud Messaging إلى مشروعك في Google Firebase Console.
قم بتعيين إصدار Android المستهدف للمشروع على Android 10.0 باتباع الخطوات التالية:
- انقر بزر الماوس الأيمن فوق مشروعك وحدد Properties.
- بالنسبة إلى حقل التحويل البرمجي باستخدام إصدار Android: (إطار العمل المستهدف)، حدد Android 10.0.
- حدد Yes في مربع الرسالة لمتابعة تغيير إطار العمل الهدف.
أضف حزم NuGet المطلوبة إلى المشروع باتباع الخطوات التالية:
انقر بزر الماوس الأيمن فوق مشروعك وحدد Manage NuGet Packages....
قم بالتبديل إلى علامة التبويب تم التثبيت، وحدد Xamarin.Android.Support.Design، وحدد Update في الجزء الأيسر لتحديث الحزمة إلى أحدث إصدار.
قم بالتبديل إلى علامة التبويب تصفح. ابحث عن Xamarin.GooglePlayServices.Base. حدد Xamarin.GooglePlayServices.Base في قائمة النتائج. ثم حدد Install.
في نافذة NuGet Package Manager، ابحث عن Xamarin.Firebase.Messaging. حدد Xamarin.Firebase.Messaging في قائمة النتائج. ثم حدد Install.
الآن، ابحث عن Xamarin.Azure.NotificationHubs.Android. حدد Xamarin.Azure.NotificationHubs.Android في قائمة النتائج. ثم حدد Install.
أضف ملف JSON لخدمات Google
انسخ ملف
google-services.json
الذي قمت بتنزيله من Google Firebase Console إلى مجلد المشروع.أضف
google-services.json
إلى المشروع.حدد
google-services.json
in the Solution Explorer window.في جزء الخصائص، عيّن إجراء الإنشاء على GoogleServicesJson. إذا كنت لا ترى GoogleServicesJson، فأغلق Visual Studio وأعد تشغيله وأعد فتح المشروع وأعد المحاولة.
قم بإعداد محاور إعلام في مشروعك
التسجيل في Firebase Cloud Messaging
إذا كنت تقوم بالترحيل من Google Cloud Messaging إلى Firebase، فقد يحتوي ملف مشروعك
AndroidManifest.xml
على تهيئة قديمة لـ GCM، مما قد يتسبب في تكرار الإشعارات. قم بتحرير الملف وإزالة الأسطر التالية داخل قسم<application>
، إن وجد:<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>
أضف العبارات التالية قبل عنصر التطبيق .
<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"/>
اجمع المعلومات التالية لتطبيق Android ومركز الإشعارات:
- الاستماع إلى سلسلة الاتصال: من لوحة التحكم في مدخل Microsoft Azure، اختر عرض سلاسل الاتصال. انسخ سلسلة الاتصال
DefaultListenSharedAccessSignature
لهذه القيمة. - اسم المركز: اسم المحور الخاص بك من مدخل Microsoft Azure. على سبيل المثال، mynotificationhub2.
- الاستماع إلى سلسلة الاتصال: من لوحة التحكم في مدخل Microsoft Azure، اختر عرض سلاسل الاتصال. انسخ سلسلة الاتصال
في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق project، وحدد Add، ثم حدد Class.
قم بإنشاء فئة
Constants.cs
لمشروع Xamarin الخاص بك وحدد القيم الثابتة التالية في الفصل. استبدل العناصر النائبة بالقيم الخاصة بك.public static class Constants { public const string ListenConnectionString = "<Listen connection string>"; public const string NotificationHubName = "<hub name>"; }
أضف عبارات الاستخدام التالية إلى
MainActivity.cs
:using WindowsAzure.Messaging.NotificationHubs;
أضف الخصائص التالية إلى فئة MainActivity:
internal static readonly string CHANNEL_ID = "my_notification_channel";
في
MainActivity.cs
، أضف التعليمات البرمجية التالية إلىOnCreate
بعدbase.OnCreate(savedInstanceState)
:// Listen for push notifications NotificationHub.SetListener(new AzureListener()); // Start the SDK NotificationHub.Start(this.Application, HubName, ConnectionString);
أضف فئة باسم
AzureListener
إلى مشروعك.أضف عبارات الاستخدام التالية إلى
AzureListener.cs
.using Android.Content; using WindowsAzure.Messaging.NotificationHubs;
أضف ما يلي أعلاه تصريح الفصل الخاص بك، واجعل فصلك يرث من
Java.Lang.Object
ونفذINotificationListener
:public class AzureListener : Java.Lang.Object, INotificationListener
أضف التعليمات البرمجية التالية داخل فئة
AzureListener
، لمعالجة الرسائل المستلمة.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()); }
أنشئ مشروعك.
قم بتشغيل تطبيقك على جهازك أو تحميل برنامج محاكاة
إرسال إخطار بالاختبار من مدخل Microsoft Azure
يمكنك اختبار تلقي الإشعارات في التطبيق باستخدام خيار إرسال اختبار في مدخل Azure. يرسل إعلام الاختبار المؤقت إلى جهازك.
عادةً ما يتم إرسال الإشعارات الفورية في خدمة خلفية مثل Mobile Services أو ASP.NET من خلال مكتبة متوافقة. إذا لم تكن المكتبة متاحة للواجهة الخلفية الخاصة بك، فيمكنك أيضاً استخدام واجهة برمجة تطبيقات REST مباشرةً لإرسال رسائل التنبيه.
الخطوات التالية
في هذا البرنامج التعليمي، قمت بإرسال إشعارات البث إلى جميع أجهزة Android المسجلة في الواجهة الخلفية. لمعرفة كيفية إرسال الإعلامات المؤقتة إلى أجهزة Android محددة، انتقل إلى البرنامج التعليمي التالي: