はじめに
- 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表示に変更するユーザが多かったのではないかと思います
- そう考えると、そんなに気にしなくてもいいのかもしれませんね