匯出 (0) 列印
全部展開

服務匯流排通知中心教學課程 (iOS 應用程式)

note附註
通知中心已在 2013 年 1 月於 Windows Azure Service Bus 中提供來做為預覽功能。預計會在 2013 年年中公開上市 (GA)。

note附註
針對通知中心中的改善結果,您在 2013 年 4 月前下載的 SDK 不會和新的通知中心一同運作。相反地,目前的 SDK 會和在 2013 年 4 月前建立的通知中心一同運作。請開始使用具有新 SDK 的通知中心以充分利用新功能,例如開放式並行存取控制。當通知中心轉換為 GA 時,支援 2013 年 4 月前建立的通知中心會結束。

Service Bus 通知中心是 Service Bus 實體,讓使用者能夠透過協力廠商應用程式平台傳送裝置推播通知,包含:

  • 適用於 Windows 8 的 Windows 推播通知服務 (WNS)。

  • Apple 推播通知服務 (APN)。

  • Google 雲端訊息服務 (GCM)。

即將新增對於 Windows Phone 的 Microsoft 推播通知服務 (MPNS) 的支援。

此教學課程說明如何設定 iOS 應用程式和簡易 .NET 應用程式,以透過「Apple 推播通知」服務來廣播通知。

步驟如下:

  1. 產生憑證簽署要求來啟用應用程式的 APN。

  2. 在「iOS 規定入口網站」中註冊 iOS 應用程式,以啟用推播通知並取得認證和規定設定檔。

  3. 建立應用程式的規定設定檔。

  4. 建立並設定通知中心。

  5. 設定 iOS 應用程式,以從「通知中心」接收推播通知。

  6. 建立後端程式來廣播推播通知。

此外亦可參閱深入的 作法:服務匯流排通知中心 (iOS 應用程式) 主題和 Windows Azure 服務匯流排通知中心概觀主題。

必要條件

若要執行本教學課程中說明的工作,您必須具有下列項目:

  • Apple 開發人員帳戶。

  • 服務匯流排 .NET 預覽 SDK。此 SDK 是一個 NuGet 封裝,其中包含服務匯流排預覽功能,您可以在此處下載此 SDK。此封裝是 ServiceBus 預覽功能,其中包含名為 Microsoft.ServiceBus.Preview.dll 的新 Service Bus 程式庫。若要使用通知中心,請使用此程式庫,而不是正式版 (Microsoft.ServiceBus.dll)。

  • 服務匯流排 iOS SDK 架構。您可以在此處下載此項目。

產生憑證簽署要求

  1. 首先,請產生「憑證簽署要求」(CSR) 檔案以讓 Apple 用來產生已簽署的憑證。

  2. 從 [公用程式] 資料夾中,執行 [金鑰鏈存取] 工具。

  3. 按一下 [金鑰鏈存取],展開 [憑證助理],然後按一下 [透過憑證授權單位要求憑證....]。

    憑證簽署要求
  4. 按一下 [使用者電子郵件地址],輸入 [一般名稱] 和 [CA 電子郵件地址] 值,確定已選取 [儲存到磁碟],然後按一下 [繼續]。

    憑證資訊
  5. 在 [另存新檔] 中輸入「憑證簽署要求」(CSR) 檔案的名稱,在 [位置] 中選取位置,然後再按一下 [儲存]。此作業會將 CSR 檔案儲存於選取的位置;預設位置為「桌面」。記住為此檔案選擇的位置。

    憑證簽署要求
  6. 接著請透過 Apple 註冊應用程式,啟用推播通知,然後上傳此匯出的 CSR 來建立推播憑證。

