0

Мы используем концентратор уведомлений Azure для управления регистрации уведомлений. Каждый раз, когда пользователь запускает приложение, мы вызываем PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync, а затем RegisterNativeAsync of NotificationHub для регистрации uri канала, который сначала возвращается с некоторыми тегами, такими как «Username» и «InstallId» - это уникально для каждой установки приложения. Затем из исходного кода мы отправляем уведомления с использованием этих тегов.PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync duplicate channel

Но мы заметили проблему - когда пользователь жестко сбрасывает устройство, предыдущая регистрация канала остается активной в концентраторе уведомлений. В этом случае пользователь получает повторяющиеся уведомления своим тегом «Username». В этом случае «InstallId» не поможет, так как он меняется с новой установкой приложения.

Мы думали об управлении каналами на стороне сервера. Но это не решит проблему.

Возможно, у кого-то есть предложения по работе? Кроме того, мы не знаем, какую информацию использует PushNotificationChannelManager при создании нового или возвращающегося существующего канала? Использует ли он какую-либо информацию об устройстве?

ответ

1

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

private string GetDeviceUniqueID() 
    { 
     HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null); 
     IBuffer hardwareId = token.Id; 

     HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm("MD5"); 
     IBuffer hashed = hasher.HashData(hardwareId); 

     string hashedString = CryptographicBuffer.EncodeToHexString(hashed); 
     return hashedString; 
    } 
+0

Благодарим вас за ответ. Мы подумали об использовании «ASHWID» HardwareToken, как вы уже сказали, но мы заметили, что когда пользователь устанавливает инсайдерскую версию Windows 10, иногда также обновляется имя устройства. И мы боимся, что HardwareToken изменится в этом случае. Необходимо проверить это. – saniokazzz

+0

Проверьте https://msdn.microsoft.com/en-us/library/windows/apps/jj553431 и подумайте, что использование HardwareToken не является вариантом, так как нам нужно 100% -ное решение. – saniokazzz

+0

с использованием ASHWID в сочетании с идентификатором установки должен помочь вам создать правило фильтра, чтобы избежать дублирования регистрации в концентраторе уведомлений: Если пользователь установит приложение (новый идентификатор установки) на машине с известным ASHWID, вы не будете создавать новую регистрацию, если существует. , если пользователь открывает приложение с известным идентификатором установки, но новый ASHWID (укажите аппаратное изменение), проверьте, является ли изменение оборудования критичным (например, замена жесткого диска), чтобы решить, нужна ли вам новая регистрация или нет. – thang2410199