البرنامج التعليمي: إرسال إعلامات مؤقتة إلى تطبيقات 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

المتطلبات الأساسية

أنشئ مشروع Firebase ومكّن Firebase Cloud Messaging

  1. تسجيل الدخول إلىوحدة تحكم Firebase. إنشاء مشروع Firebase جديد إذا لم يكن لديك بالفعل واحد.

  2. بعد إنشاء المشروع حدد إضافة Firebase إلى تطبيق Android.

    Add Firebase to your Android app

  3. في صفحة إضافة مشروع Firebase إلى تطبيق Android،اتخذ الخطوات التالية:

    1. للحصول على اسم حزمة Android، أدخل اسماً للحزمة. على سبيل المثال: tutorials.tutoria1.xamarinfcmapp.

      Specify the package name

    2. حدد "Register app".

    3. حدد "Download google-services.json". ثم احفظ الملف في مجلد المشروع وحدد "Next". إذا لم تكن قد أنشأت مشروع Visual Studio بعد، يمكن تنفيذ هذه الخطوة بعد إنشاء المشروع.

      Download google-services.json

    4. حدد التالي.

    5. حدد تخطي هذه الخطوة.

      Skip the last step

  4. في وحدة تحكم Firebase حدد ترس للمشروع الخاص بك. ثم حدد إعدادات المشروع.

    Select Project Settings

  5. إذا لم تكن قد قمت بتحميل ملف google-services.js، يمكن تنزيله على هذه الصفحة.

    Download google-services.json from the General tab

  6. انتقل إلى علامة التبويب Cloud Messaging في الأعلى. انسخكلمة مرور الخادم واحفظه للاستخدام لاحقًا. يمكن استخدام هذه القيمة لتكوين لوحة مركز الإعلامات.

    Copy server key

إنشاء مركز إعلامات

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد كل الخدمات في القائمة اليسرى. A screenshot showing select All Services for an existing namespace.

  3. اكتب Notification Hubs في مربع النص Filter services . حدد رمز النجمة بجوار اسم الخدمة لإضافة الخدمة إلى قسم FAVORITES في القائمة اليمنى. حدد مراكز الإعلامات.

    A screenshot showing how to filter for notification hubs.

  4. في صفحة مراكز الإعلام حدد إنشاء على شريط الأدوات.

    A screenshot showing how to create a new notification hub.

  5. في علامة التبويب أساسيات في صفحة مركز الإعلام، بادر باتخاذ الخطوات التالية:

    1. في الاشتراك، حدد اسم اشتراك Azure الذي تريد استخدامه، ثم حدد مجموعة موارد موجودة، أو أنشئ واحداً جديداً.

    2. أدخل اسماً فريداً لمساحة الاسم الجديدة في تفاصيل مساحة الاسم.

    3. تحتوي مساحة الاسم على مركز إعلام واحد أو أكثر، لذا اكتب اسم المركز في تفاصيل مركز الإعلام.

    4. حدد قيمة من القائمة المنسدلة الموقع. تحدد هذه القيمة الموقع الذي تريد إنشاء المحور فيه.

      Screenshot showing notification hub details.

    5. راجع خيار مناطق التوفر. إذا اخترت منطقة تحتوي على مناطق توفر، يتم تحديد خانة الاختيار بشكل افتراضي. مناطق التوفر هي ميزة مدفوعة، لذلك تتم إضافة رسوم إضافية إلى المستوى الخاص بك.

    6. اختر خيار التعافي من الكوارث: لا شيء أو منطقة استرداد مقترنة أو منطقة استرداد مرنة. إذا اخترت منطقة الاسترداد المقترنة، يتم عرض منطقة تجاوز الفشل. إذا حددت منطقة استرداد مرنة، فاستخدم القائمة المنسدلة للاختيار من قائمة مناطق الاسترداد.

      Screenshot showing availability zone details.

    7. حدد إنشاء.

  6. عند اكتمال النشر، حدد Go to resource.

قم بتكوين إعدادات GCM / FCM لمركز الإشعارات

  1. حدد Google (GCM/FCM)/ في قسم Settings في القائمة اليمنى.

  2. أدخل مفتاح الخادم الذي سجلته من Google Firebase Console.

  3. تحديد Save في شريط الأدوات.

    Screenshot of Notification Hub in Azure Portal with Google G C M F C M option highlighted and outlined in red.

تم تكوين مركز الإشعارات للعمل مع FCM، ولديك سلاسل الاتصال لتسجيل تطبيقك لتلقي الإشعارات وإرسال الإشعارات الفورية.

قم بإنشاء تطبيق Xamarin.Android وربطه بمحور الإشعارات

إنشاء مشروع Visual Studio وإضافة حزم NuGet

إشعار

