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
W programie Xcode utwórz nowy projekt Xcode i wybierz szablon Karta systemu iOS i aplikacja .
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.
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.
Na karcie Podpisywanie i możliwości wybierz pozycję + Możliwości. Kliknij dwukrotnie pozycję Powiadomienia wypychane, aby je włączyć.
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).
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 iHUB_NAME
jako nazwę usługi Azure Notification Hub.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>
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
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
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
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.
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ń:
- Azure Mobile Apps: aby zapoznać się z przykładem wysyłania powiadomień z zaplecza usługi Mobile Apps zintegrowanego z usługą Notification Hubs, zobacz Dodawanie powiadomień wypychanych do aplikacji systemu iOS.
- ASP.NET: wysyłanie powiadomień wypychanych do użytkowników przy użyciu usługi Notification Hubs.
- Zestaw SDK Java usługi Azure Notification Hubs: zobacz Jak używać usługi Notification Hubs za pomocą języka Java, aby zapoznać się ze sposobem wysyłania powiadomień za pomocą języka Java. To rozwiązanie przetestowano w programie Eclipse pod kątem tworzenia aplikacji dla systemu Android.
- PHP: How to use Notification Hubs from PHP (Używanie usługi Notification Hubs z poziomu języka PHP).
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.
Uruchom aplikację i upewnij się, że rejestracja zakończyła się powodzeniem, a następnie naciśnij przycisk OK.
Następnie wyślij testowe powiadomienie wypychane z witryny Azure Portal zgodnie z opisem w poprzedniej sekcji.
Powiadomienie wypychane jest wysyłane do wszystkich zarejestrowanych urządzeń w celu odbierania powiadomień z danego centrum powiadomień.
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:
- Omówienie usługi Azure Notification Hubs
- Interfejsy API REST usługi Notification Hubs
- Zestaw SDK usługi Notification Hubs dla operacji zaplecza
- Zestaw SDK usługi Notification Hubs w usłudze GitHub
- Rejestrowanie przy użyciu zaplecza aplikacji
- Zarządzanie rejestracją
- Praca z tagami
- Praca z szablonami niestandardowymi
- Kontrola dostępu do usługi Service Bus z sygnaturami dostępu współdzielonego
- Programowe generowanie tokenów SAS
- Zabezpieczenia firmy Apple: typowe kryptograficzne
- czas system UNIX epoki
- HMAC