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

نظرة عامة

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

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

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

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

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

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

    تكوين مركز

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

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

تحتاج إلى إرسال تطبيقك إلى Microsoft Store، ثم تكوين مشروع الخادم الخاص بك للتكامل مع Windows Push Notification Services (WNS) لإرسال الدفع.

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

    إقران التطبيق ب Microsoft Store

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

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

  4. انتقل إلى Application Registration Portal وسجل الدخول باستخدام حساب Microsoft الخاص بك. انقر فوق تطبيق 'متجر Windows' الذي قمت بربطه في الخطوة السابقة.

  5. في صفحة التسجيل، دون القيمة ضمن Application secrets و Package SID، والتي ستستخدمها بعد ذلك لتكوين الواجهة الخلفية لتطبيق الأجهزة المحمولة.

    إقران التطبيق ب Microsoft Store

    هام

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

يحتوي App Center أيضا على إرشادات لتكوين تطبيقات UWP للإعلامات المنبثقة.

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

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

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

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

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

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

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

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

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

  2. قم بتوسيع وحدات التحكم، وافتح 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 the notification hub client.
    NotificationHubClient hub = NotificationHubClient
        .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    
    // Define a WNS payload
    var windowsToastPayload = @"<toast><visual><binding template=""ToastText01""><text id=""1"">"
                            + item.Text + @"</text></binding></visual></toast>";
    try
    {
        // Send the push notification.
        var result = await hub.SendWindowsNativeNotificationAsync(windowsToastPayload);
    
        // 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 WNS payload that contains the new item Text.
    var payload = "<toast><visual><binding template=\ToastText01\><text id=\"1\">"
                                + context.item.text + "</text></binding></visual></toast>";
    
    // 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 WNS native toast notification.
                context.push.wns.sendToast(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;
    

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

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

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

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

  1. افتح ملف مشروع App.xaml.cs وأضف العبارات التالية using :

    using System.Threading.Tasks;
    using Windows.Networking.PushNotifications;
    
  2. في نفس الملف، أضف تعريف الأسلوب InitNotificationsAsync التالي إلى فئة التطبيق :

    private async Task InitNotificationsAsync()
    {
        // Get a channel URI from WNS.
        var channel = await PushNotificationChannelManager
            .CreatePushNotificationChannelForApplicationAsync();
    
        // Register the channel URI with Notification Hubs.
        await App.MobileService.GetPush().RegisterAsync(channel.Uri);
    }
    

    تسترد هذه التعليمة البرمجية ChannelURI للتطبيق من WNS، ثم تسجل ChannelURI هذا مع تطبيق App Service Mobile.

  3. في الجزء العلوي من معالج الأحداث OnLaunched في App.xaml.cs، أضف المعدل غير المتزامن إلى تعريف الأسلوب وأضف الاستدعاء التالي إلى الأسلوب InitNotificationsAsync الجديد، كما في المثال التالي:

    protected async override void OnLaunched(LaunchActivatedEventArgs e)
    {
        await InitNotificationsAsync();
    
        // ...
    }
    

    وهذا يضمن تسجيل ChannelURI قصير الأجل في كل مرة يتم فيها تشغيل التطبيق.

  4. أعد إنشاء مشروع تطبيق UWP. تطبيقك جاهز الآن لتلقي الإعلامات المنبثقة.

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

  1. انقر بزر الماوس الأيمن فوق مشروع 'متجر Windows'، وانقر فوق تعيين كمشروع بدء تشغيل، ثم اضغط على المفتاح F5 لتشغيل تطبيق 'متجر Windows'.

    بعد بدء تشغيل التطبيق، يتم تسجيل الجهاز للإعلامات المنبثقة.

  2. أوقف تطبيق 'متجر Windows' وكرر الخطوة السابقة لتطبيق 'متجر Windows Phone'.

    في هذه المرحلة، يتم تسجيل كلا الجهازين لتلقي إعلامات الدفع.

  3. قم بتشغيل تطبيق 'متجر Windows' مرة أخرى، واكتب نصا في إدراج TodoItem، ثم انقر فوق حفظ.

    لاحظ أنه بعد اكتمال الإدراج، يتلقى كل من 'متجر Windows' والتطبيقات Windows Phone إعلاما من WNS. يتم عرض الإعلام على Windows Phone حتى عندما لا يكون التطبيق قيد التشغيل.

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

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

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

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