逐步解說 - 在 Xamarin.iOS 中使用本機通知
在本節中,我們將逐步解說如何在 Xamarin.iOS 應用程式中使用本機通知。 其將示範如何建立和發佈通知的基本概念,以在應用程式收到時彈出警示。
重要
本節中的資訊與 iOS 9 和之前版本有關,這裡已保留支援舊版 iOS 版本。 針對 iOS 10 和更新版本,請參閱 使用者通知架構指南 ,以在 iOS 裝置上支援本機和遠端通知。
逐步解說
讓我們建立一個簡單的應用程式,以顯示本機通知的運作方式。 此應用程式將會有單一按鈕。 當我們按鍵時,它會建立本機通知。 經過指定的時間週期之後,我們將會看到通知出現。
在 Visual Studio for Mac 中,建立新的單一檢視 iOS 解決方案,並將其呼叫為
Notifications
。開啟檔案
Main.storyboard
,然後將按鈕拖曳至 [檢視]。 將按鈕命名為按鈕,併為其提供 [新增通知] 標題。 您可能也想要此時將一些 條件約束 設定為按鈕:ViewController
編輯 類別,並將下列事件處理程式新增至 ViewDidLoad 方法:button.TouchUpInside += (sender, e) => { // create the notification var notification = new UILocalNotification(); // set the fire date (the date time in which it will fire) notification.FireDate = NSDate.FromTimeIntervalSinceNow(60); // configure the alert notification.AlertAction = "View Alert"; notification.AlertBody = "Your one minute alert has fired!"; // modify the badge notification.ApplicationIconBadgeNumber = 1; // set the sound to be the default sound notification.SoundName = UILocalNotification.DefaultSoundName; // schedule it UIApplication.SharedApplication.ScheduleLocalNotification(notification); };
此程式代碼會建立使用音效的通知、將圖示徽章的值設為 1,並向用戶顯示警示。
接下來,編輯 檔案
AppDelegate.cs
,先將下列程式代碼新增至FinishedLaunching
方法。 我們已檢查裝置是否正在執行 iOS 8,如果是 需要 要求使用者收到通知的許可權:if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) { var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); application.RegisterUserNotificationSettings (notificationSettings); }
仍在 中
AppDelegate.cs
,新增下列會在收到通知時呼叫的方法:public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification) { // show an alert UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert); okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(okayAlertController, true, null); // reset our badge UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; }
我們需要處理因為本機通知而啟動通知的情況。 編輯中的
AppDelegate
方法FinishedLaunching
,以包含下列代碼段:// check for a notification if (launchOptions != null) { // check for a local notification if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey)) { var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification; if (localNotification != null) { UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert); okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); Window.RootViewController.PresentViewController(okayAlertController, true, null); // reset our badge UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; } } }
最後,執行應用程式。 在 iOS 8 上,系統會提示您允許通知。 按兩下 [ 確定 ],然後按兩下 [ 新增通知] 按鈕。 短暫暫停之後,您應該會看到警示對話方塊,如下列螢幕快照所示:
摘要
本逐步解說示範如何使用各種 API 在 iOS 中建立和發佈通知。 它也示範如何使用徽章來更新應用程式圖示,以提供一些應用程式特定的意見反應給使用者。