Центр уведомлений Azure - предотвращают ли установки дублирование уведомлений? - PullRequest
0 голосов
/ 02 апреля 2019

В статье , описывающей управление регистрацией, говорится, что:

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

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

Что это значит?Я предполагаю, что это не означает, что установки имеют «CreateOrUpdate» в отличие от регистраций, поскольку там также существует аналогичный метод - «CreateOrUpdateRegistrationAsync».

Предположим, что я создал две установки с разными идентификаторами установки, но одинаковымиДескриптор PNS (свойство pushChannel) и идентичный тег 'foo' присутствуют в обеих установках.Я собираюсь отправить уведомление с помощью метода SendTemplateNotificationAsync с помощью тега 'foo', чтобы выбрать цель моего уведомления.

Это будет соответствовать обеим моим установкам, потому что они обе содержат тег 'fooи оба имеют одинаковую ручку PNS.Будет ли устройство получать два уведомления или Azure будет препятствовать доставке дубликатов в этом случае?

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

// make sure there are no existing registrations for this push handle (used for iOS and Android)    
    string newRegistrationId = null;
    var registrations = await hub.GetRegistrationsByChannelAsync(pushChannel.Uri, 100);

, но они не проверяют это в примерах установки, что снова говорит о том, что Azure предотвращает доставку дублированных уведомлений.

1 Ответ

0 голосов
/ 10 апреля 2019

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

Здесь installation - это термин, используемый для описания расширенной регистрации (в Центре уведомлений Azure), чтобы связать PNS устройства с тегом (s) и / или шаблон (ы).«Идемпотентность» здесь используется в отношении действия такого installation.Это означает, что вы можете просто вызывать один и тот же код для этого типа регистрации каждый раз, когда ваше приложение запускается или выводится на передний план, не беспокоясь об обработке изменений в PNS или предыдущих состояниях регистрации в Центре уведомлений.Это хорошо, потому что классическая модель registration может привести к дублированию регистрации для того же устройства и пользователя в центре уведомлений.Installation модель не делает этого.

Q. Что произойдет, если у вас есть один PNS, назначенный на несколько регистраций с одним и тем же тегом в центре уведомлений, и вы пытаетесь отправить уведомлениенацеливаясь на тег? A. Центр уведомлений Azure имеет логику устранения дубликатов, которая предотвращает выход дубликатов уведомлений.

Q. Можно ли принудительно использовать несколько уведомлений (для одного тега)В любом случае, если у вас есть несколько приложений, но один центр уведомлений? A. Вы можете, если сможете получить несколько токенов устройства.Однако в случае iOS, поскольку APNS одновременно выдает только один действительный токен устройства, это будет невозможно.Кроме того, приложения для iOS имеют свой собственный идентификатор пакета и, следовательно, свой собственный push-сертификат.А концентраторы уведомлений не поддерживают несколько сертификатов.Но в случае Android вы можете принудительно установить его, если используете модель registration и используете старые регистрационные идентификаторы GCM, так как они часто обновляются и не истекают так просто.

Надеюсь, это поможет!Ура!

...