Azure установка устройства концентратора уведомлений и отправка тестового сообщения успешны, но в приложение не отправляются сообщения - PullRequest
0 голосов
/ 09 июля 2020

Я создал Azure Notification Hub и добавил ключ сервера из Firebase в раздел «GCM / FCM» в центре уведомлений. После этого я использовал общий ключ доступа и имя центра уведомлений для создания установки (в соответствии с документацией Azure). Вот код, который я использовал:

[FunctionName("TestFunction")]
public static async Task<IActionResult> RunAsync(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
        HttpRequest req, ILogger log)
    {
        var deviceUpdate = new DeviceInstallation()
        {
            installationId = "<myInstallationid>",
            pushChannel = "<DeviceTokenGeneratedByFirebase>",
            platform = "fcm",
            tags = new string[] {"notificationhubtag1"},
        };
        
        var responseMessage = new HttpResponseMessage();

        try
        {
            responseMessage = await Put(deviceUpdate);
        }
        catch
        {
            log.LogInformation("exception occured");
        }
        
        return new OkObjectResult(responseMessage);
    }
    
    // Custom API
    public static async Task<HttpResponseMessage> Put(DeviceInstallation deviceUpdate)
    {
        NotificationHubClient hub = new NotificationHubClient(fullAccessConnString, hubName);
        
        Installation installation = new Installation();
        installation.InstallationId = deviceUpdate.installationId;
        installation.PushChannel = deviceUpdate.pushChannel;
        installation.Tags = deviceUpdate.tags;

        switch (deviceUpdate.platform)
        {
            case "mpns":
                installation.Platform = NotificationPlatform.Mpns;
                break;
            case "wns":
                installation.Platform = NotificationPlatform.Wns;
                break;
            case "apns":
                installation.Platform = NotificationPlatform.Apns;
                break;
            case "fcm":
                installation.Platform = NotificationPlatform.Fcm;
                break;
            default:
                throw new HttpResponseException(HttpStatusCode.BadRequest);
        }
        
        await hub.CreateOrUpdateInstallationAsync(installation);
        
        return new HttpResponseMessage(HttpStatusCode.OK);

    }

    public class DeviceInstallation
    {
        public string installationId { get; set; }
        public string platform { get; set; }
        public string pushChannel { get; set; }
        public string[] tags { get; set; }
        
    }

Когда я запускаю этот код, я получаю сообщение об успешном завершении. Сам портал Azure не показывает много информации о нет. информации об устройствах, зарегистрированных или активных, в центре уведомлений Azure. Однако я смог подтвердить, что установка существует, сделав запрос GET к API установки напрямую через этот вызов:

https://<myNotificationHubNameSpace>.servicebus.windows.net/<myHubName>/installations/<myInstallationId>/?api-version=2015-01

Этот вызов вернул мне 200 OK с установкой, которую я создал на предыдущем шаге . Ответ выглядел так:

{"installationId":"<myInstallationId>","pushChannel":"<DeviceTokenGeneratedByFireBase>","pushChannelExpired":false,"platform":"gcm","expirationTime":"9999-12-31T23:59:59.9999999Z","tags":["notificationhubtag1"]}

Итак, я зашел в Azure Notification Hub и отправил тестовое сообщение из вкладки «Test Send» и использовал тег «notificationhubtag1» в поле SendTo tags. . Я получил успешное сообщение, в котором говорилось, что «Уведомление было успешно отправлено в систему уведомлений Pu sh», а также получил регистрационный номер.

Однако я не вижу никаких уведомлений, отправляемых в приложение сам. Как я могу отладить дополнительную информацию об этом сообщении c, которое отправляется. Где это было отправлено?

Есть ли способ найти дополнительную информацию о отправленных сообщениях, установленных устройствах и c в самом концентраторе уведомлений? Я нашел старый пост о проверке журналов, в котором говорилось, что для получения дополнительной информации нужно перейти на стандартный уровень вместо бесплатного. Я переключился на стандартный уровень, но не вижу никакой разницы в способе отображения обзора или журналов активности между бесплатным или стандартным уровнем.

1 Ответ

0 голосов
/ 10 июля 2020

Центры уведомлений действуют как прокси. Таким образом, сообщение, которое вы видели на портале при выполнении тестовой отправки, означает, что он успешно передал уведомление в FCM для отправки и получил успешный ответ от FCM. Это также означает, что токен устройства был действителен.

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

Когда мы наблюдали подобные проблемы в прошлом это подразумевало, что в самой конфигурации приложения что-то не так. Вероятно, отсутствует какой-то лог c для обработки намерения уведомления.

Из приведенного выше фрагмента кода похоже, что вы создаете установку из некоторой части серверной части, а не из приложения. Я предполагаю, что это означает, что вы все еще работаете над интеграцией Android SDK для концентраторов уведомлений, поскольку обычно устройства регистрируются в концентраторе.

Мы документируем полные сквозные шаги здесь: https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-android-push-notification-google-fcm-get-started

Я бы в основном рекомендовал внимательно изучить различные изменения кода, необходимые на стороне Android. Обновления манифеста и изменения кода. Если у вас по-прежнему возникают проблемы с получением уведомлений, отправьте запрос в службу поддержки на портале, и мы сможем глубже понять, что происходит.

...