共用方式為


逐步解說 - 在 Xamarin.iOS 中使用本機通知

在本節中,我們將逐步解說如何在 Xamarin.iOS 應用程式中使用本機通知。 其將示範如何建立和發佈通知的基本概念,以在應用程式收到時彈出警示。

重要

本節中的資訊與 iOS 9 和之前版本有關,這裡已保留支援舊版 iOS 版本。 針對 iOS 10 和更新版本,請參閱 使用者通知架構指南 ,以在 iOS 裝置上支援本機和遠端通知。

逐步解說

讓我們建立一個簡單的應用程式,以顯示本機通知的運作方式。 此應用程式將會有單一按鈕。 當我們按鍵時,它會建立本機通知。 經過指定的時間週期之後,我們將會看到通知出現。

  1. 在 Visual Studio for Mac 中,建立新的單一檢視 iOS 解決方案,並將其呼叫為 Notifications

  2. 開啟檔案 Main.storyboard ,然後將按鈕拖曳至 [檢視]。 將按鈕命名為按鈕,併為其提供 [新增通知] 標題。 您可能也想要此時將一些 條件約束 設定為按鈕: 在按鈕上設定一些條件約束

  3. 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,並向用戶顯示警示。

  4. 接下來,編輯 檔案 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);
    }
    
  5. 仍在 中 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;
    }
    
  6. 我們需要處理因為本機通知而啟動通知的情況。 編輯中的 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;
            }
        }
    }
    
  7. 最後,執行應用程式。 在 iOS 8 上,系統會提示您允許通知。 按兩下 [ 確定 ],然後按兩下 [ 新增通知] 按鈕。 短暫暫停之後,您應該會看到警示對話方塊,如下列螢幕快照所示:

    確認傳送通知的能力[新增通知] 按鈕通知警示對話框

摘要

本逐步解說示範如何使用各種 API 在 iOS 中建立和發佈通知。 它也示範如何使用徽章來更新應用程式圖示,以提供一些應用程式特定的意見反應給使用者。