Центр уведомлений Azure - «Токен, полученный от поставщика токенов, неверен» - PullRequest
0 голосов
/ 03 января 2019

Используя API REST для уведомлений и JavaScript, мы подписываем наше Прогрессивное веб-приложение через FCM, а затем вызываем конечную точку registrations для регистрации на нашем ANH

. Регистрация завершена, и мы можем увидеть регистрацию нанаш концентратор с правильной платформой и заполненным идентификатором PNS

Когда мы пытаемся отправить тестовое сообщение на все зарегистрированные устройства, мы получаем следующую ошибку в ANH

токен, полученный изпровайдер токенов неправильный

Мы попытались отправить весь объект endpoint, возвращенный Firebase, только subscriptionId и различные другие комбинации

Означает ли сообщение об ошибке, что мыподписались с использованием неправильной пары ключей или формат токена неверный?Нигде нет примера того, каким должен быть формат GcmRegistrationId при регистрации в конечной точке регистрации

1 Ответ

0 голосов
/ 04 января 2019

Вы можете использовать следующий подход для регистрации своих устройств:

В случае GCM придерживайтесь этого подхода:

используйте пакет Nuget для центров уведомлений.

ДляDeviceRegistration.cs

 public class DeviceRegistration
    {
        public string Platform { get; set; } 
        public string Handle { get; set; }
        public string[] Tags { get; set; }
    }

Для NotificationClient.cs

 using Microsoft.Azure.NotificationHubs; // Namespace to be used

// Use below method to get registrationID

 public async Task<string> GetRegistrationID(NotificationHubClient Hub, string handle = null)
        {
            string newRegistrationId = null;

            // make sure there are no existing registrations for this push handle (used for iOS and Android)
            if (handle != null)
            {
                var registrations = await Hub.GetRegistrationsByChannelAsync(handle, 100);
                foreach (RegistrationDescription registration in registrations)
                {
                    if (newRegistrationId == null)
                    {
                        newRegistrationId = registration.RegistrationId;
                    }
                    else
                    {
                        await Hub.DeleteRegistrationAsync(registration);
                    }
                }
            }

            if (newRegistrationId == null)
                newRegistrationId = await Hub.CreateRegistrationIdAsync();

            return newRegistrationId;
        }

// Use below method to upsert registration to azure

 public async Task UpsertRegistration(string registrationid, DeviceRegistration deviceUpdate, NotificationHubClient Hub)
            {
    string[] tags = { "abc","def" }; // These are used to send notifications
     DeviceRegistration deviceRegistration = new DeviceRegistration
                    {
                        Handle = newDeviceToken, // Device token given by Firebase
                        Platform = "gcm", // Specify gcm for android and "apns" for ios  
                        Tags = tags
                    };

                RegistrationDescription registration
                         = new GcmRegistrationDescription(deviceRegistration.Handle);



                registration.RegistrationId = registrationid;

                // add check if user is allowed to add these tags
                registration.Tags = new HashSet<string>();
                foreach (string tag in deviceUpdate.Tags)
                {
                    registration.Tags.Add(tag);
                }

               await Hub.CreateOrUpdateRegistrationAsync(registration);           
            }
...