註冊應用程式並啟用推播通知

  1. 若要將推播通知傳送至 iOS 應用程式,請透過 Apple 註冊應用程式並一併註冊推播通知。

  2. 若您尚未註冊應用程式,請瀏覽至「Apple 開發人員中心」的「iOS 規定入口網站」,使用您的 Apple ID 登入,然後依序按一下 [App ID]、[新增 App ID]。

    iOS 佈建入口網站
  3. 在 [描述] 中輸入應用程式名稱,在 [配套識別碼] 中輸入 [ServiceBus.Tutorial] 值,然後按一下 [提交]。

    note附註
    配套識別碼必須與您在 Xcode 應用程式專案中提供的識別碼相同。

  4. 尋找建立的應用程式 ID,然後按一下 [設定]。

  5. 勾選 [啟用 Apple 推播通知服務] 核取方塊,然後針對「開發推播 SSL 憑證」按一下 [設定]。接著會顯示 [Apple 推播通知服務 SSL 憑證助理]。

    note附註
    相同程序亦適用於生產憑證。

  6. 按一下 [瀏覽],移至您在初始工作中建立之 CSR 檔案的存放位置,然後按一下 [產生]。

  7. 入口網站建立憑證後,請按一下 [繼續],然後在下一個畫面中按一下 [下載]。接著即會將簽章憑證下載並儲存至電腦上的 [下載] 資料夾,檔名為 aps_development.cer

  8. 按兩下下載的推播憑證 aps_development.cer。新的憑證會下載並安裝在 [金鑰鏈] 中。

  9. 在 [金鑰鏈存取] 中以滑鼠右鍵按一下新的憑證,按一下 [匯出],將檔案命名為 ServiceBusTutorial,選取 .p12 格式,然後再按一下 [儲存]。

    Important重要事項
    若入口網站不支援 .p12 副檔名,請將其變更為 .pfx。

建立應用程式的規定設定檔

  1. 返回至 [iOS 規定入口網站] 後,依序按一下 [規定]、[新增設定檔]。

  2. 輸入 [設定檔名稱],按一下 [憑證與裝置] 以用於進行測試,選取 [應用程式 ID],然後再按一下 [提交]。隨即會建立新的規定設定檔。

  3. 從規定設定檔清單中,按一下 [下載] 以取得此新設定檔。接著就會將設定檔下載至本機電腦。

  4. 在 Xcode 中,開啟 Organizer 選取 [裝置] 檢視,在左窗格的 [程式庫] 區段中按一下 [規定設定檔],然後按一下中間窗格下方的 [匯入] 按鈕。

  5. 尋找下載的規定設定檔,然後按一下 [開啟]。

  6. 在 [目標] 下方,按一下應用程式的主要目標 (通常為您的應用程式名稱),展開 [程式碼簽署識別],然後在 [偵錯] 下方選取新的設定檔。此步驟可確保讓 Xcode 專案使用新設定檔來進行程式碼簽署。

建立服務匯流排通知中心

