Отправка уведомлений на устройства Android в определенном радиусе с помощью Центра уведомлений Azure

Я создаю прототип, используя Функции Azure и Центр уведомлений.

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

У меня есть уведомления, работающие с Firebase и Android, но как я могу настроить таргетинг на случайную группу устройств на основе результата запроса?

#r "Microsoft.Azure.NotificationHubs"
#load "location.csx"


using System;
using System.Net;
using Microsoft.Azure.NotificationHubs;


public static async Task Run(LocationInfo message, IAsyncCollector<Notification> notification, TraceWriter log)
{
    log.Info($"Sending GCM notification of a new user");
    string gcmNotificationPayload = "{\"data\": {\"message\": \"test message")\" }}";
    log.Info($"{gcmNotificationPayload}");
    await notification.AddAsync(new GcmNotification(gcmNotificationPayload));
}

person Chirdeep Tomar    schedule 31.03.2017    source источник


Ответы (1)


Ваше решение будет зависеть от того, чего вы пытаетесь достичь. Вы не предоставили много подробностей о том, на какие сценарии вы нацеливаетесь.

Но в целом, не зная, что конкретно вы ищете, вам могут быть полезны следующие примеры:

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

person Nikita R.    schedule 31.03.2017
comment
К сожалению, я не мог более четко сформулировать свою проблему. Я рассмотрел оба этих подхода. Я уверен, что предопределенные теги не являются для меня решением, поскольку устройства, на которые я хочу настроить таргетинг, будут меняться в зависимости от данных из базы данных. По сути, то, что я ищу, - это получить группу устройств из базы данных на основе пространственного запроса и уведомить об этих устройствах, это могут быть ios или android. - person Chirdeep Tomar; 31.03.2017
comment
Если у вас уже есть база данных и вы можете выполнять пространственные запросы, сохраните регистрационный идентификатор NH (или тег id) в качестве столбца в пользовательской таблице. Когда запрос возвращает список пользователей, которых необходимо уведомить, используйте registrationId или тег для отправки на эти устройства. Это ничем не отличается от обычного толчка. В противном случае я не уверен, спрашиваете ли вы, как использовать сам NH или какую технологию БД выбрать? - person Nikita R.; 31.03.2017
comment
Я использую DocumentDB, который может выполнять пространственные запросы. И это именно то, что я хотел сделать, но я не думал, что тег является подходящим подходом, поскольку у меня могут быть миллионы устройств. Как определить теги в привязке вывода концентратора уведомлений функций Azure. Я подписываюсь на docs.microsoft.com/en -us / лазурный / лазурные-функции / - person Chirdeep Tomar; 31.03.2017
comment
Привязать к tagExpression. Ваш tagExpression будет единственным тегом, который будет идентификатором пользователя для отправки push-уведомления. Когда вы выполняете регистрацию устройства, укажите идентификатор пользователя в качестве тега и сохраните идентификатор в базе данных. Когда вы вернете запрос, он станет вашим tagExpression. NH был разработан, чтобы справляться с миллионами толчков, такой масштаб не проблема. - person Nikita R.; 31.03.2017
comment
В функции azure есть способ определить тег в файле JSON, но не динамически с помощью кода. - person Chirdeep Tomar; 31.03.2017
comment
Есть шаблон пример с использованием раздела JSON в руководство, которое вы упомянули. Это то, что вы ищете? - person Nikita R.; 31.03.2017
comment
Я ищу параметр привязки времени выполнения stackoverflow.com/questions/39855409/, но центр уведомлений не поддерживает его. Атрибут NotificationAttribute недоступен в Microsoft.Azure.WebJobs - person Chirdeep Tomar; 01.04.2017