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
とします。どこかで消さないと、アプリを消去しない限り一生バッジが表示され続けます。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
マイクで喋った日本語をテキスト変換してOBS Studioにリアルタイムで表示する【2】
マイクで喋った日本語をテキスト変換してOBS Studioにリアルタイムで表示する【1】
Raspberry PI 2 bookworm 32bitでCanon IP4300プリンタ印刷する
【VMware】Apple silicon M2 MacでWindows11を無償で動かす
A4用紙タテ2ページ分をA3用紙ヨコ1ページに印刷するには
【Android】apkのインストールができたのにアプリ一覧に出ない場合
【Node.js】chrono-nodeを使用して自然言語を日付に変換する
CUDA13環境下でGPU使用版のllama.cppを導入しC++ライブラリを使う
CUDA13環境下でGPU使用版のllama-cpp-pythonを導入する
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
CUDA13環境下でGPU使用版のPyTorchを導入する
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Apache】サーバーに同時接続可能なクライアント数を調整する
LinuxからWindowsの共有フォルダをマウントする
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
Debian 12で固定IPアドレスを使う設定をする
【Debian】Sambaインストール/アンインストールメモ【FreeBSD】
【Linux】viエディタが文字化けする場合の対処法