您可以使用「Windows Azure 管理入口網站」來建立通知中心,並將其設為傳送推播通知至「Windows 市集」應用程式。

  1. 登入 Windows Azure 管理入口網站 (http://manage.windowsazure.com/)

  2. 按一下左下角的 [新增]。

  3. 依序按一下 [應用程式服務]、[服務匯流排]、[通知中心] 和 [快速建立]。

    建立 Service Bus 通知中樞
  4. 選取通知中心的名稱、區域以及建立此通知中心的所在命名空間 (若無可用命名空間,則會規定具指定名稱的新命名空間)。

  5. 按一下核取記號。

  6. 接著在左方瀏覽窗格的 [服務匯流排] 索引標籤下方,按一下已建立的命名名稱。通知中心應會出現在清單中。

    Service Bus 通知中樞
  7. 按一下通知中心,然後按一下頂端的 [設定] 索引標籤。

    Service Bus 通知中樞
  8. 上傳 APN 憑證 (ServiceBusTutorial.p12),含密碼。記得選取憑證的對應環境,亦即 [生產] 或 [開發]。

建立 iOS 應用程式,並透過「服務匯流排」來註冊推播通知

下載和參考「服務匯流排」架構

  1. 下載「服務匯流排 iOS 預覽 SDK」。

  2. 將 [WindowsAzureServiceBus.framework] 資料夾從 [尋找工具] 拖曳至您的專案 (選取 [將項目複製到目的地群組的資料夾 (若有需要)])。

存取通知中心

  1. 在應用程式的 AppDelegate 類別中,新增下列的匯入指示詞。

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    
  2. didFinishLaunchingWithOptions 方法中寫入下列程式碼:

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
    
  3. 在 [Windows Azure 管理入口網站] 的左方瀏覽窗格中,按一下 [服務匯流排],然後再按一下右方的命名空間名稱。記下命名空間的名稱。

  4. 按一下通知中心,然後在下方工具列中按一下 [連線資訊]。

    Service Bus 通知中樞
  5. 複製名為 DefaultListenSharedAccessSignature 的連線字串。

  6. 在 AppDelegate.m 中新增下列方法,以建立此裝置的範本註冊。確定以您剛才從入口網站複製的值來取代連線字串。

    (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken {    
        SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:
                                  @"<connection string>" notificationHubPath:@"mynh"];
        
        [hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) {
            if (error != nil) {
                NSLog(@"Error registering for notifications: %@", error);
            }
        }];
    }
    
  7. 在 AppDelegate.m 中新增下列方法,以在執行應用程式並收到通知時顯示 UIAlert

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:
    (NSDictionary *)userInfo {
        NSLog(@"%@", userInfo);
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notification" message:
        [userInfo objectForKey:@"inAppMessage"] delegate:nil cancelButtonTitle:
        @"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
    

在〈作法:服務匯流排通知中心 (iOS 應用程式)〉一節中,可找到有關前述程式碼以及如何從 iOS 應用程式存取更多進階「通知中心」功能的詳細資訊。

建立後端應用程式來傳送推播通知

  1. 在 Visual Studio 中建立新專案,選取 [Visual C#-] > [Windows-] > [主控台應用程式]。

  2. 在 [方案總管] 中的 [參考] 上按一下滑鼠右鍵,然後按一下 [管理 NuGet 封裝]。選取 [服務匯流排預覽功能] 封裝並進行安裝。

  3. 在 Program.cs 的頂端新增下列程式碼:

    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    using Microsoft.ServiceBus.Notifications;
    
  4. 在 [Windows Azure 管理入口網站] 的通知中心儀表板中,按一下下方工具列上的 [連線資訊]。

    Service Bus 通知中樞
  5. 複製名為 DefaultFullSharedAccessSignature 的連線字串。

  6. 在 Program.cs 的 Main() 方法中貼上以下程式碼,用剛才從入口網站複製的連線字串取代預留位置:

    var hubClient = NotificationHubClient.CreateClientFromConnectionString(“<connection string>, "myHub");
    var iosPayload = AppleNotificationJsonBuilder.Create("Hello!");
    iosPayload.CustomFields.Add("inAppMessage", "Hello!");
    hubClient.SendAppleNativeNotification(iosPayload.ToJsonString());
    

執行應用程式並傳送通知

  1. 在 Xcode 左上角,按一下 [iOS 裝置]。

Important重要事項
模擬器中無法使用推播通知。

  1. 請在裝置上執行應用程式。

  2. 在 Visual Studio 中,執行主控台程式。

  3. 隨後通知就會出現在裝置上。

傳送具有 Node.js 的通知

  1. 安裝 Azure 節點模組:

    npm install azure
    
  2. 在節點指令碼 (或互動主控台) 中,輸入以下項目:

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.apns.send(null, '{ alert: "This is my toast message for iOS!"}');
    

以行動服務傳送通知

透過行動服務,您可以快速建立應用程式的後端。您可以使用行動服務的通知中心,將通知廣播到數百萬台裝置上,或使用標記輕鬆建立興趣群組。

本教稃課程會使用排程的工作,但您可以從行動服務中的任何伺服器端指令碼傳送通知。

  1. 建立新的行動服務,或登入您自己的行動服務。如需詳細資訊 行動服務,前往這裡

  2. 在頂端列,按一下 [排程程式]。

    推送通知
  3. 建立新的已排程工作,插入名稱,接著按一下 [依需求]。

    推送通知
  4. 建立工作時,按一下工作名稱。接著在頂端列,按一下 [指令碼]。

  5. 插入以下指令碼。確保以您的通知中心名稱和稍早定義的 DefaultFullSharedAccessSignature 連線字串來取代預留位置。按一下 [儲存]

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.apple.send(
            null,
            {
                alert: "Hello from Mobile Services!"
            },
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. 在底部列,按一下 [執行一次]。

note附註
行動服務會使用 Windows Azure SDK for Node.js 來存取通知中心。 如需詳細資訊 通知中心的 Windows Azure SDK for Node.js,請前往這裡

如上所述,若已註冊 10,000 個用戶端執行個體,通知中心會建立和傳送 10,000 個通知副本,並執行必要的錯誤處理以及註冊管理。

後續步驟

「通知中心」提供眾多實用的功能。如需了解關於「通知中心」的詳細資訊,請參閱下列主題。

社群新增項目

顯示:
© 2014 Microsoft