الخطوات الموثقة في هذا البرنامج التعليمي مخصصة لبرنامج Visual Studio 2017.

  1. في Visual Studio، افتح القائمة ملف، وحدد New، ثم حدد Project. في نافذة مشروع جديد، قم بالخطوات التالية:

    1. قم بتوسيع مثبت، Visual C #، ثم انقر فوق Android.

    2. حدد تطبيق Android (Xamarin) من القائمة.

    3. أدخل اسماً للمشروع.

    4. حدد location للمشروع.

    5. حدد موافق

      New Project dialog

  2. في مربع الحوار تطبيق Android جديد، حدد Blank App، وحدد OK.

    Screenshot that highlights the Blank App template.

  3. في نافذة مستكشف الحلول، وسّع خصائص، وانقر على AndroidManifest.xml. قم بتحديث اسم الحزمة لمطابقة اسم الحزمة الذي أدخلته عند إضافة Firebase Cloud Messaging إلى مشروعك في Google Firebase Console.

    Package name in GCM

  4. قم بتعيين إصدار Android المستهدف للمشروع على Android 10.0 باتباع الخطوات التالية:

    1. انقر بزر الماوس الأيمن فوق مشروعك وحدد Properties.
    2. بالنسبة إلى حقل التحويل البرمجي باستخدام إصدار Android: (إطار العمل المستهدف)، حدد Android 10.0.
    3. حدد Yes في مربع الرسالة لمتابعة تغيير إطار العمل الهدف.
  5. أضف حزم NuGet المطلوبة إلى المشروع باتباع الخطوات التالية:

    1. انقر بزر الماوس الأيمن فوق مشروعك وحدد Manage NuGet Packages....

    2. قم بالتبديل إلى علامة التبويب تم التثبيت، وحدد Xamarin.Android.Support.Design، وحدد Update في الجزء الأيسر لتحديث الحزمة إلى أحدث إصدار.

    3. قم بالتبديل إلى علامة التبويب تصفح. ابحث عن Xamarin.GooglePlayServices.Base. حدد Xamarin.GooglePlayServices.Base في قائمة النتائج. ثم حدد Install.

      Google Play Services NuGet

    4. في نافذة NuGet Package Manager، ابحث عن Xamarin.Firebase.Messaging. حدد Xamarin.Firebase.Messaging في قائمة النتائج. ثم حدد Install.

    5. الآن، ابحث عن Xamarin.Azure.NotificationHubs.Android. حدد Xamarin.Azure.NotificationHubs.Android في قائمة النتائج. ثم حدد Install.

أضف ملف JSON لخدمات Google

  1. انسخ ملف google-services.json الذي قمت بتنزيله من Google Firebase Console إلى مجلد المشروع.

  2. أضف google-services.json إلى المشروع.

  3. حدد google-services.jsonin the Solution Explorer window.

  4. في جزء الخصائص، عيّن إجراء الإنشاء على GoogleServicesJson. إذا كنت لا ترى GoogleServicesJson، فأغلق Visual Studio وأعد تشغيله وأعد فتح المشروع وأعد المحاولة.

    GoogleServicesJson build action

قم بإعداد محاور إعلام في مشروعك

التسجيل في Firebase Cloud Messaging

  1. إذا كنت تقوم بالترحيل من 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>
    
  2. أضف العبارات التالية قبل عنصر التطبيق .

    <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"/>
    
  3. اجمع المعلومات التالية لتطبيق Android ومركز الإشعارات:

    • الاستماع إلى سلسلة الاتصال: من لوحة التحكم في مدخل Microsoft Azure، اختر عرض سلاسل الاتصال. انسخ سلسلة الاتصال DefaultListenSharedAccessSignature لهذه القيمة.
    • اسم المركز: اسم المحور الخاص بك من مدخل Microsoft Azure. على سبيل المثال، mynotificationhub2.
  4. في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق project، وحدد Add، ثم حدد Class.

  5. قم بإنشاء فئة Constants.cs لمشروع Xamarin الخاص بك وحدد القيم الثابتة التالية في الفصل. استبدل العناصر النائبة بالقيم الخاصة بك.

    public static class Constants
    {
        public const string ListenConnectionString = "<Listen connection string>";
        public const string NotificationHubName = "<hub name>";
    }
    
  6. أضف عبارات الاستخدام التالية إلى MainActivity.cs:

    using WindowsAzure.Messaging.NotificationHubs;
    
  7. أضف الخصائص التالية إلى فئة MainActivity:

    internal static readonly string CHANNEL_ID = "my_notification_channel";
    
    
  8. في MainActivity.cs، أضف التعليمات البرمجية التالية إلى OnCreate بعد base.OnCreate(savedInstanceState):

    // Listen for push notifications
    NotificationHub.SetListener(new AzureListener());
    
    // Start the SDK
    NotificationHub.Start(this.Application, HubName, ConnectionString);
    
  9. أضف فئة باسم AzureListener إلى مشروعك.

  10. أضف عبارات الاستخدام التالية إلى AzureListener.cs.

    using Android.Content;
    using WindowsAzure.Messaging.NotificationHubs;
    
  11. أضف ما يلي أعلاه تصريح الفصل الخاص بك، واجعل فصلك يرث من Java.Lang.Object ونفذ INotificationListener:

    public class AzureListener : Java.Lang.Object, INotificationListener
    
  12. أضف التعليمات البرمجية التالية داخل فئة 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());
        }
    
  13. أنشئ مشروعك.

  14. قم بتشغيل تطبيقك على جهازك أو تحميل برنامج محاكاة

إرسال إخطار بالاختبار من مدخل Microsoft Azure

يمكنك اختبار تلقي الإشعارات في التطبيق باستخدام خيار إرسال اختبار في مدخل Azure. يرسل إعلام الاختبار المؤقت إلى جهازك.

Azure portal - Test Send

عادةً ما يتم إرسال الإشعارات الفورية في خدمة خلفية مثل Mobile Services أو ASP.NET من خلال مكتبة متوافقة. إذا لم تكن المكتبة متاحة للواجهة الخلفية الخاصة بك، فيمكنك أيضاً استخدام واجهة برمجة تطبيقات REST مباشرةً لإرسال رسائل التنبيه.

الخطوات التالية

في هذا البرنامج التعليمي، قمت بإرسال إشعارات البث إلى جميع أجهزة Android المسجلة في الواجهة الخلفية. لمعرفة كيفية إرسال الإعلامات المؤقتة إلى أجهزة Android محددة، انتقل إلى البرنامج التعليمي التالي: