我们使用Azure Notifications Hub来管理通知注册。每次用户启动应用程序时,我们调用PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync,然后调用NotificationHub的RegisterNativeAsync来注册通道uri,首先返回一些标签,如" Username"和" InstallId" - 每个应用程序安装都是唯一的。然后从后端我们使用这些标签发送通知。
但是我们注意到了问题 - 当用户硬重置设备时,之前的频道注册在通知中心保持活动状态。在这种情况下,用户通过他的"用户名"标签。 " InstallId"在这种情况下没有帮助,因为它随着新的应用程序安装而改变。
我们考虑过管理服务器端的频道。但这不会解决问题。
也许有人有一些建议的解决方法? 另外,我们不知道PushNotificationChannelManager在创建新频道或返回现有频道时使用了哪些信息?它是否使用某些设备信息?
答案 0 :(得分:1)
我认为您可以向后端发送设备唯一ID以及安装ID。硬复位后设备ID不会改变。
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;
}