Udostępnij za pośrednictwem


Samouczek: początkowa konfiguracja odbierania powiadomień wypychanych z usługi Azure Notification Hubs

W tym samouczku pokazano, jak używać usługi Azure Notification Hubs do wysyłania powiadomień wypychanych do aplikacji systemu iOS przy użyciu zestawu SDK usługi Azure Notification Hubs dla firmy Apple.

Ten samouczek obejmuje następujące kroki:

  • Utwórz przykładową aplikację dla systemu iOS.
  • Połączenie aplikacji systemu iOS do usługi Azure Notification Hubs.
  • Wysyłanie testowych powiadomień wypychanych.
  • Sprawdź, czy aplikacja odbiera powiadomienia.

Pełny kod tego samouczka można pobrać z witryny GitHub.

Wymagania wstępne

Do ukończenia tego samouczka potrzebne są następujące wymagania wstępne:

  • Komputer Mac z uruchomionym programem Xcode wraz z prawidłowym certyfikatem dewelopera zainstalowanym w pęku kluczy.
  • System i Telefon lub iPad z systemem iOS w wersji 10 lub nowszej.
  • Urządzenie fizyczne zarejestrowane w witrynie Apple Portal i skojarzone z certyfikatem.

Przed kontynuowaniem zapoznaj się z poprzednim samouczkiem dotyczącym rozpoczynania pracy z usługą Azure Notification Hubs dla aplikacji systemu iOS, aby skonfigurować i skonfigurować poświadczenia wypychane w centrum powiadomień. Nawet jeśli nie masz wcześniejszego doświadczenia w tworzeniu aplikacji dla systemu iOS, musisz mieć możliwość wykonania tych kroków.

Uwaga

Ze względu na wymagania dotyczące konfiguracji powiadomień wypychanych należy wdrożyć i przetestować powiadomienia wypychane na fizycznym urządzeniu z systemem iOS (i Telefon lub iPad), zamiast emulatora systemu iOS.

Łączenie aplikacji dla systemu iOS z usługą Notification Hubs

  1. W programie Xcode utwórz nowy projekt Xcode i wybierz szablon Karta systemu iOS i aplikacja .

    Diagram that shows Xcode setup for new app

  2. Podczas określania opcji dla nowego projektu upewnij się, że użyto tych samych wartości Product Name (Nazwa produktu) i Organization Identifier (Identyfikator organizacji), które zostały użyte podczas ustawiania identyfikatora pakietu w portalu dla deweloperów firmy Apple. Pakiet zidentyfikowany w nowym oknie projektu powinien być wypełniony tak, aby był zgodny z pakietem zidentyfikowanym w portalu dla deweloperów firmy Apple. Wielkość liter jest tu istotna.

  3. W obszarze Nawigator projektu wybierz nazwę projektu w obszarze Cele, a następnie wybierz kartę Podpisywanie i możliwości . Upewnij się, że wybrano odpowiedni zespół dla konta dewelopera firmy Apple. Środowisko Xcode powinno automatycznie ściągnąć utworzony wcześniej profil aprowizowania na podstawie identyfikatora pakietu.

    Jeśli nowy profil aprowizowania utworzony w programie Xcode nie jest widoczny, odśwież profile dla Twojej tożsamości podpisywania. Kliknij pozycję Xcode na pasku menu, kliknij pozycję Preferences (Preferencje), kliknij kartę Account (Konto), kliknij przycisk View Details (Pokaż szczegóły), kliknij tożsamość podpisywania, a następnie kliknij przycisk odświeżania w prawym dolnym rogu.

    View details

  4. Na karcie Podpisywanie i możliwości wybierz pozycję + Możliwości. Kliknij dwukrotnie pozycję Powiadomienia wypychane, aby je włączyć.

    Capability

  5. Dodaj moduły zestawu SDK usługi Azure Notification Hubs.

    Zestaw SDK usługi Azure Notification Hubs można zintegrować z aplikacją przy użyciu narzędzia Cocoapods lub ręcznie dodając pliki binarne do projektu.

    • Integracja za pośrednictwem narzędzia Cocoapods: Dodaj następujące zależności do pliku podfile, aby uwzględnić zestaw SDK usługi Azure Notification Hubs w aplikacji:

      pod 'AzureNotificationHubs-iOS'
      
      • Uruchom instalację zasobnika, aby zainstalować nowo zdefiniowany zasobnik i otworzyć plik xcworkspace.

        Jeśli podczas uruchamiania instalacji zasobnika zostanie wyświetlony błąd, taki jak Nie można znaleźć specyfikacji dla usługi AzureNotificationHubs-iOS , uruchom polecenie pod repo update , aby pobrać najnowsze zasobniki z repozytorium Cocoapods, a następnie uruchom instalację zasobnika.

    • Integracja za pośrednictwem usługi Carthage: dodaj następujące zależności do pliku Cartfile, aby uwzględnić zestaw SDK usługi Azure Notification Hubs w aplikacji:

      github "Azure/azure-notificationhubs-ios"
      
      • Następnie zaktualizuj zależności kompilacji:
      $ carthage update
      

      Aby uzyskać więcej informacji na temat korzystania z Carthage, zobacz repozytorium GitHub Carthage.

    • Integracja przez skopiowanie plików binarnych do projektu:

      Możesz zintegrować, kopiując pliki binarne do projektu w następujący sposób:

      • Pobierz strukturę zestawu SDK usługi Azure Notification Hubs udostępnioną jako plik zip i rozpakuj ją.

      • W programie Xcode kliknij prawym przyciskiem myszy projekt i kliknij opcję Add Files to (Dodaj pliki do), aby dodać folder WindowsAzureMessaging.framework do projektu Xcode. Wybierz pozycję Options (Opcje), upewnij się, że pozycja Copy items if needed (Skopiuj elementy w razie potrzeby) jest zaznaczona, a następnie kliknij pozycję Add (Dodaj).

        Add framework

  6. Dodaj lub edytuj plik o nazwie Dev Ustawienia.plist, który zawiera dwie właściwości, CONNECTION_STRING dla parametry połączenia do usługi Azure Notification Hub i HUB_NAME jako nazwę usługi Azure Notification Hub.

  7. Dodaj informacje dotyczące nawiązywania połączenia z usługą Azure Notification Hubs w odpowiedniej <string></string> sekcji. Zastąp symbole --HUB-NAME-- zastępcze literału ciągu i --CONNECTION-STRING-- nazwą centrum oraz wartością DefaultListenSharedAccessSignature, jak wcześniej uzyskano z portalu:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. W tym samym pliku AppDelegate.m zastąp cały kod po didFinishLaunchingWithOptions następującym kodem:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    Ten kod łączy się z centrum powiadomień przy użyciu informacji o połączeniu określonych w pliku Dev Ustawienia.plist. Następnie przekazuje token urządzenia do centrum powiadomień, aby centrum mogło wysyłać powiadomienia.

Tworzenie pliku nagłówka NotificationDetailViewController

  1. Podobnie jak w poprzednich instrukcjach, dodaj kolejny plik nagłówka o nazwie SetupViewController.h. Zastąp zawartość nowego pliku nagłówka następującym kodem:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Dodaj plik implementacji SetupViewController.m. Zastąp zawartość pliku następującym kodem, który implementuje metody UIViewController:

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. Skompiluj i uruchom aplikację na urządzeniu, aby upewnić się, że nie występują żadne błędy.

Wysyłanie testowych powiadomień wypychanych

Odbieranie powiadomień w aplikacji możesz przetestować za pomocą opcji Wysyłanie testowe w witrynie Azure Portal. Powoduje to wysłanie testowego powiadomienia push na urządzenie.

Test send

Powiadomienia wypychane są zwykle wysyłane za pośrednictwem usługi wewnętrznej bazy danych, takiej jak Mobile Apps czy ASP.NET, przy użyciu zgodnej biblioteki. Jeśli biblioteka nie jest dostępna dla zaplecza, możesz również użyć interfejsu API REST bezpośrednio do wysyłania komunikatów powiadomień.

Oto lista innych samouczków, które warto przejrzeć w celu wysyłania powiadomień:

Sprawdzanie, czy aplikacja odbiera powiadomienia push

Aby przetestować powiadomienia wypychane w systemie iOS, należy wdrożyć aplikację na fizycznym urządzeniu z systemem iOS. Nie można wysyłać powiadomień wypychanych firmy Apple przy użyciu symulatora systemu iOS.

  1. Uruchom aplikację i upewnij się, że rejestracja zakończyła się powodzeniem, a następnie naciśnij przycisk OK.

    Register

  2. Następnie wyślij testowe powiadomienie wypychane z witryny Azure Portal zgodnie z opisem w poprzedniej sekcji.

  3. Powiadomienie wypychane jest wysyłane do wszystkich zarejestrowanych urządzeń w celu odbierania powiadomień z danego centrum powiadomień.

    Send test

Następne kroki

W tym prostym przykładzie powiadomienia wypychane są emitowane na wszystkich zarejestrowanych urządzeniach z systemem iOS. Aby dowiedzieć się, jak wysyłać powiadomienia wypychane do określonych urządzeń z systemem iOS, przejdź do następującego samouczka:

Samouczek: wysyłanie powiadomień wypychanych do określonych urządzeń

Aby uzyskać więcej informacji, zobacz następujące artykuły: