withアプリーチSwiftUIで開発しているアプリに通知機能を実装する方法をまとめていきたいと思います。iOSアプリの通知機能iOSアプリではユーザーに対して注意を引くために通知機能を実装することが可能です。実装できるのは音を鳴らしたり、以下のようなプッシュ通知(アラート)を送信したり、アイコンにバッジをつけるなどさまざまなことが可能になっています。プッシュ通知は基本的にはバックグラウンド(アプリが停止している状態)で実行されますが、フォアグラウンド(アプリが動作している状態)で実装することも可能になっています。iOSアプリのプッシュ通知機能にはさらにローカル通知とリモート通知の2種類に分かれます。ローカル通知ローカル通知とはオフラインで実行される通知機能のことを指します。デバイス内からプッシュ通知リクエストを送信し、デバイス内で処理されて通知が届くような仕組みになっています。ローカル通知は事前準備などは必要なく、Swift内でコードを記述するだけで実装することができます。通知リクエストを送信するタイミングはアプリ内からしか操作できません。リマインダーやアラーム機能など自分でセットして使用するプッシュ通知などはこのローカル通知を使用して実装されています。おすすめ記事:【SwiftUI】通知機能の実装方法!ローカル通知とリモート通知の違いリモート通知リモート通知とはオンラインで実行される通知機能のことを指します。ローカル通知とは異なり、プッシュ通知リクエストをオンライン上から送信し、デバイス内で処理されて通知が届くような仕組みになっています。仕組みをもう少し詳しくみて見ると以下の通りになります。service)と呼ばれるAppleが運営するサービスを介してプッシュ通知は配信されます。そのためにはまずデバイスの登録を行い、デバイストークンを発行、そのトークンをサーバーに登録するといった前準備をいくつかこなすことでそのサーバーから通知リクエストを送信することが可能になります。リモート通知を使用することでユーザーの操作などではなく、開発者や運営者の任意のタイミングでアプリに対して通知を送信することができるようになります。iOSアプリでリモートプッシュ通知を利用可能にするために必要な準備APNsを介することは分かりましたがなかなか全体像が掴みにくいのでもう少し整理してみます。そもそもiOSアプリ自体にリモートプッシュ通知機能を追加するためには何が必要か洗い出します。通知送信用のサーバーにはFirebaseやニフティクラウド(ニフクラ)などのクラウドサービスを使用します。好きなサービスに登録しておきましょう。通知送信用サーバーとAPNsの認証手段それらのサービス側とAPNsを連携させるためにはAPNsの認証が必要になるので、サーバー側にデジタルファイル形式の証明書(key)をアップロードする必要があるようです。作成したプロビジョニングプロファイルはXcodeへ反映させる必要があります。「リモートプッシュ機能」の利用権限の追加も必要になるので忘れないようにしてください。一連の実装の流れリモート通知を実装するためにさまざまな準備が必要なことが分かりました。今回の目的はまとめると以下の2つです。プロビジョニングプロファイルの作成→反映APNs用証明書(.p12)の作成→反映(またはp8ファイルでも可)リモートプッシュ通知の認証には「APNs用証明書(.p12ファイル)」を使用した方法以外にも「APNs用Key(.p8ファイル)」を使用した方法もあります。APNs用Keyによる認証の方が最新の方法になり、公式にも推奨されているのでそちらを使用した方が良いかもしれません。その場合はこの記事のp12ファイルのところのみをp8ファイルに置き換えてください。その際には以下の4番と5番の作成は不要になります。signing「プロビジョニングプロファイル」と「APNs用証明書(.p12)」を作成するためには最終的に以下の5つのファイルが必要になります。CSRファイル(初回のみ)開発者用ビルド証明書(.cerファイル)(初回のみ)プロビジョニングプロファイルAPNs用証明書(.cerファイル)APNs用証明書(.p12ファイル)(中間証明書:人による)プロビジョニングプロファイルを作成するために「1.2」が、APNs用証明書(.p12)を作成するために「1.4.6」が必要になります。今回は両方の作成を一連の流れとして作成していきますのでゆっくり慎重に作成していきましょう。IDの作成(デバイスの登録)プロビジョニングプロファイルの作成APNs用証明書(.cerファイル)の作成(中間証明書の取得→反映)APNs用証明書(.p12ファイル)の作成ファイルの概要や詳細はひとまずおいといて生成する流れを一気に見ていきます。今回は開発用の証明書を作成していきます。Program(有料)への登録が必要になります。Programとは?登録方法や費用と手順1.iOSプロジェクトの作成まずは対象となるiOSプロジェクトを作成しておきます。Xcodeから適当に作っておいてください。ここは特に解説しませんが今回はinterfaceを「Storyboard」で作成しておきます。Identifier」は後ほど多用するのでコピーしてどこかにメモしておきます。2.CSRファイルの作成CSRファイルはXcodeから作成していきます。「キーチェーンアクセス」からも作成することが可能ですが、紐付けがうまくいかないことがあるのでXcodeからの作成をお勧めします。Certificates...」をクリックします。次に左下の「+」ボタンをクリックして必要な証明書(開発用(Development)と配布用(Distribution))を選択し「Create」をクリックして、CSR(証明書署名要求)ファイルを作成します。Profiles」をクリックし左メニューの「Certificates」内に先ほど生成したCSRファイルが追加されているはずです。ダウンロードしてデスクトップに保存しておきます。2023/8/16追記:この作業を行うとCSRファイルではなく次に作成する開発者用ビルド証明書(.cerファイル)が作成されていることがありました。IDの作成」へ進んでください。Centerにログインします。File」をクリックして、先ほど作成したCSRファイルを選択し、「アップロード」をクリック開発者用証明書が作成されるので「Download」をクリック「証明書」フォルダの中に格納ここまでの作業は初回のみでOKです。作成した2つのファイルは削除せずに保管しておきましょう。以下からはアプリごとに対してリモート通知を許可するための作業になります。ID」を作成していきます。Identifier」が必要になります。Notifications」にチェックが入っているか確認して問題なければ「Registerボタン」をクリック5.デバイスの登録デバイスの登録はiOSアプリ開発を進めていてXcodeから実機へビルドしたことがある人はすでに登録されている場合もあると思います。「Devices」から登録されているか確認してみてください。Centerから作成します。Development」はXcode11以前を使用している場合に選択します。公式リファレンス:証明書タイププロビジョニングプロファイルが作成できたらXcode(アプリプロジェクト)に反映させていきます。Profiles」を先ほどダウンロードしたプロビジョニングプロファイルに変更します。おすすめ記事:【Xcode】プロビジョニングプロファイルとは?作成と反映方法7.APNs用証明書(.cerファイル)の作成p8ファイルを使用する場合はこのステップは飛ばしてください。APNs用証明書(.cerファイル)も開発者用証明書と似たような流れで作成していきます。IDを選択し、「Continue」をクリック対象のCSRファイルを選択し、「Continue」をクリックAPNs用証明書(.cer)が作成されるので、「Download」をクリック「証明書」フォルダの中に格納8.中間証明書の取得→反映p8ファイルを使用する場合は開発者用証明書(.cer)のみ信頼されているか確認してください。続いてAPNs用証明書(.p12ファイル)を作成するのですがその前に開発者用証明書(.cer)とAPNs用証明書(.cer)が信頼されているかをチェックしてみます。各証明書をキーチェーンアクセスで開きたいのでダウンロードしたファイルをダブルクリックもしくは「このアプリケーションで開く」>「キーチェーンアクセス」を選びます。キーチェーンアクセスを開いている場合はうまく反映されないことがあるので一度キーチェーンアクセスを閉じてから実行してみてください。キーチェーンアクセスで開いた場合に以下のように「証明書は信頼されていません」と出ている場合に限り中間証明書の取得→反映が必要です。PKI中間証明書は上記リンクよりダウンロードできるので必要なものをダウンロードし「証明書」フォルダに格納後ダブルクリックすることで反映させることができます。UTC)反映後に以下のように「この証明書は有効です」と表示されていればOKです。表示されていた場合は中間証明書の手順はスキップしてください。9.APNs用証明書(.p12ファイル)の作成p8ファイルを使用する場合はこのステップは飛ばしてください。最後にAPNs用証明書(.p12ファイル)を作成します。Sand..."を書き出す..」をクリックします。任意のファイル名を入力し保存先を選択して保存します。ここで保存をクリックするとパスワードを求められますが未入力で「OK」をクリックすればOKです。あとはこの「.p12ファイル」を該当のクラウドサービスにアップロードすれば完了です。Firebaseでのアップロード方法は以下を参考にしてください。Layer)証明書に含まれる公開鍵を発行することです。CSRファイル自体はiOSアプリ(またはサーバー)サイド側から発行することができ、CSRファイルを使用して証明機関(CA)を介して証明書(iOSアプリの証明書)を発行できます。CSRファイルにはアプリの公開鍵やアプリの情報(アプリ名や組織名など)、デジタル署名などが含まれています。証明書とは?ここでいう証明書はサーバーなら「サーバー証明書」、iOSアプリなら「アプリの証明書」と言うことになります。名称は異なりますが自身が正当なものであることを証明するためのものという目的は同じです。Authority:CA)から発行されます。今回のリモート通知を実装するために開発用のアプリ証明書を作成しました。証明書は正当なものである証明になるもの証明機関(CA)によって発行おすすめ記事:【Xcode/iOS】証明書の種類や発行方法!期限切れの対応や再発行.p12形式の証明書とは?.p12ファイルは、証明書を格納するために使用される証明書のデジタルファイル形式の1つです。#12)という形式で、証明書と関連する秘密鍵を含むデジタル署名形式であり、拡張子が「.pfx」または「.p12」で終わります。他にも形式はいろいろありますが、PKCS#12形式はセキュリティが高く、ファイルサイズが大きくなるやすいことが特徴です。勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。ご覧いただきありがとうございました。友達や家族の誕生日を登録しておくと当日に通知が届きお知らせしてくれるiOSアプリです。貸し借り管理アプリお金の貸し借りを管理するためのアプリです。貸借の色が分かれているので識別しやすく、使いやすさを求めてできるだけシンプルなUIにしています。カシホン人に貸すことが多く、誰に貸したか忘れがちな本の貸し借りを記録できるアプリです。