教學課程:從 Azure 通知中樞接收推播通知的初始設定
本教學課程說明如何使用 Azure 通知中樞將推播通知傳送至 iOS 應用程式,並使用適用於 Apple 的 Azure 通知中樞 SDK。
本教學課程涵蓋下列步驟:
- 建立範例 iOS 應用程式。
- 連線 iOS 應用程式至 Azure 通知中樞。
- 傳送測試推播通知。
- 確認您的應用程式會收到通知。
您可以從 GitHub 下載本教學課程的完整程式碼。
必要條件
若要完成本教學課程,您需要下列必要條件:
- 執行 Xcode 的 Mac,以及安裝到 Keychain 的有效開發人員憑證。
- 執行 iOS 10 版或更新版本的 i 電話 或 iPad。
- 您在Apple入口網站中註冊的實體裝置,並與憑證相關聯。
在繼續進行之前,請務必完成上一 個開始使用適用於iOS 應用程式的 Azure 通知中樞的教學課程,在通知中樞中設定和設定推播認證。 即使您在 iOS 開發方面沒有先前的經驗,您也應該能夠遵循這些步驟。
注意
由於推播通知的設定需求,您必須在實體 iOS 裝置 (i 電話 或 iPad) 上部署及測試推播通知,而不是 iOS 模擬器。
將 iOS 應用程式 連線 至通知中樞
在 Xcode 中,建立新的 Xcode 專案,然後選取 iOS 索引標籤和 應用程式 範本。
設定新項目的選項時,請務必使用您在Apple Developer入口網站中設定套件組合標識碼時所使用的相同 產品名稱 和組織 標識碼 。 在新專案視窗中識別的套件組合應該填入,以符合 Apple Developer 入口網站中識別的套件組合。 這個值區分大小寫。
在 [項目導覽器] 底下,選取 [目標] 底下的專案名稱,然後選取 [簽署與功能] 索引標籤。請確定您為 Apple 開發人員帳戶選取適當的小組。 XCode 應該會自動根據套件組合識別元提取您先前建立的布建配置檔。
如果您沒有看到您在 Xcode 中建立的新佈建設定檔,請嘗試重新整理簽署身分識別的設定檔。 單擊 功能表欄上的 [Xcode ]、[ 喜好設定]、 [帳戶 ] 索引卷標、按兩下 [檢視詳細 數據] 按鈕、單擊您的簽署身分識別,然後按下右下角的 [重新整理] 按鈕。
在 [ 簽署與功能] 索引標籤中,選取 [+ 功能]。 按兩下 [ 推播通知 ] 加以啟用。
新增 Azure 通知中樞 SDK 模組。
您可以使用 Cocoapods 或手動將二進位檔新增至專案,將 Azure 通知中樞 SDK 整合到您的應用程式中。
透過 Cocoapods 整合:將下列相依性新增至 Podfile,以在應用程式中包含 Azure 通知中樞 SDK:
pod 'AzureNotificationHubs-iOS'
執行 Pod 安裝以安裝新定義的 Pod,並開啟 .xcworkspace。
如果您在執行 Pod 安裝時看到錯誤,例如 找不到 AzureNotificationHubs-iOS 的規格,請執行
pod repo update
以從 Cocoapods 存放庫取得最新的 Pod,然後執行 Pod 安裝。
透過 Carthage 整合:將下列相依性新增至您的 Cartfile,以在應用程式中包含 Azure 通知中樞 SDK:
github "Azure/azure-notificationhubs-ios"
- 接下來,更新組建相依性:
$ carthage update
如需使用 Carthage 的詳細資訊,請參閱 Carthage GitHub 存放 庫。
將二進位檔複製到您的項目中來進行整合:
您可以將二進位檔複製到專案,如下所示:
下載以 zip 檔案的形式提供的 Azure 通知中樞 SDK 架構,並將其解壓縮。
在 Xcode 中,以滑鼠右鍵按下您的專案,然後按兩下 [新增檔案] 選項,將 WindowsAzureMessaging.framework 資料夾新增至 Xcode 專案。 選取 [ 選項 ],並確定 已選取 [視需要 複製專案],然後按兩下 [ 新增]。
新增或編輯名為 Dev 設定.plist 的檔案,其中包含兩個屬性、
CONNECTION_STRING
連接字串 至 Azure 通知中樞,以及HUB_NAME
Azure 通知中樞名稱。在適當的
<string></string>
區段中新增連線至 Azure 通知中樞的資訊。 將字串常值佔位符--HUB-NAME--
取代--CONNECTION-STRING--
為中樞名稱和 DefaultListenSharedAccessSignature,如您先前從入口網站取得:<?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>
在相同的 AppDelegate.m 檔案中,以下列程式代碼取代 之後
didFinishLaunchingWithOptions
的所有程式代碼:#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
此程式代碼會使用您在 Dev 設定.plist 中指定的連線資訊,連線到通知中樞。 然後,它會將裝置令牌提供給通知中樞,讓中樞可以傳送通知。
建立 NotificationDetailViewController 頭檔
類似於先前的指示,請新增另一個名為 SetupViewController.h 的頭檔。 以下欄程序代碼取代新標頭檔案的內容:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface SetupViewController : UIViewController @end NS_ASSUME_NONNULL_END
新增實作檔案 SetupViewController.m。 將檔案的內容取代為下列程序代碼,以實作 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
若要確認沒有任何失敗,請在您的裝置上建置並執行應用程式。
傳送測試推播通知
您可以使用 Azure 入口網站 中的 [測試傳送] 選項,在應用程式中測試接收通知。 它會將測試推播通知傳送至您的裝置。
推播通知通常會在後端服務中傳送,例如Mobile Apps或使用相容的連結庫 ASP.NET。 如果後端無法使用連結庫,您也可以直接使用 REST API 來傳送通知訊息。
以下是您可能想要檢閱以傳送通知的其他一些教學課程清單:
- Azure Mobile Apps:如需如何從與通知中樞整合的Mobile Apps 後端傳送通知的範例,請參閱 將推播通知新增至iOS 應用程式。
- ASP.NET: 使用通知中樞將推播通知傳送給使用者。
- Azure 通知中樞 Java SDK:請參閱 如何使用來自 Java 的通知中樞從 Java 傳送通知。 這已在 Eclipse 中測試 Android 開發。
- PHP: 如何使用 PHP 的通知中樞。
確認您的應用程式收到推播通知
若要在 iOS 上測試推播通知,您必須將應用程式部署至實體 iOS 裝置。 您無法使用 iOS 模擬器傳送 Apple 推播通知。
執行應用程式並確認註冊成功,然後按 [ 確定]。
接下來,從 Azure 入口網站 傳送測試推播通知,如上一節所述。
推播通知會傳送至所有已註冊的裝置,以接收來自指定通知中樞的通知。
下一步
在此簡單範例中,您會將推播通知廣播到所有已註冊的 iOS 裝置。 若要瞭解如何將推播通知傳送至特定 iOS 裝置,請繼續進行下列教學課程:
如需詳細資訊,請參閱下列文章: