إضافة إعلامات دفع إلى تطبيق Xamarin.Forms

نظرة عامة

في هذا البرنامج التعليمي، يمكنك إضافة إعلامات دفع إلى جميع المشاريع التي نتجت عن البدء السريع Xamarin.Forms. وهذا يعني أنه يتم إرسال إعلام دفع إلى جميع العملاء عبر الأنظمة الأساسية في كل مرة يتم فيها إدراج سجل.

إذا لم تستخدم مشروع خادم البدء السريع الذي تم تنزيله، فستحتاج إلى حزمة ملحق الإعلامات المنبثقة. لمزيد من المعلومات، راجع العمل مع SDK لخادم الواجهة الخلفية .NET لتطبيقات Azure Mobile.

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

بالنسبة لنظام التشغيل iOS، ستحتاج إلى عضوية برنامج مطوري Apple وجهاز iOS فعلي. لا يدعم جهاز محاكاة iOS الإعلامات المنبثقة.

تكوين مركز إعلامات

تستخدم ميزة تطبيقات الأجهزة المحمولة في Azure App Service Azure Notification Hubs لإرسال الدفعات، لذلك ستقوم بتكوين مركز إعلام لتطبيق الأجهزة المحمولة الخاص بك.

  1. في مدخل Microsoft Azure، انتقل إلى App Services، ثم حدد النهاية الخلفية للتطبيق. ضمن Settings، حدد Push.

  2. لإضافة مورد مركز إعلام إلى التطبيق، حدد الاتصال. يمكنك إما إنشاء مركز أو الاتصال بمركز موجود.

    تكوين مركز

لقد قمت الآن بتوصيل مركز إعلام بمشروع الواجهة الخلفية لتطبيقات الأجهزة المحمولة. يمكنك لاحقا تكوين مركز الإعلام هذا للاتصال بنظام إعلام النظام الأساسي (PNS) للدفع إلى الأجهزة.

تحديث مشروع الخادم لإرسال إعلامات مؤقتة

في هذا القسم، يمكنك تحديث التعليمات البرمجية في مشروعك الخلفي الحالي ل Mobile Apps لإرسال إعلام دفع في كل مرة تتم فيها إضافة عنصر جديد. يتم تشغيل هذه العملية بواسطة ميزة القالب في Azure Notification Hubs، والتي تمكن الدفعات عبر الأنظمة الأساسية. يتم تسجيل العملاء المتنوعين للإعلامات المؤقتة باستخدام القوالب، ويمكن أن يصل دفع عالمي واحد إلى جميع الأنظمة الأساسية للعميل.

اختر أحد الإجراءات التالية التي تطابق نوع المشروع الخلفي — إما الواجهة الخلفية ل .NET أو Node.js الخلفية.

مشروع .NET الخلفي

  1. في Visual Studio، انقر بزر الماوس الأيمن فوق مشروع الخادم. ثم حدد إدارة حزم NuGet. ابحث Microsoft.Azure.NotificationHubsعن ، ثم حدد تثبيت. تثبت هذه العملية مكتبة Notification Hubs لإرسال الإعلامات من النهاية الخلفية.

  2. في مشروع الخادم، افتح Controllers>TodoItemController.cs. ثم أضف عبارات الاستخدام التالية:

    using System.Collections.Generic;
    using Microsoft.Azure.NotificationHubs;
    using Microsoft.Azure.Mobile.Server.Config;
    
  3. في أسلوب PostTodoItem ، أضف التعليمات البرمجية التالية بعد استدعاء InsertAsync:

    // 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);
    
    // Send the message so that all template registrations that contain "messageParam"
    // receive the notifications. This includes APNS, GCM, WNS, and MPNS template registrations.
    Dictionary<string,string> templateParams = new Dictionary<string,string>();
    templateParams["messageParam"] = item.Text + " was added to the list.";
    
    try
    {
        // Send the push notification and log the results.
        var result = await hub.SendTemplateNotificationAsync(templateParams);
    
        // 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");
    }
    

    ترسل هذه العملية إعلام قالب يحتوي على العنصر. نص عند إدراج عنصر جديد.

  4. إعادة نشر مشروع الخادم.

Node.js مشروع خلفي

  1. إعداد مشروع الواجهة الخلفية.

  2. استبدل التعليمات البرمجية الموجودة في todoitem.js بالتعليمات البرمجية التالية:

    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 template payload.
    var payload = '{"messageParam": "' + 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 template notification.
                context.push.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;  
    

    ترسل هذه العملية إعلام قالب يحتوي على item.text عند إدراج عنصر جديد.

  3. عند تحرير الملف على الكمبيوتر المحلي، أعد نشر مشروع الخادم.

تكوين وتشغيل مشروع Android (اختياري)

أكمل هذا القسم لتمكين الإعلامات المنبثقة لمشروع Xamarin.Forms Droid لنظام Android.

تمكين Firebase Cloud Messaging (FCM)

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

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

    إضافة Firebase إلى تطبيق Android

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

    1. للحصول على اسم حزمة الروبوت، نسخ قيمة التطبيق الخاص بك في ملف build.gradle التطبيق الخاص بك. في هذا المثال، هو com.fabrikam.fcmtutorial1app.

      تحديد اسم الحزمة

    2. حدد Register app.

  4. حدد تنزيل google-services.json⁦، ثم احفظ الملف في مجلد التطبيق الخاص بالمشروع، ثم حدد التالي.

    تحميل google-services.json

  5. قم بإجراء تغييرات التكوين التالية على مشروعك في Android Studio.

    1. في ملف build.gradle مستوى المشروع < (مشروع > /build.gradle)، إضافة العبارة التالية إلى قسم التبعيات.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. في ملف build.gradle على مستوى التطبيق (<مشروع> /< app-module> /build.gradle)، أضف العبارات التالية إلى قسم التبعيات.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. إضافة السطر التالي إلى نهاية الملف build.gradle مستوى التطبيق بعد قسم التبعيات.

      apply plugin: 'com.google.gms.google-services'
      
    4. حدد أيقونة المزامنة الآن في شريط الأدوات.

      تغييرات التكوين build.gradle

  6. حدد "Next".

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

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

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

    حدد إعدادات المشروع

  9. إذا لم تكن قد قمت بتنزيل الملف google-services.json إلى مجلد التطبيق لمشروع Android Studio، يمكنك القيام بذلك على هذه الصفحة.

  10. انتقل إلى علامة التبويب Cloud Messaging في الأعلى.

  11. انسخكلمة مرور الخادم واحفظه للاستخدام لاحقًا. يمكنك استخدام هذه القيمة لتكوين لوحة الوصل الخاصة بك.

تكوين الواجهة الخلفية لتطبيقات الأجهزة المحمولة لإرسال طلبات الدفع باستخدام FCM

  1. في مدخل Microsoft Azure، حدد Browse All>App Services. ثم حدد الواجهة الخلفية لتطبيقات الأجهزة المحمولة.
  2. ضمن Settings، حدد Push. ثم حدد Configure push notification services.
  3. انتقل إلى Google (GCM). أدخل مفتاح الخادم القديم FCM الذي حصلت عليه من وحدة تحكم Firebase، ثم حدد حفظ.

تم الآن تكوين خدمتك للعمل مع Firebase Cloud Messaging.

إضافة إعلامات مؤقتة إلى مشروع Android

مع تكوين النهاية الخلفية باستخدام FCM، يمكنك إضافة مكونات ورموز إلى العميل للتسجيل مع FCM. يمكنك أيضا التسجيل للحصول على إعلامات مؤقتة باستخدام Azure Notification Hubs من خلال الواجهة الخلفية لتطبيقات الأجهزة المحمولة، وتلقي الإعلامات.

  1. في مشروع Droid ، انقر بزر الماوس الأيمن > فوق المراجع إدارة حزم NuGet ....
  2. في نافذة NuGet Package Manager، ابحث عن حزمة Xamarin.Firebase.Messaging وأضفها إلى المشروع.
  3. في خصائص المشروع لمشروع Droid ، اضبط التطبيق على التحويل البرمجي باستخدام إصدار Android 7.0 أو أعلى.
  4. أضف ملف google-services.json ، الذي تم تنزيله من وحدة تحكم Firebase، إلى جذر مشروع Droid وقم بتعيين إجراء البناء الخاص به إلى GoogleServicesJson. لمزيد من المعلومات، راجع إضافة ملف JSON لخدمات Google.

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

  1. افتح ملف AndroidManifest.xml وأدرج العناصر التالية <receiver> في <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>
    

تنفيذ خدمة معرف مثيل Firebase

  1. أضف فئة جديدة إلى مشروع Droid المسمى FirebaseRegistrationService، وتأكد من وجود العبارات التالية using في أعلى الملف:

    using System.Threading.Tasks;
    using Android.App;
    using Android.Util;
    using Firebase.Iid;
    using Microsoft.WindowsAzure.MobileServices;
    
  2. استبدل الفئة الفارغة FirebaseRegistrationService بالتعليمات البرمجية التالية:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseRegistrationService : FirebaseInstanceIdService
    {
        const string TAG = "FirebaseRegistrationService";
    
        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationTokenToAzureNotificationHub(refreshedToken);
        }
    
        void SendRegistrationTokenToAzureNotificationHub(string token)
        {
            // Update notification hub registration
            Task.Run(async () =>
            {
                await AzureNotificationHubService.RegisterAsync(TodoItemManager.DefaultManager.CurrentClient.GetPush(), token);
            });
        }
    }
    

    FirebaseRegistrationService الفئة مسؤولة عن إنشاء رموز الأمان المميزة التي تخول التطبيق للوصول إلى FCM. OnTokenRefresh يتم استدعاء الأسلوب عندما يتلقى التطبيق رمز تسجيل مميز من FCM. يسترد الأسلوب الرمز المميز من الخاصية FirebaseInstanceId.Instance.Token ، التي يتم تحديثها بشكل غير متزامن بواسطة FCM. OnTokenRefresh يتم استدعاء الأسلوب بشكل غير متكرر، لأنه يتم تحديث الرمز المميز فقط عند تثبيت التطبيق أو إلغاء تثبيته، أو عندما يحذف المستخدم بيانات التطبيق، أو عندما يمسح التطبيق معرف المثيل، أو عند اختراق أمان الرمز المميز. بالإضافة إلى ذلك، ستطلب خدمة معرف مثيل FCM تحديث التطبيق للرمز المميز الخاص به بشكل دوري، عادة كل 6 أشهر.

    OnTokenRefresh يستدعي SendRegistrationTokenToAzureNotificationHub الأسلوب أيضا الأسلوب ، الذي يستخدم لإقران رمز تسجيل المستخدم المميز بمركز إعلام Azure.

التسجيل في Azure Notification Hub

  1. أضف فئة جديدة إلى مشروع Droid المسمى AzureNotificationHubService، وتأكد من وجود العبارات التالية using في أعلى الملف:

    using System;
    using System.Threading.Tasks;
    using Android.Util;
    using Microsoft.WindowsAzure.MobileServices;
    using Newtonsoft.Json.Linq;
    
  2. استبدل الفئة الفارغة AzureNotificationHubService بالتعليمات البرمجية التالية:

    public class AzureNotificationHubService
    {
        const string TAG = "AzureNotificationHubService";
    
        public static async Task RegisterAsync(Push push, string token)
        {
            try
            {
                const string templateBody = "{\"data\":{\"message\":\"$(messageParam)\"}}";
                JObject templates = new JObject();
                templates["genericMessage"] = new JObject
                {
                    {"body", templateBody}
                };
    
                await push.RegisterAsync(token, templates);
                Log.Info("Push Installation Id: ", push.InstallationId.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(TAG, "Could not register with Notification Hub: " + ex.Message);
            }
        }
    }
    

    RegisterAsync ينشئ الأسلوب قالب رسالة إعلام بسيطا ك JSON، ويسجل لتلقي إعلامات القالب من مركز الإعلامات، باستخدام الرمز المميز لتسجيل Firebase. يضمن هذا أن أي إعلامات يتم إرسالها من Azure Notification Hub ستستهدف الجهاز الذي يمثله رمز التسجيل المميز.

عرض محتويات الإعلام المنبثق

  1. أضف فئة جديدة إلى مشروع Droid المسمى FirebaseNotificationService، وتأكد من وجود العبارات التالية using في أعلى الملف:

    using Android.App;
    using Android.Content;
    using Android.Media;
    using Android.Support.V7.App;
    using Android.Util;
    using Firebase.Messaging;
    
  2. استبدل الفئة الفارغة FirebaseNotificationService بالتعليمات البرمجية التالية:

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class FirebaseNotificationService : FirebaseMessagingService
    {
        const string TAG = "FirebaseNotificationService";
    
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "From: " + message.From);
    
            // Pull message body out of the template
            var messageBody = message.Data["message"];
            if (string.IsNullOrWhiteSpace(messageBody))
                return;
    
            Log.Debug(TAG, "Notification message body: " + messageBody);
            SendNotification(messageBody);
        }
    
        void SendNotification(string messageBody)
        {
            var intent = new Intent(this, typeof(MainActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            //Unique request code to avoid PendingIntent collision.
            var requestCode = new Random().Next();
            var pendingIntent = PendingIntent.GetActivity(this, requestCode, intent, PendingIntentFlags.OneShot);
            var notificationBuilder = new NotificationCompat.Builder(this)
                .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                .SetContentTitle("New Todo Item")
                .SetContentText(messageBody)
                .SetContentIntent(pendingIntent)
                .SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
                .SetAutoCancel(true);
    
            var notificationManager = NotificationManager.FromContext(this);
            notificationManager.Notify(0, notificationBuilder.Build());
        }
    }
    

    الأسلوب OnMessageReceived ، الذي يتم استدعاؤه عندما يتلقى تطبيق إعلاما من FCM، يستخرج محتوى الرسالة، ويستدعي SendNotification الأسلوب . يحول هذا الأسلوب محتوى الرسالة إلى إعلام محلي يتم تشغيله أثناء تشغيل التطبيق، مع ظهور الإعلام في منطقة الإعلام.

الآن، أنت جاهز لإشعارات دفع الاختبار في التطبيق الذي يعمل على جهاز Android أو المحاكي.

اختبار الإعلامات المنبثقة في تطبيق Android

الخطوتان الأوليان مطلوبتان فقط عند الاختبار على محاكي.

  1. تأكد من أنك تقوم بالتوزيع أو تصحيح الأخطاء على جهاز أو محاكي تم تكوينه باستخدام خدمات Google Play. يمكن التحقق من ذلك عن طريق التحقق من تثبيت تطبيقات Play على الجهاز أو المحاكي.
  2. أضف حساب Google إلى جهاز Android بالنقر فوقإعدادات>التطبيقات>إضافة حساب. ثم اتبع المطالبات لإضافة حساب Google موجود إلى الجهاز، أو لإنشاء حساب جديد.
  3. في Visual Studio أو Xamarin Studio، انقر بزر الماوس الأيمن فوق مشروع Droid وانقر فوق تعيين كمشروع بدء تشغيل.
  4. انقر فوق تشغيل لإنشاء المشروع وبدء تشغيل التطبيق على جهاز Android أو المحاكي.
  5. في التطبيق، اكتب مهمة، ثم انقر فوق أيقونة علامة الجمع (+).
  6. تحقق من تلقي إعلام عند إضافة عنصر.

تكوين وتشغيل مشروع iOS (اختياري)

هذا القسم مخصص لتشغيل مشروع Xamarin iOS لأجهزة iOS. يمكنك تخطي هذا القسم إذا كنت لا تعمل مع أجهزة iOS.

إنشاء ملف طلب توقيع الشهادة

تستخدم خدمة Apple Push Notification (APNs) شهادات لمصادقة إعلامات الدفع. اتبع هذه الإرشادات لإنشاء شهادة الدفع الضرورية لإرسال الإشعارات وتلقيها. للحصول على مزيدٍ من المعلومات عن هذه المفاهيم، راجع وثائق ⁧⁧⁩⁩خدمة Apple Push Notification الرسمية.⁩⁩

إنشاء ملف طلب توقيع الشهادة (CSR) الذي يستخدمه Apple لإنشاء شهادة دفع موقعة.

  1. على جهاز Mac، قم بتشغيل أداة الوصول إلى سلسلة المفاتيح. يمكن فتحه من مجلد ⁧⁧⁩⁩الأدوات المساعدة⁧⁧⁩⁩، أو المجلد ⁧⁧⁩⁩الآخر⁧⁧⁩⁩ على لوحة التشغيل.

  2. حدد ⁧⁧⁩⁩الوصول إلى سلسلة المفاتيح⁧⁧⁩⁩، ثم قم بتوسيع مساعد ⁧⁧⁩⁩الشهادة⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩طلب شهادة من مرجع مصدق⁧⁧⁩⁩.

    استخدم الوصول إلى سلسلة المفاتيح لطلب شهادة جديدة

    ملاحظة

    بشكل افتراضي، يحدد Keychain Access العنصر الأول في القائمة. قد تكون هذه مشكلة إذا كنت في ⁧⁧⁩⁩فئة الشهادات⁧⁧⁩⁩، ولم تكن ⁧⁧⁩⁩هيئة إصدار شهادات علاقات المطور في Apple Worldwide⁧⁧⁩⁩ العنصر الأول في القائمة. تأكد من وجود عنصر غير مفتاح، أو تحديد مفتاح ⁧⁧⁩⁩"المرجع المصدق لعلاقات المطور" في Apple Worldwide⁧⁧⁩⁩ قبل إنشاء طلب توقيع الشهادة (CSR).

  3. حدد ⁧⁧⁩⁩عنوان البريد الإلكتروني للمستخدم⁧⁧⁩⁩، وأدخل قيمة ⁧⁧⁩⁩الاسم الشائع⁧⁧⁩⁩، وتأكد من تحديد حفظ ⁧⁧⁩⁩على القرص⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩. اترك ⁧⁧⁩⁩عنوان البريد الإلكتروني CA⁧⁧⁩⁩ فارغًا؛ لأنه غير مطلوب.

    معلومات الشهادة المطلوبة

  4. أدخل اسمًا لملف CSR في ⁧⁧⁩⁩حفظ باسم⁧⁧⁩⁩، وحدد الموقع في ⁧⁧⁩⁩مكان⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩حفظ⁧⁧⁩⁩.

    اختر اسم ملف للشهادة

    يحفظ هذا الإجراء ملف CSR في الموقع المحدد. الموقع الافتراضي هو ⁧⁧⁩⁩سطح المكتب⁧⁧⁩⁩. تذكر الموقع الذي تم اختياره للملف.

بعد ذلك، سجل تطبيقك مع Apple، ومكن الإشعارات الفورية، وحمّل ملف CSR المصدر لإنشاء شهادة دفع.

سجّل التطبيق للحصول على إشعارات الدفع

لإرسال إشعارات الدفع إلى تطبيق iOS، سجل طلبك مع Apple، وسجل أيضًا للحصول على الإشعارات الفورية.

  1. إذا لم تكن قد سجلت تطبيقك بالفعل، فاستعرض ⁧⁧⁩⁩مدخل توفير iOS⁧⁧⁩⁩ في مركز مطوري Apple. سجّل الدخول إلى المدخل باستخدام Apple ID، وحدد ⁧⁧⁩⁩المعرفات⁧⁧⁩⁩. ثم حدد ⁧⁧⁩⁩⁧⁧+⁩⁩⁧⁧⁩⁩ لتسجيل تطبيق جديد.

    صفحة معرفات تطبيقات مدخل توفير iOS

  2. في شاشة ⁧⁧⁩⁩تسجيل معرف جديد،⁧⁧⁩⁩ حدد زر الاختيار ⁧⁧⁩⁩معرفات التطبيق⁧⁧.⁩⁩ ثم حدد متابعة.

    بوابة توفير iOS تسجل صفحة معرف جديدة

  3. حدِّث القيم الثلاث التالية لتطبيقك الجديد، ثم حدد ⁧⁧⁩⁩متابعة⁧⁧⁩:⁩

    • ⁧⁧⁩⁩الوصف:⁧⁧⁩⁩اكتب اسمًا وصفيًا لتطبيقك.

    • ⁧⁧⁩⁩معرف الحزمة⁧⁧⁩⁩: أدخل معرف حزمة من نموذج ⁧⁧⁩⁩معرف المؤسسة.اسم المنتج⁧⁧⁩⁩ على النحو المذكور في ⁧⁧⁩⁩دليل توزيع التطبيقات⁧⁧⁩⁩. يجب أن تتطابق قيم ⁧⁧⁩⁩معرف المؤسسة⁧⁧⁩⁩⁧⁧⁩⁩، واسم المنتج⁧⁧⁩⁩ مع معرف المؤسسة، واسم المنتج الذي تستخدمه عند إنشاء مشروع Xcode. في لقطة الشاشة التالية، يتم استخدام قيمة ⁧⁧⁩⁩NotificationHubs⁧⁧⁩⁩ كمعرف للمؤسسة، ويتم استخدام قيمة ⁧⁧⁩⁩GetStarted⁧⁧⁩⁩ كاسم المنتج. تأكد من أن قيمة ⁧⁧⁩⁩معرف الحزمة⁧⁧⁩⁩ تطابق القيمة في مشروع Xcode، بحيث يستخدم Xcode ملف تعريف النشر الصحيح.

      صفحة معرف التطبيق لتسجيل مدخل توفير iOS

    • ⁧⁧⁩⁩دفع الإخطارات⁧⁧⁩⁩: حدد خيار ⁧⁧⁩⁩Push Notifications⁧⁧⁩⁩ في قسم ⁧⁧⁩⁩القدرات⁩⁩.⁧⁧

      نموذج لتسجيل معرف تطبيق جديد

      ينشئ هذا الإجراء معرف التطبيق الخاص بك، ويطلب تأكيد المعلومات. حدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩تسجيل⁧⁧⁩⁩ لتأكيد معرف التطبيق الجديد.

      تأكيد معرف التطبيق الجديد

      بعد تحديد ⁧⁧⁩⁩تسجيل⁧⁧⁩⁩، يظهر معرف التطبيق الجديد كعنصر سطر في صفحة ⁧⁧⁩⁩الشهادات والمعرفات وملفات التعريف⁧⁧⁩⁩.

  4. في صفحة ⁧⁧⁩⁩الشهادات والمعرفات وملفات التعريف،⁧⁧⁩⁩ ضمن ⁧⁧⁩⁩المعرفات،⁧⁧⁩⁩حدد موقع عنصر سطر معرف التطبيق الذي قمت بإنشائه للتو، وحدد صفه لعرض شاشة ⁧⁧⁩⁩تحرير تكوين معرف التطبيق⁧⁧.⁩⁩

إنشاء شهادة لمراكز الإعلام

يلزم توافر شهادة لتمكين مركز الإعلام للعمل مع ⁧⁧⁩⁩APNS⁧⁧⁩⁩. يمكن إجراء ذلك بإحدى طريقتين:

  1. إنشاء ملف ⁧⁧⁩⁩.p12⁧⁧⁩⁩ يمكن تحميله مباشرةً إلى مركز الإعلام.
  2. إنشاء ملف ⁧⁧⁩⁩.p8⁧⁧⁩⁩ يمكن استخدامه ⁧⁧⁩⁩للمصادقة المستندة إلى الرمز المميز⁧⁧⁩⁩⁧⁧⁩⁩(الأسلوب الأحدث⁧⁧⁩⁩).

الأسلوب الأحدث له عدد من المزايا (مقارنةً باستخدام الشهادات) على النحو الموثق في المصادقة المستندة إلى ⁧⁧⁩⁩الرمز المميز (HTTP/2) لـ APNS⁧⁧⁩⁩. بيد أنه تم اتخاذ خطوات لكلا النهجين.

الخيار 1: إنشاء شهادة دفع .p12 يمكن تحميلها مباشرة إلى مركز الإعلام

  1. مرر لأسفل إلى خيار ⁧⁧⁩⁩Push Notifications⁧⁧⁩⁩ المحدد، ثم حدد ⁧⁧⁩⁩تكوين⁧⁧⁩⁩ لإنشاء الشهادة.

    تحرير صفحة معرف التطبيق

  2. تعرض ⁧⁧⁩⁩نافذة شهادات SSL لخدمة Apple Push Notification⁧⁧⁩⁩. حدد زر ⁧⁧⁩⁩إنشاء شهادة⁧⁧⁩⁩ ضمن قسم ⁧⁧⁩⁩شهادة SSL للتطوير⁧⁩.⁧⁩

    إنشاء شهادة لزر معرف التطبيق

    يتم عرض شاشة ⁧⁧⁩⁩إنشاء شهادة جديدة⁧⁧.⁩⁩

    ملاحظة

    يستخدم هذا البرنامج التعليمي شهادة تطوير. يتم استخدام العملية نفسها عند تسجيل شهادة إنتاج. تأكد فقط من استخدام نوع الشهادة نفسها عند إرسال الإشعارات.

  3. حدد ⁧⁧⁩⁩اختيار ملف⁧⁧⁩⁩، استعرض للوصول إلى الموقع حيث قمت بحفظ ملف CSR من المهمة الأولى، ثم انقر نقرًا مزدوجًا فوق اسم الشهادة لتحميله. ثم حدد متابعة.

  4. بعد إنشاء المدخل للشهادة، حدد زر ⁧⁧⁩⁩تنزيل⁧⁧.⁩⁩ احفظ الشهادة، وتذكر الموقع الذي تم حفظها فيه.

    صفحة تنزيل الشهادة التي تم إنشاؤها

    يتم تنزيل الشهادة، وحفظها على الكمبيوتر في مجلد ⁧⁧⁩⁩التنزيلات⁧⁧.⁩⁩

    حدد موقع ملف الشهادة في مجلد التنزيلات

    ملاحظة

    بشكل افتراضي، يتم تسمية شهادة التطوير التي تم تنزيلها ⁧⁧⁩⁩aps_development.cer⁧⁧⁩⁩.

  5. انقر نقرًا مزدوجًا فوق شهادة الدفع التي تم تنزيلها ⁧⁧⁩⁩aps_development.cer⁧⁧⁩⁩. يثبِّت هذا الإجراء الشهادة الجديدة في سلسلة المفاتيح، على النحو الموضح في الصورة التالية:

    تعرض قائمة شهادات الوصول إلى سلسلة المفاتيح شهادة جديدة

    ملاحظة

    رغم أن الاسم في الشهادة قد يكون مختلفًا، إلا أنه سيتم تثبيت الاسم مسبقًا مع ⁧⁧⁩⁩خدمات دفع iOS من Apple Development⁧⁧⁩⁩.

  6. في Keychain Access، انقر بزر الماوس الأيمن فوق شهادة الدفع الجديدة التي قمت بإنشائها في ⁧⁧⁩⁩الفئة شهادات⁧⁧.⁩⁩ حدد ⁧⁧⁩⁩تصدير⁧⁧⁩⁩ واسم الملف، وحدد تنسيق ⁧⁧⁩⁩.p12⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩حفظ⁧⁧⁩⁩.

    تصدير الشهادة بتنسيق p12

    يمكنك اختيار حماية الشهادة بكلمة مرور؛ ولكن هذا اختياري. انقر فوق ⁧⁧⁩⁩موافق⁧⁧⁩⁩ إذا كنت تريد تجاوز إنشاء كلمة المرور. دون ملاحظة عن اسم الملف وموقع الشهادة .p12 المصدرة. يتم استخدامها لتمكين المصادقة مع APNs.

    ملاحظة

    قد يختلف اسم الملف وموقع .p12 عما هو مصور في هذا البرنامج التعليمي.

الخيار 2: إنشاء شهادة .p8 التي يمكن استخدامها للمصادقة المستندة إلى الرمز المميز

  1. دَوّن التفاصيل التالية:

    • ⁧⁧⁩⁩بادئة معرف التطبيق⁧⁧⁩⁩ (هذا هو ⁧⁧⁩⁩معرف الفريق⁧⁧⁩⁩)
    • ⁧⁧⁩⁩معرف الحزمة⁧⁧⁩⁩
  2. مرة أخرى في ⁧⁧⁩⁩الشهادات والمعرفات وملفات التعريف⁧⁧⁩⁩، انقر فوق ⁧⁧⁩⁩المفاتيح⁧⁧⁩⁩.

    ملاحظة

    إذا كان لديك مفتاح مكون لـ ⁧⁧⁩⁩APNS،⁧⁧⁩⁩يمكنك إعادة استخدام شهادة .p8 التي قمت بتنزيلها مباشرةً بعد إنشائها. إذا كان الأمر كذلك، يمكنك تجاهل الخطوات ⁧⁧⁩⁩من 3⁧⁧⁩⁩ إلى ⁧⁧⁩⁩5⁧⁧⁩⁩.

  3. انقر فوق زر ⁧⁧⁩⁩⁧⁧+⁩⁩⁧⁧⁩⁩ (أو زر ⁧⁧⁩⁩إنشاء مفتاح)⁧⁧⁩⁩ لإنشاء مفتاح جديد.

  4. وفّر قيمة ⁧⁧⁩⁩اسم مفتاح⁧⁧⁩⁩ مناسبة، ثم تحقق من خيار ⁧⁧⁩⁩خدمة Apple Push Notifications (APNs)،⁧⁧⁩⁩، ومن ثم انقر فوق ⁧⁧⁩⁩متابعة⁧⁧⁩⁩، بعدها ⁧⁧⁩⁩تسجيل⁧⁧⁩⁩ على الشاشة التالية.

  5. انقر فوق ⁧⁧⁩⁩تحميل⁧⁧⁩⁩، ثم انقل ملف ⁧⁧⁩⁩.p8⁧⁧⁩⁩ (مسبوقًا بـ ⁧⁧⁩⁩AuthKey_)⁧⁧⁩⁩إلى دليل محلي آمن، ثم انقر فوق ⁧⁧⁩⁩تم⁧⁧⁩⁩.

    ملاحظة

    تأكد من الاحتفاظ بملف .p8 في مكان آمن (وحفظ نسخة احتياطية). بعد تنزيل المفتاح الخاص بك، لا يمكن إعادة تنزيله عند إزالة نسخة الخادم.

  6. على ⁧⁧⁩⁩المفاتيح⁧⁧⁩⁩، انقر فوق المفتاح الذي قمت بإنشائه للتو (أو مفتاح موجود إذا اخترت استخدام ذلك بدلاً من ذلك).

  7. دَوّن قيمة ⁧⁧⁩⁩معرف المفتاح⁧⁧⁩.⁩

  8. افتح شهادة .p8 في تطبيق مناسب من اختيارك مثل ⁧⁧⁩⁩⁧⁧⁩⁩رمز Visual Studio⁧⁧⁩⁩⁧⁧⁩⁩، ثم دَوّن قيمة المفتاح. هذه هي القيمة بين ⁧⁧⁩⁩-----BEGIN PRIVATE KEY-----⁧⁧⁩⁩ و⁧⁧⁩⁩-----END PRIVATE KEY-----⁧⁧⁩⁩.

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    ملاحظة

    هذه هي ⁧⁧⁩⁩قيمة الرمز المميز⁧⁧⁩⁩ التي سيتم استخدامها لاحقًا لتكوين ⁧⁧⁩⁩مركز الإعلامات⁧⁧⁩⁩.

في نهاية هذه الخطوات يجب أن يكون لديك المعلومات التالية لاستخدامها لاحقًا في ⁧⁧⁩⁩تكوين مركز الإعلامات بمعلومات APNs⁧⁧⁩:⁩

  • ⁧⁧⁩⁩معرف الفريق⁧⁧⁩⁩ (راجع الخطوة 1)
  • ⁧⁧⁩⁩معرف الحزمة⁧⁧⁩⁩ (راجع الخطوة 1)
  • ⁧⁧⁩⁩معرف المفتاح⁧⁧⁩⁩ (راجع الخطوة 7)
  • ⁧⁧⁩⁩قيمة الرمز المميز⁧⁧⁩⁩؛ أي: قيمة المفتاح .p8 (راجع الخطوة 8)

إنشاء ملف تعريف توفير للتطبيق

  1. راجع ⁧⁧⁩⁩مدخل توفير iOS⁧⁧⁩⁩، وحدد ⁧⁧⁩⁩الشهادات والمعرفات وملفات التعريف⁧⁧⁩⁩، ثم حدد ⁧⁧⁩⁩ملفات التعريف⁧⁧⁩⁩ من القائمة اليمنى، ثم حدد ⁧⁧⁩⁩⁧⁧+⁩⁩⁧⁧⁩⁩ لإنشاء ملف تعريف جديد. تظهر شاشة ⁧⁧⁩⁩تسجيل ملف تعريف توفير جديد⁧⁧.⁩⁩

  2. حدد ⁧⁧⁩⁩تطوير تطبيقات iOS⁧⁧⁩⁩ ضمن ⁧⁧⁩⁩التطوير⁧⁧⁩⁩ كنوع ملف تعريف التوفير، ثم حدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩.

    قائمة ملف التعريف المخصص

  3. بعد ذلك، حدد معرف التطبيق الذي أنشأته من القائمة المنسدلة ⁧⁧⁩⁩معرف التطبيق،⁧⁧⁩⁩، وحدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩.

    تحديد معرف التطبيق

  4. في نافذة ⁧⁧⁩⁩تحديد الشهادات،⁧⁧⁩⁩ حدد شهادة التطوير التي تستخدمها لتوقيع التعليمات البرمجية، وحدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩. ليست هذه الشهادة شهادة الدفع التي قمت بإنشائها. إذا لم يكن أحدها موجودًا، يجب عليك إنشاؤها. إذا كانت هناك شهادة، فانتقل إلى الخطوة التالية. لإنشاء شهادة تطوير إذا لم تكن موجودة:

    1. إذا رأيت ⁧⁧⁩⁩لا توجد شهادات متوفرة⁧⁧⁩⁩، فحدد إنشاء ⁧⁧⁩⁩شهادة⁧⁧⁩⁩.
    2. في قسم ⁧⁧⁩⁩البرامج،⁧⁧⁩⁩ حدد ⁧⁧⁩⁩تطوير Apple⁧⁧⁩⁩. ثم حدد متابعة.
    3. في شاشة إنشاء شهادة جديدة، حدد اختيار ملف.
    4. استعرض للوصول إلى شهادة ⁧⁧⁩⁩طلب توقيع الشهادة⁧⁧⁩⁩ التي قمت بإنشائها سابقًا، وحددها، ثم حدد ⁧⁧⁩⁩فتح⁧⁧⁩⁩.
    5. حدد ⁦⁩Continue⁦⁩.
    6. قم بتنزيل شهادة التطوير، وتذكر الموقع الذي تم حفظها فيه.
  5. ارجع إلى صفحة ⁧⁧⁩⁩الشهادات والمعرفات وملفات التعريف⁧⁧⁩⁩، وحدد ⁧⁧⁩⁩ملفات التعريف⁧⁧⁩⁩ من القائمة اليسرى، ثم حدد ⁧⁧⁩⁩⁧⁧+⁩⁩⁧⁧⁩⁩ لإنشاء ملف تعريف جديد. تظهر شاشة ⁧⁧⁩⁩تسجيل ملف تعريف توفير جديد⁧⁧.⁩⁩

  6. في نافذة ⁧⁧⁩⁩تحديد الشهادات،⁧⁧⁩⁩ حدد شهادة التطوير التي أنشأتها للتو. ثم حدد متابعة.

  7. بعد ذلك، حدد الأجهزة التي تريد استخدامها للاختبار، وحدد ⁧⁧⁩⁩متابعة⁧⁧⁩⁩.

  8. وأخيرًا، اختر اسمًا لملف التعريف في ⁧⁧⁩⁩تقديم اسم ملف التعريف⁧⁧⁩⁩، وحدد ⁧⁧⁩⁩إنشاء⁧⁧⁩⁩.

    اختيار اسم ملف تعريف توفير

  9. عند إنشاء ملف تعريف التوفير الجديد، حدد ⁧⁧⁩⁩تنزيل⁧⁧⁩⁩. تذكر الموقع الذي تم حفظه فيه.

  10. استعرض للوصول إلى موقع ملف تعريف التوفير، ثم انقر نقرًا مزدوجًا فوقه لتثبيته على جهاز تطوير Xcode.

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

في هذا القسم ، يمكنك إنشاء مركز إعلام، وتكوين المصادقة مع APNs باستخدام إما شهادة الدفع .p12 أو المصادقة القائمة على الرمز المميز. إذا كنت ترغب في استخدام مركز إعلام قمت بإنشائه بالفعل، يمكنك تخطي الخطوة 5.

  1. تسجيل الدخول إلى ⁧⁩مدخل Azure⁧⁩.

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

    مدخل Azure - حددNotification Hubs

  3. في صفحة لوحات الوصل إعلام، حدد إضافة على شريط الأدوات.

    محاور الإعلام - إضافة زر شريط الأدوات

  4. في صفحة مركز الإعلام، قم بإجراء الخطوات التالية:

    1. أدخل اسمًا في مركز الإعلام.

    2. أدخل اسمًا في إنشاء مساحة اسم جديدة. تحتوي مساحة الاسم على لوحة وصل واحدة أو أكثر.

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

    4. حدد مجموعة موارد موجودة في مجموعة الموارد، أو أنشئ اسمًا لمجموعة موارد جديدة.

    5. حدد Create.

      مدخل Azure - تعيين خصائص مركز الإعلام

  5. حدد الإعلامات (رمز الجرس)، ثم حدد الانتقال إلى المورد. يمكنك أيضًا تحديث القائمة في صفحة مراكز الإعلام وتحديد لوحة الوصل.

    مدخل Microsoft Azure - الإعلامات -> الانتقال إلى المورد

  6. حدد نهج الوصول من القائمة. لاحظ أن سلسلتي الاتصال متوفرتان لك. ستحتاج إليها لاحقًا للتعامل مع الإشعارات الفورية.

    هام

    لا يجب استخدام نهج DefaultFullSharedAccessSignature في تطبيقك. هذا مقصود أن تستخدم في الطرف الخلفي الخاص بك فقط.

    مدخل Azure - سلاسل اتصال مركز الإعلام

تكوين مركز الإعلامات بمعلومات APNs

ضمن ⁧⁧⁩⁩خدمات الإعلام⁧⁧⁩⁩، حدد Apple ⁧⁧⁩⁩(APNS)⁧⁧⁩⁩، ثم اتبع الخطوات المناسبة استنادًا إلى الأسلوب الذي اخترته سابقًا في قسم إنشاء ⁧⁧⁩⁩شهادة لمراكز الإعلام⁧⁧.⁩⁩

ملاحظة

استخدم "الإنتاج لوضع التطبيق " فقط إذا كنت تريد إرسال إعلامات مؤقتة إلى المستخدمين الذين اشتروا تطبيقك من المتجر.

الخيار 1: استخدام شهادة دفع.p12

  1. حدد ⁧⁧⁩⁩شهادة⁧⁧⁩⁩.

  2. حدد أيقونة الملف.

  3. حدد الملف .p12 الذي قمت بتصديره سابقًا، ثم حدد ⁧⁧⁩⁩فتح⁧⁧⁩⁩.

  4. إذا لزم الأمر، فحدد كلمة المرور الصحيحة.

  5. حدد وضع ⁧⁧⁩⁩بيئة الاختيار⁩⁩.⁧⁧

    تكوين شهادة APNs في مدخل Azure

  6. حدد ⁧⁩حفظ⁧⁩.

الخيار 2: استخدام المصادقة المستندة إلى الرمز المميز

  1. حدد ⁧⁧⁩⁩الرمز المميز⁧⁧⁩⁩.

  2. أدخل القيم التالية التي حصلت عليها سابقًا:

    • ⁧⁧⁩⁩معرف المفتاح⁧⁧⁩⁩
    • ⁧⁧⁩⁩معرف الحزمة⁧⁧⁩⁩
    • ⁧⁧⁩⁩معرّف الفريق⁧⁧⁩⁩
    • ⁧⁧⁩⁩الرمز المميز⁧⁧⁩⁩
  3. اختر ⁧⁧⁩⁩بيئة الاختيار⁧⁧⁩⁩

  4. حدد ⁧⁩حفظ⁧⁩.

لقد قمت الآن بتكوين مركز الإعلامات باستخدام APNs. لديك أيضًا سلاسل الاتصال لتسجيل التطبيق الخاص بك، وإرسال إشعارات الدفع.

تكوين مركز الإعلام ل APNS

  1. على جهاز Mac، قم بتشغيل Keychain Access. على شريط التنقل الأيسر، ضمن الفئة، افتح شهاداتي. ابحث عن شهادة SSL التي قمت بتنزيلها في القسم السابق، ثم قم بالكشف عن محتوياتها. حدد الشهادة فقط (لا تحدد المفتاح الخاص). ثم قم بتصديره.
  2. في مدخل Microsoft Azure، حدد Browse All>App Services. ثم حدد الواجهة الخلفية لتطبيقات الأجهزة المحمولة.
  3. ضمن Settings، حدد App Service Push. ثم حدد اسم مركز الإعلامات.
  4. انتقل إلى Apple Push Notification Services>Upload Certificate. قم بتحميل ملف .p12، مع تحديد الوضع الصحيح (اعتمادا على ما إذا كانت شهادة SSL للعميل من السابق هي الإنتاج أو بيئة الاختبار المعزولة). احفظ أي تغييرات.

تم تكوين خدمتك الآن للعمل مع الإعلامات المنبثقة على iOS.

بعد ذلك، ستقوم بتكوين إعداد مشروع iOS في Xamarin Studio أو Visual Studio.

تكوين مشروع iOS في Xamarin Studio

  1. في Xamarin.Studio، افتح Info.plist، وقم بتحديث معرف الحزمة بمعرف المجموعة الذي قمت بإنشائه مسبقا باستخدام معرف التطبيق الجديد.

  2. مرر لأسفل وصولا إلى أوضاع الخلفية. حدد المربع تمكين أوضاع الخلفية ومربع الإعلامات عن بعد .

  3. انقر نقرا مزدوجا فوق مشروعك في لوحة الحلول لفتح خيارات المشروع.

  4. ضمن إنشاء، اختر توقيع حزمة iOS، وحدد الهوية المقابلة وملف تعريف التوفير الذي قمت بإعداده للتو لهذا المشروع.

    وهذا يضمن أن المشروع يستخدم ملف التعريف الجديد لتوقيع التعليمات البرمجية. للحصول على وثائق تزويد جهاز Xamarin الرسمية، راجع تزويد جهاز Xamarin.

تكوين مشروع iOS في Visual Studio

  1. في Visual Studio، انقر بزر الماوس الأيمن فوق المشروع، ثم انقر فوق خصائص.

  2. في صفحات الخصائص، انقر فوق علامة التبويب تطبيق iOS ، وقم بتحديث المعرف بالمعرف الذي قمت بإنشائه سابقا.

  3. في علامة التبويب توقيع حزمة iOS ، حدد الهوية المقابلة وملف تعريف التوفير الذي قمت بإعداده للتو لهذا المشروع.

    وهذا يضمن أن المشروع يستخدم ملف التعريف الجديد لتوقيع التعليمات البرمجية. للحصول على وثائق تزويد جهاز Xamarin الرسمية، راجع تزويد جهاز Xamarin.

  4. انقر نقرا مزدوجا فوق Info.plist لفتحه، ثم قم بتمكين RemoteNotifications ضمن أوضاع الخلفية.

إضافة إعلامات مؤقتة إلى تطبيق iOS

  1. في مشروع iOS ، افتح AppDelegate.cs وأضف العبارة التالية إلى أعلى ملف التعليمات البرمجية.

    using Newtonsoft.Json.Linq;
    
  2. في فئة AppDelegate ، أضف تجاوزا لحدث RegisteredForRemoteNotifications للتسجيل للحصول على الإعلامات:

    public override void RegisteredForRemoteNotifications(UIApplication application,
        NSData deviceToken)
    {
        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
            {
                {"body", templateBodyAPNS}
            };
    
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        push.RegisterAsync(deviceToken, templates);
    }
    
  3. في AppDelegate، أضف أيضا التجاوز التالي لمعالج حدث DidReceiveRemoteNotification :

    public override void DidReceiveRemoteNotification(UIApplication application,
        NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
    {
        NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
    
        string alert = string.Empty;
        if (aps.ContainsKey(new NSString("alert")))
            alert = (aps[new NSString("alert")] as NSString).ToString();
    
        //show alert
        if (!string.IsNullOrEmpty(alert))
        {
            UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
            avAlert.Show();
        }
    }
    

    يعالج هذا الأسلوب الإعلامات الواردة أثناء تشغيل التطبيق.

  4. في فئة AppDelegate ، أضف التعليمات البرمجية التالية إلى أسلوب FinishedLaunching :

    // Register for push notifications.
    var settings = UIUserNotificationSettings.GetSettingsForTypes(
        UIUserNotificationType.Alert
        | UIUserNotificationType.Badge
        | UIUserNotificationType.Sound,
        new NSSet());
    
    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
    

    وهذا يتيح دعم الإعلامات عن بعد والطلبات التي تدفع التسجيل.

يتم الآن تحديث تطبيقك لدعم الإعلامات المنبثقة.

اختبار الإعلامات المنبثقة في تطبيق iOS

  1. انقر بزر الماوس الأيمن فوق مشروع iOS، وانقر فوق تعيين كمشروع بدء التشغيل.

  2. اضغط على الزر تشغيل أو F5 في Visual Studio لإنشاء المشروع وبدء تشغيل التطبيق في جهاز iOS. ثم انقر فوق موافق لقبول الإعلامات المنبثقة.

    ملاحظة

    يجب عليك قبول الإعلامات المنبثقة بشكل صريح من تطبيقك. يحدث هذا الطلب فقط في المرة الأولى التي يتم فيها تشغيل التطبيق.

  3. في التطبيق، اكتب مهمة، ثم انقر فوق أيقونة علامة الجمع (+).

  4. تحقق من تلقي إعلام، ثم انقر فوق موافق لتجاهل الإعلام.

تكوين وتشغيل مشاريع Windows (اختياري)

هذا القسم مخصص لتشغيل مشاريع Xamarin.Forms WinApp وWinPhone81 لأجهزة Windows. تدعم هذه الخطوات أيضا مشاريع النظام الأساسي العام لـ Windows (UWP). يمكنك تخطي هذا القسم إذا كنت لا تعمل مع أجهزة Windows.

تسجيل تطبيق Windows الخاص بك للإشعارات المنبثقة باستخدام خدمة إعلامات Windows (WNS)

  1. في Visual Studio مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروع تطبيق 'متجر Windows'. ثم حدد Store>Associate App مع Store.

    إقران التطبيق بمتجر Windows

  2. في المعالج، حدد التالي. ثم سجل الدخول باستخدام حساب Microsoft الخاص بك. في حجز اسم تطبيق جديد، اكتب اسما لتطبيقك، ثم حدد حجز.

  3. بعد إنشاء تسجيل التطبيق بنجاح، حدد اسم التطبيق الجديد. حدد التالي، ثم حدد إقران. تضيف هذه العملية معلومات تسجيل 'متجر Windows' المطلوبة إلى بيان التطبيق.

  4. كرر الخطوين 1 و3 لمشروع تطبيق Windows Phone Store باستخدام نفس التسجيل الذي أنشأته مسبقا لتطبيق 'متجر Windows'.

  5. انتقل إلى Windows Dev Center، ثم سجل الدخول باستخدام حساب Microsoft الخاص بك. في تطبيقاتي، حدد تسجيل التطبيق الجديد. ثم قم بتوسيعإعلامات دفعالخدمات>.

  6. في صفحة الإعلامات المنبثقة ، ضمن Windows Push Notification Services (WNS) وMicrosoft Azure Mobile Apps، حدد موقع Live Services. دون قيم Package SID والقيمة الحالية في Application Secret.

    إعداد التطبيق في مركز المطورين

    هام

    يعد كل من سر التطبيق وحزمة SID من بيانات اعتماد الأمان المهمة. لا تشارك هذه القيم مع أي شخص أو توزعها مع تطبيقك.

تكوين مركز الإعلامات ل WNS

  1. في مدخل Microsoft Azure، حدد Browse All>App Services. ثم حدد الواجهة الخلفية لتطبيقات الأجهزة المحمولة. ضمن Settings، حدد App Service Push. ثم حدد اسم مركز الإعلامات.

  2. انتقل إلى Windows (WNS). ثم أدخل مفتاح الأمان (سر العميل) وحزمة SID التي حصلت عليها من موقع Live Services. بعد ذلك، حدد حفظ.

    تعيين مفتاح WNS في المدخل

تم الآن تكوين الواجهة الخلفية لاستخدام WNS لإرسال إعلامات الدفع.

إضافة إعلامات مؤقتة إلى تطبيق Windows

  1. في Visual Studio، افتح App.xaml.cs في مشروع Windows، وأضف العبارات التالية.

    using Newtonsoft.Json.Linq;
    using Microsoft.WindowsAzure.MobileServices;
    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    using <your_TodoItemManager_portable_class_namespace>;
    

    استبدل <your_TodoItemManager_portable_class_namespace> بمساحة اسم المشروع المحمول الذي يحتوي على TodoItemManager الفئة .

  2. في App.xaml.cs، أضف أسلوب InitNotificationsAsync التالي:

    private async Task InitNotificationsAsync()
    {
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        const string templateBodyWNS =
            "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">$(messageParam)</text></binding></visual></toast>";
    
        JObject headers = new JObject();
        headers["X-WNS-Type"] = "wns/toast";
    
        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyWNS},
            {"headers", headers} // Needed for WNS.
        };
    
        await TodoItemManager.DefaultManager.CurrentClient.GetPush()
            .RegisterAsync(channel.Uri, templates);
    }
    

    يحصل هذا الأسلوب على قناة الإعلام المؤقت، ويسجل قالب لتلقي إعلامات القالب من مركز الإعلامات. سيتم تسليم إعلام قالب يدعم messageParam إلى هذا العميل.

  3. في App.xaml.cs، قم بتحديث تعريف أسلوب معالج الأحداث OnLaunched عن طريق إضافة async المعدل. ثم أضف السطر التالي من التعليمات البرمجية في نهاية الأسلوب:

    await InitNotificationsAsync();
    

    وهذا يضمن إنشاء تسجيل الإعلامات المنبثقة أو تحديثه في كل مرة يتم فيها تشغيل التطبيق. من المهم القيام بذلك لضمان أن قناة دفع WNS نشطة دائما.

  4. في مستكشف الحلول ل Visual Studio، افتح ملف Package.appxmanifest، وقم بتعيين Toast Capable إلى Yes ضمن Notifications.

  5. أنشئ التطبيق وتحقق من عدم وجود أخطاء. يجب أن يسجل تطبيق العميل الخاص بك الآن إعلامات القالب من النهاية الخلفية لتطبيقات الأجهزة المحمولة. كرر هذا القسم لكل مشروع Windows في الحل الخاص بك.

اختبار الإعلامات المنبثقة في تطبيق Windows

  1. في Visual Studio، انقر بزر الماوس الأيمن فوق مشروع Windows، وانقر فوق تعيين كمشروع بدء تشغيل.
  2. اضغط على الزر تشغيل لإنشاء المشروع وبدء تشغيل التطبيق.
  3. في التطبيق، اكتب اسما ل todoitem جديد، ثم انقر فوق أيقونة علامة الجمع (+) لإضافته.
  4. تحقق من تلقي إعلام عند إضافة العنصر.

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

يمكنك معرفة المزيد حول الإعلامات المنبثقة:

يمكنك أيضا المتابعة إلى أحد البرامج التعليمية التالية:

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