Экспорт (0) Печать
Развернуть все

Учебник по центрам уведомлений Service Bus (для приложений Android)

Центры уведомлений Windows Azure Service Bus — это сущности Service Bus, которые позволяют вам отправлять push-уведомления для устройств с помощью программных платформ сторонних разработчиков, в частности: К этим платформам относятся следующие:

  1. службы push-уведомлений Windows (WNS) для Windows 8;

  2. службы push-уведомлений Apple (APNs).

  3. Служба обмена сообщениями облака Google (GCM) для Android.

В этом учебнике описывается настройка приложения Android и простого приложения ASP.NET MVC, которое отправляет шаблонное уведомление посредством GCM.

noteПримечание
Центры уведомлений доступны для ознакомления в Windows Azure Service Bus с января 2013 года. Выпуск центров уведомлений запланирован на середину 2013 года.

noteПримечание
В результате внесения усовершенствований в центры уведомлений, пакет SDK, загруженный до апреля 2013 года, не будет работать с новыми центрами уведомлений. И наоборот, текущий пакет SDK не будет работать с центрами уведомлений, созданными до апреля 2013 года. Начните пользоваться новыми центрами уведомлений в новом пакте SDK, чтобы воспользоваться всеми преимущества новых функций, таких как управление оптимистическим параллелизмом. Поддержка центров уведомлений, созданных до апреля 2013 года, будет прекращена, когда новые центры уведомлений станут общедоступными.

Вскоре планируется добавление поддержки службы push-уведомлений Microsoft (MPNS) для Windows Phone.

Также доступен углубленный раздел Инструкция по Центры уведомлений Service Bus (приложения Android) и обзор Центры уведомлений Windows Azure Service Bus. Дополнительные сведения том, как использовать центры уведомлений из Магазина Windows и приложений iOS, см. в разделах Инструкция по центрам уведомлений Service Bus (для приложений Магазина Windows) и Инструкция по центрам уведомлений Service Bus (для приложений iOS), соответственно.

Предварительные требования

  1. Предварительная версия пакета SDK Service Bus .NET. Пакет SDK — это пакет NuGet, содержащий предварительные версии компонентов Service Bus; его можно загрузить здесь. Пакет содержит предварительные версии компонентов ServiceBus и новую библиотеку Service Bus — Microsoft.ServiceBus.Preview.dll. Чтобы использовать центры уведомлений, необходимо использовать эту библиотеку вместо полнофункциональной версии (Microsoft.ServiceBus.dll).

  2. Пакет SDK для Android (дополнительно — для Eclipse), который можно загрузить здесь.

  3. Android SDK для центров уведомлений. (этот пакет SDK можно загрузить здесь).

Создание проекта Google API и создание ключа API

Создание проекта Google API

  1. Откройте Консоль Google API.

  2. Если у вас уже есть проект и необходимо создать новый, выберите Other projects (Другие проекты), затем выберите Create (Создать). Если это первый ваш проект Google API, выберите команду Создать проект…

    Push-уведомления
  3. URL-адрес в браузере примет следующий вид: https://code.google.com/apis/console/#project:1234567890.

  4. Запишите номер, указанный после #project, (например, в приведенном выше примере это 1234567890). Это ваш идентификатор отправителя GCM.

Включение GCM и создание ключа серверного API

  1. На главной странице консоли API Google выберите Service (Служба).

  2. Задайте для службы Google Cloud Messaging значение On (Включено) и примите условия предоставления услуг.

  3. На главной странице консоли API Google выберите API Access (Доступ API).

  4. Выберите Create new Server key (Создать новый ключ сервера), затем выберите Create (Создать).

    noteПримечание
    Заполнять белый список IP-адресов не обязательно.

  5. Запишите созданный ключ API.

Создание центра уведомлений Service Bus

Используя портал управления Windows Azure, создайте и настройте центр уведомлений для отправки push-уведомлений в приложение Android.

  1. Выполните вход на портал управления Windows Azure.

  2. В нижнем левом углу выберите Создать.

  3. Последовательно выберите Службы приложений, Service Bus, Концентратор уведомлений и Быстро создать.

    Push-уведомления
  4. Выберите для центра уведомлений имя, область и пространство имен, в котором можно создать этот центр уведомлений (при отсутствии доступного пространства имен выделяется новое пространство с заданным именем). Установите флажок.

  5. Теперь выберите созданное пространство имен под вкладкой Service Bus в области навигации слева. Центр уведомлений должен отобразиться в списке.

    Push-уведомления
  6. Выберите центр уведомлений и в верхней части страницы выберите вкладку Настройка.

    Push-уведомления
  7. Вставьте полученный ранее ключ API GCM и выберите Сохранить.

Подключение к приложению

Если у вас еще нет проекта Android, создайте новый проект.

  1. В Eclipse ADT создайте новый проект Android (File, New, Android Application), и укажите Minimum Required SDK как API 8: Android 2.2 (Froyo).

    Push
  2. Следуйте указаниям мастера, не меняя стандартные настройки (например, создайте пустое действие).

    Push
  3. Откройте Android SDK Manager в верхней панели инструментов Eclipse. Последовательно выберите Google APIs (Интерфейсы API Google), Google Cloud Messaging for Android Library (Библиотека Google Cloud Messaging for Android) и Google Play Service (Сервис Google Play), как показано ниже. Выберите Install Packages (Установить пакеты). Перезапустите Eclipse.

    noteПримечание
    Примечание. Запомните путь к пакету SDK, отображенный в верхней области SDK Manager.

    Push
  4. Перейдите по пути к пакету SDK и скопируйте в каталог \libs вашего проекта в обозревателе пакетов следующие файлы: \extras\google\gcm\gcm-client\dist\gcm.jar; \extras\google\google_play_services\libproject\google-play-services_lib\libs\google-play-services.jar.

  5. Загрузите Android SDK для центров уведомлений отсюда. Распакуйте ZIP-файл и скопируйте файл notificationhubs\notification-hubs-sdk.jar в каталог \libs вашего проекта в обозревателе пакетов.

  6. В обозревателе проектов щелкните правой кнопкой проект и выберите пункт Properties (Свойства). Затем выберите Android на панели слева. Проверьте назначение Google APIs (Интерфейсы API Google). Нажмите кнопку OK.

    Push

    Теперь настройте приложение для получения registrationId из службы GCM. Используйте registrationId для регистрации экземпляра приложения в центре уведомлений.

  7. В файле AndroidManifest.xml под элементом <uses-sdk/> добавьте приведенную ниже строку кода. Вместо <your package> обязательно укажите пакет, выбранный для вашего приложения на шаге 1 (в этом примере это com.microsoft.testnotificationhubs).

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission android:name="<your package>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="<your package>.permission.C2D_MESSAGE"/>
    
  8. В класс MainActivity добавьте следующие частные члены.

    noteПримечание
    Обязательно используйте полученный ранее идентификатор отправителя.

    private String SENDER_ID = "<your project number>";
    private GoogleCloudMessaging gcm;
    private NotificationHub hub;
    
  9. На портале управления Windows Azure получите строку подключения с правами для прослушивания, перейдя к панели мониторинга центра уведомлений и выбрав Сведения о подключении.

    Push
  10. Добавьте в метод OnCreate приведенный далее код. Вместо заполнителей обязательно укажите строку подключения с правами для прослушивания, полученную на предыдущем шаге, и имя центра уведомлений.

    gcm = GoogleCloudMessaging.getInstance(this);
            
    String connectionString = "<your listen access connection string>";
    hub = new NotificationHub("<your notification hub name>", connectionString, this);
    
    registerWithNotifiationHub();
    
  11. В файле MainActivity.java создайте следующий метод:

    @SuppressWarnings("unchecked")
    private void registerWithNotificationHubs() {
       new AsyncTask() {
          @Override
          protected Object doInBackground(Object... params) {
             try {
                String regid = gcm.register(SENDER_ID);
                hub.register(regid);
             } catch (Exception e) {
                return e;
             }
             return null;
         }
       }.execute(null, null, null);
    }
    
  12. Так как в среде Android не отображаются уведомления, необходимо написать собственный получатель. В файле AndroidManifest.xml добавьте в элемент <application/> приведенный ниже элемент.

    noteПримечание
    Вместо заполнителя укажите имя пакета.

    <receiver
        android:name=".MyBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your package name>" />
       </intent-filter>
    </receiver>
    
  13. Создайте новый класс (щелкните правой кнопкой мыши пакет приложения в обозревателе пакетов, выберите пункт New (Создать) и выберите Class (Класс)). Присвойте классу имя MyBroadcastReceiver, порожденное от android.content.BroadcastReceiver.

    Push
  14. Добавьте в MyBroadcastReceiver следующий код:

    public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        Context ctx;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
            ctx = context;
            String messageType = gcm.getMessageType(intent);
            if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                sendNotification("Send error: " + intent.getExtras().toString());
            } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                sendNotification("Deleted messages on server: " + 
                        intent.getExtras().toString());
            } else {
                sendNotification("Received: " + intent.getExtras().toString());
            }
            setResultCode(Activity.RESULT_OK);
    }
    
    private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager)
                  ctx.getSystemService(Context.NOTIFICATION_SERVICE);
          
          PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
              new Intent(ctx, MainActivity.class), 0);
          
          NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(ctx)
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentTitle("Notification Hub Demo")
              .setStyle(new NotificationCompat.BigTextStyle()
                         .bigText(msg))
              .setContentText(msg);
          
         mBuilder.setContentIntent(contentIntent);
         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
    

Запустите приложение в эмуляторе

При запуске приложения в эмуляторе используйте AVD, поддерживающее Google API.

  1. В области Window (Окно) выберите Android Virtual Device Manager (Диспетчер устройств AVD), выберите устройство и выберите Edit (Изменить).

    Push
  2. В Target (Назначение) выберите Google APIs (Интерфейсы API Google) и нажмите кнопку OK.

    Push
  3. На верхней панели инструментов выберите Run (Запустить), после чего выберите ваше приложение. Откроется эмулятор, в котором будет запущено приложение.

  4. Приложение извлекает registrationId из службы GCM и выполняет регистрацию в центре уведомлений.

noteПримечание
Чтобы получать push-уведомления, вам нужно настроить учетную запись Google на устройстве AVD (в эмуляторе откройте раздел Settings (Настройки) и выберите Add Account (Добавить учетную запись)). Также убедитесь, что эмулятор подключен к Интернету.

Отправка уведомления с помощью .NET

Чтобы создавать и отправлять уведомления, создайте простое консольное приложение. Вы можете использовать данный код в обычном веб-приложении.

Если используется Visual Studio Express 2012 для Windows 8, перейдите на страницу Visual Studio Express 2012 для Windows Desktop, чтобы создать консольное приложение. Или же можно использовать Visual Studio Express 2012 для Web, чтобы создать простое приложение веб-форм.

Добавьте ссылки на следующие компоненты:

  • System.Runtime.Serialization.dll

  • System.Runtime.Serialization.dll

Если создается консольное приложение, используйте для функции Main() приведенный ниже код. Вместо заполнителей укажите строку подключения с правами полного доступа, которую можно скопировать на портале управления Azure Windows, и имя вашего центра уведомлений.

Push

Обратите внимание на особый формат GCM JSON, описанный здесь.

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString(<your connection string with full access>, "<your notification hub name>");
    hubClient.SendGcmNativeNotification("{ \"data\" : {\"msg\":\"Hello from Windows Azure!\"}}");
}

Если зарегистрировано 10 000 экземпляров клиентов, центр уведомлений создает и отправляет 10 000 копий уведомлений и выполняет требуемую обработку ошибок и управление регистрациями.

Push

Отправка уведомления с помощью Node.js

Установите Node.js и npm на вашем компьютере.

  1. Установите модуль узла azure.

    npm install azure
    
  2. В скрипте узла (или интерактивной консоли) введите следующее:

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.gcm.send(null, '{"data":{"msg":"Hello from node.js!"}}');
    

Если зарегистрировано 10 000 экземпляров клиентов, центр уведомлений создает и отправляет 10 000 копий уведомлений и выполняет требуемую обработку ошибок и управление регистрациями.

Отправка уведомления с помощью мобильных служб

С помощью мобильных служб можно быстро создать внутреннюю службу для приложения. Центр уведомлений из мобильных служб можно использовать для широковещательной передачи уведомлений на миллионы устройств либо для удобного создания целевых групп посредством тегов.

В этом учебнике используется запланированная служба, однако уведомления можно отправлять с помощью любого серверного сценария в мобильных службах.

  1. Создайте новую или войдите в собственную мобильную службу. Дополнительные сведения мобильных службах см. здесь.

  2. На верхней панели выберите Scheduler (Планировщик).

    Push-уведомления
  3. Создайте новое запланированное задание, вставьте его имя, затем выберите On demand (По требованию).

    Push-уведомления
  4. После создания задания выберите его имя. Затем на верхней панели щелкните Script (Сценарий).

  5. Вставьте приведенный сценарий. Вместо заполнителей обязательно укажите имя центра уведомлений и строку подключения для DefaultFullSharedAccessSignature, полученные ранее. Выберите Save (Сохранить).

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.gcm.send(
            null,
            '{
                "data":
                {
                   "msg" : "Hello from Mobile Services!"
                }
            }',
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. На нижней панели выберите Run Once (Запустить однажды).

noteПримечание
Для доступа к центрам уведомлений мобильные службы используют пакет SDK Windows Azure для Node.js. Дополнительные сведения пакете SDK Windows Azure для Node.js и центров уведомлений см. здесь.

Как было сказано ранее, если зарегистрировано 10 000 экземпляров клиентов, центр уведомлений создает и отправляет 10 000 копий уведомлений и выполняет требуемую обработку ошибок и управление регистрациями. Сведения о том, как отправлять многоплатформенные уведомления, направленные на конкретных пользователей и группы, а также использовать другие дополнительные функции, см. в углубленном разделе Инструкция по центрам уведомлений Service Bus (для приложений Магазина Windows) и обзоре Центры уведомлений Windows Azure Service Bus.

Добавления сообщества

Показ:
© 2015 Microsoft