iOS 10以降のNotificationの見た目


はじめに

  • iOS 10でNotificationを利用したコードを実装して、しばし悩みました
  • その理由は、追加したカスタムAction(ボタン)が表示されなかった(ように見えた)ためです
  • その辺りを、整理してみます

検証環境

  • Xcode 8.2.1
  • iOS 10.2

カスタムActionが表示されない?

  • SettingsからNotificationの表示形式でAlertを選択しても、見た目上はBannerです
    • 放置しても消えないBannerがAlert
    • 機能としても、放置して消えるか残るかの違いのみ
  • ユーザが操作をしなければ、カスタムActionは表示されません
    • これまでのBannerと同じ挙動ですね
  • 以下の画像はiPhone 5sですが、3D Touch非対応のデバイスではよく見るとBannerの下部に引っ張れそうなハンドルが表示されてます

カスタムActionの表示条件

  • 便宜上、HOME画面と書いてますが当然、何らかのアプリがフォアグラウンドにいても同じです
    • Popは、3D Touchの強く押し込む動作です(軽く押すのがPeek)
  • Banner表示でもAlert表示でも、操作は共通です
画面 3D Touch カスタムActionの表示方法
HOME画面 あり Pop or 下にスワイプ
HOME画面 なし 下にスワイプ
通知センター あり Pop
通知センター なし 左にスワイプ -> Viewをタップ

まとめ

  • iOS 10におけるNotificationのカスタムActionは、Alert表示でも最初から表示されているわけではないので気付きにくいです
    • iOS 9まではAlertでの表示がアラートダイアログ形式だったので、カスタムActionは初めから表示されていました
  • Popが利用できないデバイス(3D Touchがないデバイス)では、通知センターにおいてカスタムActionを表示する術がありません
    • 下にスワイプしても画面全体が下に動くだけで、個別のNotificationには何も起こりません
    • 3D Touch無効でも、左にスワイプ -> Viewをタップで表示できます(コメントにてご指摘頂き、修正しました)
  • iOS 9までは通知センター上ではカスタムActionを表示できなかったので、高機能になった(3D Touch対応デバイスでは)と言えると思います
  • わざわざユーザがカスタムActionを表示させる必要があるので、従来のアラートダイアログ形式と異なり、気づかれにくいという点が少し残念です
    • とは言え、これまでもアラートダイアログ形式のNotificationは操作の邪魔になるので、Banner表示に変更するユーザが多かったのではないかと思います
    • そう考えると、そんなに気にしなくてもいいのかもしれませんね