Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются ключевые функции нового полностью поддерживаемого официального пакета SDK для Центра уведомлений Azure для Java. Этот проект представляет собой проект с открытым исходным кодом, и вы можете просмотреть весь код пакета SDK в пакете SDK для Java.
Как правило, вы можете получить доступ ко всем функциям Центров уведомлений из серверной части Java/PHP/Python/Ruby с помощью интерфейса REST Центра уведомлений, как описано в разделе MSDN. Этот пакет SDK java предоставляет тонкий оболочку по этим интерфейсам REST в Java.
В настоящее время пакет SDK поддерживает следующее:
- CRUD в центрах уведомлений
- CRUD при регистрации
- Управление установкой
- Импорт и экспорт регистраций
- Обычные отправки
- Запланированные отправки
- Асинхронные операции с помощью NIO Java
- Поддерживаемые платформы: APNS (iOS), FCM (Android), WNS (приложения Магазина Windows), MPNS(Windows Phone), ADM (Amazon Kindle Fire), Baidu (Android без служб Google)
Примечание.
Служба push-уведомлений Майкрософт (MPNS) устарела и больше не поддерживается.
Использование пакета SDK
Компиляция и сборка
Использование Maven
Чтобы создать:
mvn package
Код
CRUD центра уведомлений
Создайте NamespaceManager:
NamespaceManager namespaceManager = new NamespaceManager("connection string")
Создание центра уведомлений:
NotificationHubDescription hub = new NotificationHubDescription("hubname");
hub.setWindowsCredential(new WindowsCredential("sid","key"));
hub = namespaceManager.createNotificationHub(hub);
ИЛИ
hub = new NotificationHub("connection string", "hubname");
Получить центр уведомлений:
hub = namespaceManager.getNotificationHub("hubname");
Центр уведомлений об обновлении:
hub.setMpnsCredential(new MpnsCredential("mpnscert", "mpnskey"));
hub = namespaceManager.updateNotificationHub(hub);
Удаление центра уведомлений:
namespaceManager.deleteNotificationHub("hubname");
Регистрация CRUD
Создайте клиент Центра уведомлений:
hub = new NotificationHub("connection string", "hubname");
Создание регистрации Windows:
WindowsRegistration reg = new WindowsRegistration(new URI(CHANNELURI));
reg.getTags().add("myTag");
reg.getTags().add("myOtherTag");
hub.createRegistration(reg);
Создание регистрации iOS:
AppleRegistration reg = new AppleRegistration(DEVICETOKEN);
reg.getTags().add("myTag");
reg.getTags().add("myOtherTag");
hub.createRegistration(reg);
Аналогичным образом можно создавать регистрации для Android (FCM), Windows Phone (MPNS) и Kindle Fire (ADM).
Создание регистраций шаблонов:
WindowsTemplateRegistration reg = new WindowsTemplateRegistration(new URI(CHANNELURI), WNSBODYTEMPLATE);
reg.getHeaders().put("X-WNS-Type", "wns/toast");
hub.createRegistration(reg);
Создание регистраций с помощью создания идентификатора регистрации и шаблона upsert:
Удаляет повторяющиеся данные из-за потери ответов при хранении идентификаторов регистрации на устройстве:
String id = hub.createRegistrationId();
WindowsRegistration reg = new WindowsRegistration(id, new URI(CHANNELURI));
hub.upsertRegistration(reg);
Обновление регистраций:
hub.updateRegistration(reg);
Удаление регистраций:
hub.deleteRegistration(regid);
Регистрация запросов:
- Получите индивидуальную регистрацию:
hub.getRegistration(regid);
- Получение всех регистраций в узле:
hub.getRegistrations();
- Получите регистрации с тегом:
hub.getRegistrationsByTag("myTag");
- Получение регистраций по каналу:
hub.getRegistrationsByChannel("devicetoken");
Все запросы коллекции поддерживают $top и маркеры продолжения.
Использование API установки
API установки — это альтернативный механизм управления регистрацией. Вместо поддержания нескольких регистраций, которые не являются тривиальными и могут быть легко выполнены неправильно или неэффективно, теперь можно использовать один объект установки.
Установка содержит все необходимое: push-канал (токен устройства), теги, шаблоны, вторичные плитки (для WNS и APNS). Вам больше не нужно вызывать службу для получения идентификатора— просто создать GUID или любой другой идентификатор, сохранить его на устройстве и отправить на серверную часть вместе с push-каналом (маркер устройства).
На серверной части необходимо выполнить только один вызов CreateOrUpdateInstallation; это полностью идемпотентно, поэтому при необходимости вы можете повторить попытку.
Например, Для Amazon Kindle Fire:
Installation installation = new Installation("installation-id", NotificationPlatform.Adm, "adm-push-channel");
hub.createOrUpdateInstallation(installation);
Если вы хотите обновить его, выполните следующие действия.
installation.addTag("foo");
installation.addTemplate("template1", new InstallationTemplate("{\"data\":{\"key1\":\"$(value1)\"}}","tag-for-template1"));
installation.addTemplate("template2", new InstallationTemplate("{\"data\":{\"key2\":\"$(value2)\"}}","tag-for-template2"));
hub.createOrUpdateInstallation(installation);
В расширенных сценариях используйте возможность частичного обновления, которая позволяет изменять только определенные свойства объекта установки. Частичное обновление — это подмножество операций исправления JSON, которые можно запустить в объекте установки.
PartialUpdateOperation addChannel = new PartialUpdateOperation(UpdateOperationType.Add, "/pushChannel", "adm-push-channel2");
PartialUpdateOperation addTag = new PartialUpdateOperation(UpdateOperationType.Add, "/tags", "bar");
PartialUpdateOperation replaceTemplate = new PartialUpdateOperation(UpdateOperationType.Replace, "/templates/template1", new InstallationTemplate("{\"data\":{\"key3\":\"$(value3)\"}}","tag-for-template1")).toJson());
hub.patchInstallation("installation-id", addChannel, addTag, replaceTemplate);
Удаление установки:
hub.deleteInstallation(installation.getInstallationId());
CreateOrUpdate, Patchи Delete в конечном итоге согласованы с Get. Запрошенная операция просто переходит в системную очередь во время вызова и выполняется в фоновом режиме. Get не предназначен для основного сценария выполнения, но только для отладки и устранения неполадок, он тесно регулируется службой.
Поток отправки для установок совпадает с процессом регистрации. Чтобы нацелить уведомление на конкретную установку, просто используйте тег "InstallationId:{desired-id}". В этом случае код:
Notification n = Notification.createWindowsNotification("WNS body");
hub.sendNotification(n, "InstallationId:{installation-id}");
Для одного из нескольких шаблонов:
Map<String, String> prop = new HashMap<String, String>();
prop.put("value3", "some value");
Notification n = Notification.createTemplateNotification(prop);
hub.sendNotification(n, "InstallationId:{installation-id} && tag-for-template1");
Планирование уведомлений (доступно для уровня "Стандартный")
То же самое, что и обычная отправка, но с одним дополнительным параметром — scheduledTime, который говорит, когда уведомление должно быть доставлено. Служба принимает любой момент времени в период от "сейчас плюс 5 минут" до "сейчас плюс 7 дней".
Планирование собственного уведомления Windows:
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1);
Notification n = Notification.createWindowsNotification("WNS body");
hub.scheduleNotification(n, c.getTime());
Импорт и экспорт (доступно для уровня STANDARD)
Возможно, потребуется выполнить массовую операцию с регистрациями. Обычно это происходит для интеграции с другой системой или для масштабного исправления с целью обновления тегов. Мы не рекомендуем использовать поток Get/Update, если участвуют тысячи регистраций. Возможности импорта и экспорта системы предназначены для покрытия сценария. Вы предоставите доступ к контейнеру BLOB в вашей учетной записи хранения в качестве источника входящих данных и местоположения для выходных данных.
Отправка задания экспорта:
NotificationHubJob job = new NotificationHubJob();
job.setJobType(NotificationHubJobType.ExportRegistrations);
job.setOutputContainerUri("container uri with SAS signature");
job = hub.submitNotificationHubJob(job);
Отправка задания импорта:
NotificationHubJob job = new NotificationHubJob();
job.setJobType(NotificationHubJobType.ImportCreateRegistrations);
job.setImportFileUri("input file uri with SAS signature");
job.setOutputContainerUri("container uri with SAS signature");
job = hub.submitNotificationHubJob(job);
Подождите, пока задание не будет выполнено:
while(true){
Thread.sleep(1000);
job = hub.getNotificationHubJob(job.getJobId());
if(job.getJobStatus() == NotificationHubJobStatus.Completed)
break;
}
Получить все задания:
List<NotificationHubJob> jobs = hub.getAllNotificationHubJobs();
URI с подписью SAS:
Этот URL-адрес — ЭТО URL-адрес файла blob-объекта или контейнера BLOB-объектов, а также набор параметров, таких как разрешения и время окончания срока действия, а также подпись всех этих элементов, сделанных с помощью ключа SAS учетной записи. Пакет SDK java для службы хранилища Azure предоставляет широкие возможности, включая создание этих URI. Как простая альтернатива изучите ImportExportE2E тестовый класс (из расположения GitHub), который имеет базовую и компактную реализацию алгоритма подписи.
Отправка уведомлений
Объект Notification — это просто текст с заголовками, некоторые служебные методы помогают создавать собственные и шаблонные объекты уведомлений.
- Магазин Windows и Windows Phone 8.1 (не Silverlight)
String toast = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">Hello from Java!</text></binding></visual></toast>";
Notification n = Notification.createWindowsNotification(toast);
hub.sendNotification(n);
- iOS
String alert = "{\"aps\":{\"alert\":\"Hello from Java!\"}}";
Notification n = Notification.createAppleNotification(alert);
hub.sendNotification(n);
- Android
String message = "{\"data\":{\"msg\":\"Hello from Java!\"}}";
Notification n = Notification.createFcmNotification(message);
hub.sendNotification(n);
- Windows Phone 8.0 и 8.1 Silverlight
String toast = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>Hello from Java!</wp:Text1>" +
"</wp:Toast> " +
"</wp:Notification>";
Notification n = Notification.createMpnsNotification(toast);
hub.sendNotification(n);
- Kindle Fire
String message = "{\"data\":{\"msg\":\"Hello from Java!\"}}";
Notification n = Notification.createAdmNotification(message);
hub.sendNotification(n);
- Отправить в теги
Set<String> tags = new HashSet<String>();
tags.add("boo");
tags.add("foo");
hub.sendNotification(n, tags);
- Отправка в выражение тега
hub.sendNotification(n, "foo && ! bar");
- Отправить уведомление по шаблону
Map<String, String> prop = new HashMap<String, String>();
prop.put("prop1", "v1");
prop.put("prop2", "v2");
Notification n = Notification.createTemplateNotification(prop);
hub.sendNotification(n);
Теперь при запуске кода Java на целевом устройстве должно появиться уведомление.
Дальнейшие шаги
В этом разделе показано, как создать простой клиент REST Java для центров уведомлений. Здесь вы сможете:
- Скачайте полный пакет SDK java, содержащий весь код пакета SDK.
- Поиграйте с примерами.