如果生存时间大于 1 天,Azure 通知中心注册到期日期不会更新
Posted
技术标签:
【中文标题】如果生存时间大于 1 天,Azure 通知中心注册到期日期不会更新【英文标题】:Azure notification hub registration expiration date does not update if time to live is greater than 1 day 【发布时间】:2022-01-10 01:41:51 【问题描述】:背景:
我正在开发一个带有 .net-core 后端的 react 本机应用程序,并且我正在使用 Azure 通知中心发送推送通知。我不希望在通知中心堆积无用的 ID,所以我想设置一个在通知中心的时间,并且每次用户登录时,我都会使用 createOrUpdateInstallationAsync 更新中心。当我将生存时间设置为一天时,我可以看到每次登录应用程序时注册的到期时间都会更新,但是如果我将生存时间设置为超过此时间,则到期日期将停止更新。
问题:
为什么过期日期不会更新以延长生存时间,以及实现我想要实现的目标的推荐方法是什么?当我试图找到这个问题的答案时,我所能看到的只是关于如何更新生存时间的指南。
【问题讨论】:
【参考方案1】:这是更新到期日期的一种解决方法
正如@ehuna 所建议的,
"确保您在控制台应用程序中安装了以下nuget packages
安装包 Microsoft.Azure.Management.NotificationHubs -Version 2.3.2-preview 安装包 Microsoft.Azure.Management.ResourceManager.Fluent -Version 1.38.0
写了下面的方法
private async Task SetNotificationHubRegistrationTimeToLive()
// Login to Azure using az login
// az account set -s <name or ID of subscription> to set the proper subscription
// Get credentials: "az ad sp create-for-rbac --sdk-auth"
// See https://docs.microsoft.com/en-us/cli/azure/get-started-with-azure-cli?view=azure-cli-latest and https://docs.microsoft.com/en-us/azure/cloud-shell/quickstart
var clientId = "your client id";
var clientSecret = "your client secret";
var tenantId = "your tenant id";
var credentials =
SdkContext
.AzureCredentialsFactory
.FromServicePrincipal(
clientId,
clientSecret,
tenantId,
AzureEnvironment.AzureGlobalCloud);
var client = new NotificationHubsManagementClient(credentials)
SubscriptionId = "yoursubscriptionid"
;
var resourceGroupName = "yourgroup";
var namespaceName = "yournamespace"; // this should NOT be the namespace full name beam-dev-notification-hub-namespace-free.servicebus.windows.net
var notificationHubName = "yournotificationhub";
var timeSpan = new TimeSpan(days: 90, hours: 0, minutes: 0, seconds: 0);
var registrationTtlTimeSpanString = timeSpan.ToString();
var notificationHub = await client.NotificationHubs.GetAsync(resourceGroupName, namespaceName, notificationHubName);
await client
.NotificationHubs
.CreateOrUpdateAsync(
resourceGroupName,
namespaceName,
notificationHubName,
new NotificationHubCreateOrUpdateParameters(notificationHub.Location)
RegistrationTtl = registrationTtlTimeSpanString
);
然后,您将在通知中心属性的https://portal.azure.com/ 中看到注册时间为 90 天。”
更多信息请参考以下链接:
所以线程:Azure Notification Hub sends pushes to registrations with expired time to live 所以线程:How to update Expiration Time in Azure Notification Hub registration? 博客:How to set expiration date for azure notification hub registration android【讨论】:
感谢您的回答。我可以改变生活的时间没有问题。我的问题是为什么调用 CreateOrUpdateInstallationAsync 时到期日期没有更新。我已将生存时间定为 90 天。但是现在当我更新安装时,有时到期日期会更新,有时不会。我想知道为什么当 CreateOrUpdateInstallationAsync 执行没有任何错误时它无法更新到期日期。 谢谢@J.Kennedy,您能否参考这个 MS DOC :docs.microsoft.com/en-us/azure/notification-hubs/… 我已阅读文档,但这并不能回答我的问题。如果确实如此,而我只是错过了,您能否提供更多关于我的问题在文档中的答案的信息?以上是关于如果生存时间大于 1 天,Azure 通知中心注册到期日期不会更新的主要内容,如果未能解决你的问题,请参考以下文章
如何向 Azure 通知中心注册的每个设备发送不同的推送通知?