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
とします。どこかで消さないと、アプリを消去しない限り一生バッジが表示され続けます。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Linux】iconv/libiconvをソースコードからインストール
Googleスプレッドシートを編集したら自動で更新日時を入れる
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う
Windows11でMacのキーボードを使うには