Tech iOS

UserNotificationsの使い方について

投稿日:2019年12月9日 更新日:

はじめに

普段の業務ではプッシュ通知の制御にまだUIApplicationDelegateのメソッドを使用しているのですが、近々UserNotificationsフレームワークに切り替える必要がありそうなので基本的な使い方についてまとめてみたいと思います。

UserNotificationsフレームワーク

iOS10以降に対応しているプッシュ通知のフレームワークです。
APNsを介したサーバーからの通知とローカル通知を実装する事が出来ます。
また、iOS9まではアプリがフォアグラウンド時に通知を受け取った場合は通知バナーを表示しませんでしたが、このフレームワークを使用するとフォアグラウンド時でも通知バナーを表示する事が出来ます。

基本実装

デリゲートの設定

UserNotifications をimportし、 UNUserNotificationCenterDelegate に準拠します。
下記例では、AppDelegateクラスの application(_:didFinishLaunchingWithOptions:) の中でデリゲートを設定しています。

ユーザー許可

今まで同様にまずユーザーにプッシュ通知の許可を求めるダイアログ表示を行います。
この際に、通知音やバッジの有無などのオプション設定を行う事が出来ます。
ユーザーが許可したらデバイストークンの発行処理を行います。

デバイストークン取得後

デバイストークンが発行されたら、トークンをプッシュ通知用サーバーに送る等の処理を行うと思います。
ここは今まで通りUIApplicationDelegateのメソッドで行います。
ちなみに、iOS13以降でトークン仕様が変更となっているので、詳細はこちらの記事を参照してみてください。

バックグラウンドで通知受信

バックグラウンドで通知を受信した時や通知バナーをタップした時は以下のメソッドが呼ばれます。
response から通知内容を取得する事が出来ます。
公式リファレンスによると、最後に completionHandler() を明示的に呼んであげる必要があるようです。

フォアグラウンドで通知受信

フォアグラウンド時で通知を受信した時は以下のメソッドが呼ばれます。
completionHandler() の引数で通知バナーの表示/非表示や通知音のON/OFFの設定を行う事が出来ます。
このメソッドを実装しないと、iOS9までと同様に通知バナー等は表示されません。

さいごに

iOS10以降のプッシュ通知では他にサイレントプッシュやNotification Service Extensionを利用したリッチプッシュなどの機能もあるので、機会があればこちらも記事にしたいと思います。

おすすめ書籍

詳解 Swift 第5版 [改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus 絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 【Xcode 11 & iOS13】 完全対応

blog-page_footer_336




blog-page_footer_336




-Tech, iOS
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

[Swift]Alamofireを使ってファイルをDLしてみる

はじめに こんにちは、nukkyです。 みなさんSwiftでの通信ライブラリは何を使ってますか? 私はAlamofireを使っています、人気・実績ともにありますし情報量も多いです。 今回はそのAlam ...

元mac使いがUbuntuで理想の作業環境に近づけるためにやったこと

はじめに 最近は、WSL2上でIDEを立ち上げて開発しているのですが、動作が重たかったので、そもそもUbuntuを直接使ったほうが軽いのではないかと思い、Ubuntu上での開発環境構築をやってみました ...

[Flutter] CustomPaintという選択肢

はじめに Flutterで用意されているWidgetや、パッケージを探してみても望む表現ができない場合は、 CustomPaintという選択肢が出てきます。iOSやAndroidなどでもグラフや複雑な ...

[Swift]半モーダルを簡単に実装できるFloatingPanelを使ってみよう!

はじめに 今回はiOSエンジニアなら1回はみたことがあるであろう、半モーダルを簡単に実装できて、カスタマイズ性にも優れたライブラリ FloatingPanel を使ってみたいと思います。 https: ...

CollectionViewの並び替えを実装する

はじめに こんにちは。Yossyです。 前回まではCollectionViewのカスタムレイアウトを作成していました。 このCollectionViewのセルの並び替え処理を実装をしたので、備忘録つい ...

フォロー

blog-page_side_responsive

2019年12月
日 月 火 水 木 金 土
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。