[iOS 10] User Notifications framework! フォアグラウンド時も通知バナー表示

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。WWDCから3ヶ月!とうとう iOS 10 が正式公開されました!!

平屋の User Notifications framework 連載記事を引き継ぎ、今回記事を書いていきたいと思います。

前記事「[iOS 10] 画面上部または通知センター上に表示された通知がタップされたときの処理を実装する」では画面上部または通知センター上に表示された通知がタップされたときの処理の実装方法を紹介しました。

本記事では、アプリがフォアグラウンドの時でも通知バナーを表示する方法をご紹介します。

iOS 10での仕様変更

iOS 9 までは、通知バナーが表示されるのはアプリがバックグラウンドの時のみで、フォラグラウンドの時には表示出来ないようになっていました。

しかし、iOS 10 ではフォアグラウンドの時でも通知バナーを表示できるようになりました。

実装

アプリがフォアグラウンドの時に、通知バナーを表示するには、 第1回目と同様、任意のオブジェクトを UNUserNotificationCenterのデリゲートにして、デリゲートメソッドを実装すれば OK です。

// デリゲートを設定
center.delegate = self;
// アプリがフォアグラウンドの時に通知を受け取った時に呼ばれるメソッド
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    completionHandler([.alert, .sound])  // 通知バナー表示、通知音の再生を指定
}

上記のデリゲートメソッドは、アプリがフォアグラウンドの時に通知を受け取った際に呼ばれます。

completionHandler 引数に UNNotificationPresentationOptions を渡すと、通知受信時の動作を変えることができます。 上記の例では、通知バナーの表示とサウンド再生を指定しています。

また、通知音の再生のみを行いたい場合、.soundだけを指定します。

さいごに

本記事では、アプリがフォアグラウンドの時でも通知センターを表示する方法を紹介しました。

今後も User Notifications framework のクラスを試していきます!

参考資料

Framework Reference

Class Reference