2014-06-27 14 views
7

Obserwuję numer This Post, aby współpracować z centrum powiadomień w języku błękitnym. Próbuję utworzyć api sieci, które rejestruje urządzenia w centrum powiadomień Azure. Kiedy wyślę prośbę o rejestrację urządzenia, jak pokazano w artykule, trafi on do centrum powiadomień Błękitnych.Lista urządzeń zarejestrowanych na platformie Azure

Poniżej znajduje się zrzut ekranu mojego lazurowego portalu. Co pokazuje, że był wniosek o rejestrację.

Ale gdy próbuję uzyskać szczegółowe informacje o zarejestrowanych urządzeń za pomocą następującego kodu jest zawsze 0.

var registrationsCount = await hub.GetAllRegistrationsAsync(Int32.MaxValue); 
return registrationsCount.Count().ToString(); 

Teraz mam kilka pytań:

1) Jak mogę odkrywać zarejestrowany szczegóły urządzenia?

2) Jak mogę wysłać powiadomienie testowe do urządzeń ios od tyłu. Poniżej znajduje się kod, którego używam do wysyłania powiadomień testowych.

var payload = string.Format(toastTemplate, message); 

hub.SendAppleNativeNotificationAsync(payload, "worldnews"); 

3) Jeśli korzystam z interfejsu API strony jako zaplecza, konieczne jest skonfigurowanie szczegółów aplikacji ios w centrum powiadomień błękitnych? tj. przesłać certyfikat i inne szczegóły na portalu Lazur?

enter image description here

Odpowiedz

17

Pierwszym problemem jest to, jak dzwonisz GetAllRegistrationsAsync. Ten parametr nie jest maksymalną liczbą żądanych rejestracji. Jest to indeks pierwszej rejestracji, którą chcesz. W większości scenariuszy, które byłyby 0, nie Int32.MaxValue

Patrz: https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.notificationhubs.notificationhubclient#Microsoft_Azure_NotificationHubs_NotificationHubClient_GetAllRegistrationsAsync_System_Int32_

public Task<CollectionQueryResult<RegistrationDescription>> 
    GetAllRegistrationsAsync(int top) 

Należy pamiętać również, że metoda ta zwraca maksymalnie 100 rejestracji. Jeśli chcesz więcej, musisz użyć ContinuationToken.

Oto kod używać do uzyskania rejestracji:

internal async Task<List<RegistrationDescription>> GetAllRegisteredDevicesAsync() 
{ 
    var hub = NotificationHubClient.CreateClientFromConnectionString(
     Settings.Default.AzureNotificationsMobileAppFullSharedAccessListenerConnection, 
     Settings.Default.AzureNotificationsMobileAppHubName, 
     Settings.Default.AzureNotificationsTestSendMode); 

    var allRegistrations = await hub.GetAllRegistrationsAsync(0); 
    var continuationToken = allRegistrations.ContinuationToken; 
    var registrationDescriptionsList = new List<RegistrationDescription>(allRegistrations); 
    while (!string.IsNullOrWhiteSpace(continuationToken)) 
    { 
     var otherRegistrations = await hub.GetAllRegistrationsAsync(continuationToken, 0); 
     registrationDescriptionsList.AddRange(otherRegistrations); 
     continuationToken = otherRegistrations.ContinuationToken; 
    } 

    return registrationDescriptionsList; 
} 

Należy zauważyć, że metoda ta powinna tylko być używany, jeśli masz tylko kilkaset, może kilka tysięcy rejestracje. Jeśli masz dziesiątki, setki tysięcy lub miliony rejestracji, nie powinieneś używać tej metody i znaleźć skuteczniejszej metody, aby znaleźć to, czego potrzebujesz.

+0

Dzięki za wyjaśnienie.To było naprawdę heplful :) Jest jeszcze jedno pytanie, jeśli zauważyłeś drugi punkt. Chcę wysłać powiadomienie do urządzeń Apple. Istnieje możliwość nieautoryzowanego powiadamiania o telefonie z systemem Windows. czy istnieje sposób wysyłania takich samych powiadomień dla urządzeń ios bez przesyłania appkey lub certyfikatu? –

+0

StackOverflow działa lepiej, jeśli nie łączysz pytań. Krótko mówiąc, nie wiem, jak wysłać powiadomienia za pośrednictwem usługi powiadomień Apple Push bez konieczności przesyłania wymaganego certyfikatu na platformę Azure. W tym artykule pokazano, co należy zrobić: http://azure.microsoft.com/en-us/documentation/articles/notification-hubs-ios-get-started/ –

+0

, proszę spojrzeć na to: http://azure.microsoft .com/en-us/documentation/articles/notification-hubs-ios-aspnet-register-user-push-notifications /. Czy nadal konieczne jest zarejestrowanie aplikacji przy użyciu certyfikatu i wszystkich? lub można to zrobić prosto za pomocą interfejsu webowego back-end? –

5

Jest jeszcze jeden sposób, jeśli ktoś chce odzyskać szczegóły zarejestrowanych urządzeń tylko dla wiedzy, a nie dla celów aplikacji. Service Bus Explorer jest dostępny. Możesz pobrać projekt i wyodrębnić go i uruchomić za pomocą wizualnego studio.

Będziesz mógł łączyć się z usługami lazuru, podając ciąg połączenia i klucz właściciela. Użyłem tego, aby zobaczyć zarejestrowane urządzenia i wysłać powiadomienia o testach itp. To świetne pomocne narzędzie.

Mam nadzieję, że to pomoże.

0

krótki kod:

private async Task<List<RegistrationDescription>> GetAllRegisteredDevicesAsync() 
    { 
     List<RegistrationDescription> allRegistrations = new List<RegistrationDescription>(); 

     var hub = NotificationHubClient.CreateClientFromConnectionString(
      Settings.Default.AzureNotificationsMobileAppFullSharedAccessListenerConnection, 
      Settings.Default.AzureNotificationsMobileAppHubName, 
      Settings.Default.AzureNotificationsTestSendMode); 

     CollectionQueryResult<RegistrationDescription> page = null; 
     do 
     { 
      page = await hub.GetAllRegistrationsAsync(page?.ContinuationToken, 0); 
      allRegistrations.AddRange(page); 
     } 
     while (!string.IsNullOrWhiteSpace(page.ContinuationToken)); 

     return allRegistrations; 
    } 
+1

Czy możesz rozwinąć swoją odpowiedź? Publikowanie fragmentu kodu bez żadnego tekstu często nie jest zbyt pomocne. –

Powiązane problemy