2014-06-27 17 views
7

Tôi đang theo dõi This Post để làm việc với trung tâm thông báo của Azure. Những gì tôi đang cố gắng làm là tạo api web đăng ký các thiết bị với trung tâm thông báo Azure. Khi tôi gửi yêu cầu đăng ký thiết bị như được hiển thị trong bài viết, nó sẽ chạm vào trung tâm thông báo của Azure.Danh sách thiết bị đã đăng ký của Trung tâm thông báo Azure

Dưới đây là ảnh chụp màn hình cổng thông tin của tôi. Trong đó cho thấy có một yêu cầu đăng ký.

Nhưng khi tôi cố gắng để có được các chi tiết của thiết bị đã đăng ký sử dụng đoạn mã sau nó luôn luôn là 0.

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

Bây giờ tôi có vài câu hỏi:

1) làm thế nào tôi có thể khám phá các đăng ký chi tiết thiết bị?

2) Làm cách nào tôi có thể gửi thông báo thử nghiệm tới thiết bị iOS từ đầu sau. Dưới đây là mã mà tôi đang sử dụng để gửi thông báo kiểm tra.

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

hub.SendAppleNativeNotificationAsync(payload, "worldnews"); 

3) Nếu tôi đang sử dụng api web làm mặt sau thì cần phải định cấu hình chi tiết ứng dụng ios trong trung tâm thông báo không? tức là tải lên chứng chỉ và các chi tiết khác trên cổng thông tin xanh?

enter image description here

Trả lời

17

vấn đề đầu tiên của bạn là như thế nào bạn đang gọi GetAllRegistrationsAsync. Tham số không phải là số lượng đăng ký tối đa bạn muốn quay lại. Đó là chỉ mục của lần đăng ký đầu tiên bạn muốn. Trong hầu hết các tình huống, đó sẽ là 0, không Int32.MaxValue

Xem: 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) 

Gấu trong tâm trí, cũng có thể, rằng phương pháp này trả về tối đa 100 đăng ký. Nếu bạn muốn nhiều hơn, bạn sẽ cần sử dụng ContinuationToken.

Dưới đây là đoạn code tôi sử dụng để có được đăng ký:

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; 
} 

Lưu ý rằng phương pháp này nên chỉ được sử dụng nếu bạn chỉ có một vài trăm, có lẽ một vài ngàn đăng ký. Nếu bạn có hàng chục, hàng trăm nghìn hoặc hàng triệu đăng ký, bạn không nên sử dụng phương pháp này, và tìm một phương pháp hiệu quả hơn để tìm thấy những gì bạn cần.

+0

Cám ơn lời giải thích.Đó là thực sự heplful :) Có thêm một câu hỏi nếu bạn đã nhận thấy điểm thứ 2. Tôi muốn gửi thông báo tới thiết bị của Apple. Có một cơ sở trên các thông báo trái phép cho các cửa sổ điện thoại. có cách nào mà tôi có thể gửi các thông báo tương tự cho các thiết bị ios mà không cần gửi appkey hoặc chứng chỉ? –

+0

StackOverflow hoạt động tốt hơn nếu bạn không kết hợp các câu hỏi. Nhưng một thời gian ngắn, tôi không biết bất kỳ cách nào để gửi thông báo thông qua Dịch vụ thông báo đẩy của Apple mà không cần tải lên chứng chỉ bạn cần vào Azure. Bài viết này cho thấy cần phải làm gì: http://azure.microsoft.com/en-us/documentation/articles/notification-hubs-ios-get-started/ –

+0

hãy xem điều này: http://azure.microsoft .com/vi-us/tài liệu/bài viết/thông báo-trung tâm-ios-aspnet-đăng ký-người dùng-đẩy-thông báo /. Vẫn cần đăng ký ứng dụng bằng chứng chỉ và tất cả? hoặc nó có thể thẳng được thực hiện bằng cách sử dụng api web back end? –

5

Có một cách nữa nếu một số người chỉ muốn truy xuất chi tiết các thiết bị đã đăng ký chỉ vì kiến ​​thức không dành cho mục đích ứng dụng. Service Bus Explorer khả dụng. Bạn có thể tải về dự án và giải nén nó và chạy bằng cách sử dụng studio trực quan.

Bạn sẽ có thể kết nối với các dịch vụ bằng cách cung cấp chuỗi kết nối và khóa chủ sở hữu. Tôi sử dụng điều này để xem các thiết bị đã đăng ký và gửi thông báo kiểm tra, v.v. Đó là một công cụ hữu ích tuyệt vời.

Hy vọng điều này có thể giúp ích một số.

0

Mã ngắn:

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

Bạn có thể xây dựng câu trả lời của mình không? Đăng một đoạn mã mà không có bất kỳ văn bản nào thường không hữu ích. –

Các vấn đề liên quan