アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【iPhone/iPadMacOSGoogleSwift
FirebaseでiOSアプリにプッシュ通知機能を実装する【3】
POSTED BY
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

とします。どこかで消さないと、アプリを消去しない限り一生バッジが表示され続けます

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】