2024-03-15
FirebaseでiOSアプリにプッシュ通知機能を実装する【1】
FirebaseでiOSアプリにプッシュ通知機能を実装する【2】
続きです。前回までで、Xcodeに直接接続している実機やシミュレータにはFirebaseから通知のテストを試せました。あとはトークンを使用せずに実機に本番通知と同様の手順での通知をテストすること、最後にApp Store Connectで本物アプリを登録してTestFlightで通知を確認して完成です。
開発用Provisioning Profileで限定端末で本物通知をテストする
https://developer.apple.com/account/resources/profiles/list
から「+」で新規プロファイルを作成します。
・Development→iOS App Developmentを選択してContinue
・ターゲットとなるアプリを選択してContinue, jp.co.mycorp.MyApp
・自分が秘密鍵を所有している、自分の開発用の証明書を選択してContinue
(大抵はXcodeでAutomatically manage signingするとき選ばれる証明書)
・今回ビルドした通知機能つきアプリをテストしたい端末を選択してContinue
・EntitlementはDefaultでContinue
・プロファイル名を入力してGenerate、出来上がったProfileをDownload。
(ファイルをMyAppPushNotifyTest.mobileprovisionとする)
Xcodeでプロジェクトを開き、左ペイン左上アプリ名青アイコン→TARGETS→MyApp→Signing & Capabilitiesを開く。
「Automatically manage signing」のチェックを外して,、Provisioning Profileのプルダウンで「Import Profile...」とし、ダウンロードしたMyAppPushNotifyTest.mobileprovisionを指定する。
プロファイルで選択した実機をつなぎ、ビルド、インストール、実行する。
こうして実行されたアプリには、Firebaseから簡易テストでなく本物のステップを踏んで本物メッセージを通知できる。(トークン不要)
前回と同様に、Firebaseコンソールを開いて、左ペインの「Messaging」を開き、Messagingのメイン画面にて「新しいキャンペーンを作成→通知」を開きます。
・端末上に表示される通知のタイトル、通知テキスト(本文)を入力します。
・「ターゲット」で、通知を送信するターゲットアプリを選択します。jp.co.mycorp.MyApp。
・「スケジュール設定」は今すぐ送信「現在」
・「その他のオプション」で通知音の有無、バッジの有無と数を指定できます。バッジありで数を指定した場合、アプリ側のアイコンの右上に未読の数が赤丸で出るあれです。
ここまで設定を終えたら「確認」→「公開」ボタンを押せば、端末に本物の通知が送信されます。
通知をタップすれば前回のコードのAppDelegate.UNUserNotificationCenterDelegate.didReceiveが呼ばれますし、アプリが実行中で表示中であればAppDelegate.UNUserNotificationCenterDelegate.willPresentが呼ばれるはずです。そうなれば成功です。
App StoreにアプリをアップしTestFlightで本番通知を確認する
あとは以下の記事にしたがい、このアプリをApp Storeにアップロードします。
Apple Developer Program有料メンバーシップでアプリをApp Storeで配信するまで
アプリのIdentifierにテスト用と本番用両方の通知用証明書が紐づけられている訳なので、ストア用のProvisioning ProfileもPush Notifications権限がついているはずです。なのでそのままTestFlight配信→インストールでOKです。
Firebase側にもすでに本番用のp12証明書を登録しているので、これまでと同様新しいキャンペーンで通知を公開すればTestFlight経由で本番通知がなされます。TestFlightに問題がなければ、そのままアプリをリリースできます。
注意点
バッジつきで通知をしたなら、アプリ側で必ずどこかでそのバッジ(アプリアイコン右上につく数字)を消さなければなりません。どこで消すかはアプリ側の仕様によります。
アプリの起動時(didFinishLaunchingWithOptions)で消すなら、
application.applicationIconBadgeNumber = 0
とします。アプリのどこか任意の場所で消すなら、
UIApplication.shared.applicationIconBadgeNumber = 0
とします。どこかで消さないと、アプリを消去しない限り一生バッジが表示され続けます。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
nvidia-smiを1秒ごとに実行してGPU使用率をモニタリング
TSUKUMOのマルチGPUパソコンWA9J-X211/XTのUbuntu Server 22.04でMYCOEIROINK作成コードを実行し音声合成モデルをトレーニングする
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 22.04とCOEIROINK Engineを導入する
Python venv(仮想環境作成)でError: Command returned non-zero exit status 1のエラー対処法
【Ubuntu】プロジェクトごとに複数のPythonバージョンを使い分ける
【PHP】フォーム入力を受け取り出力する
【Ubuntu】aptでインストールしたapache2にソースコンパイルしたphpをマルチスレッドモードで組み込む
【PHP】HTMLファイルを読み込んで文字列変換して出力する
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 22.04とVOICEVOX Engineを導入する
進研ゼミチャレンジタッチをAndroid端末化する
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows版Google Driveが使用中と言われアンインストールできない場合
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【Apache】サーバーに同時接続可能なクライアント数を調整する
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Googleスプレッドシートを編集したら自動で更新日時を入れる
size_tとssize_tを使い分けてSegmentation Faultを予防する