Azure 推送通知 API 以获取传出通知总数和已注册设备的数量

Azure push notification API to get total outgoing notifications and number of registered devices

如何检索外发通知总数和注册设备数? MS Azure 是否提供任何 API 来做到这一点?我想检索 JSON 或 XML 中的结果。 谢谢你的重播。 enter image description here

How can I retrieve number of total outgoing notifications and number of registered devices ? Does MS Azure provide any API to do that ?

我们可以使用 Azure monitor REST API 来做到这一点。

GET https://management.azure.com/{resourceUri}/providers/microsoft.insights/metrics?timespan={timespan}&interval={interval}&metric={metric}&aggregation={aggregation}&$top={$top}&$orderby={$orderby}&$filter={$filter}&resultType={resultType}&api-version=2017-05-01-preview

我们可以从这个 document 获得 Azure 监视器支持的指标。你的 resourceUri 是

var resourceUri = $"subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.NotificationHubs/Namespaces/{notificationamespace}/NotificationHubs/{notificationHubName}";

如果您想从 Supported metrics with Azure Monitor 中获取已注册的设备,我们可以知道。 公制=registration.all

如果你想获得总传出通知 metric = notificationhub.pushes


我们也可以使用 Azure SDK Microsoft.Azure.Management.Monitor.Fluent. The following is the demo code. How to get the tenatId, secretKey or application please refer to Create an Azure Active Directory application

var azureTenantId = "tenantId";
var azureSecretKey = "secret key";
var azureAppId = "Application Id";
var subscriptionId = "subscription Id";
var resourceGroup = "resource group";
var notificationamespace = "notification name space";
var notificationHubName = "notification hub ";
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(azureTenantId, azureAppId, azureSecretKey).Result;
MonitorClient monitorClient = new MonitorClient(serviceCreds) { SubscriptionId = subscriptionId };
var resourceUri = $"subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.NotificationHubs/Namespaces/{notificationamespace}/NotificationHubs/{notificationHubName}";
var metricNames = "name.value eq 'notificationhub.pushes'"; //if you want to get the registered devices please change to  registration.all
string timeGrain = " and timeGrain eq duration'PT24H'"; 
string startDate = " and startTime eq 2018-01-01T00:00:00.919Z"; 
string endDate = " and endTime eq 2018-01-04T19:00:00.919Z"; 
var odataFilterMetrics = new ODataQuery<MetricInner>(
            $"{metricNames}{timeGrain}{startDate}{endDate}");
var metrics = monitorClient.Metrics.ListWithHttpMessagesAsync(resourceUri, odataFilterMetrics).Result;

测试结果: