こんにちは!Popoです。
App Storeにアプリをアップデートした際の問題で、ipaファイルのプッシュ通知設定をチェックする必要が発生しました。
作業をしてみると、「結構役に立つなぁ」と思い記事にしてみようと思いました。
アーカイブが成功すると、そのままApp Store Connectにipaファイルをアップロードする方が多いと思います。
その前に、ひと呼吸おいて見直ししてみましょう
こんな方にお勧めの記事です。
- アプリをApp Store Connectにアップロード後のエラーを減らしたい方
- アーカイブ後のプッシュ通知設定をチェックしたい方
ipaファイルのプッシュ通知設定をチェックしたい理由
今回、私がipaファイルのプッシュ通知設定を確認したかった理由をお話します。
デバイストークンが取得できない問題
「最近プッシュ通知が届かないなぁ」と思い確認したところ、下記エラーが返却されている事が判明!
「”Domain=NSCocoaErrorDomain Code=3000 “No valid “aps-environment” entitlement string found for App” UserInfo={NSLocalizedDescription=No valid “aps-environment” entitlement string found for App }”」
このエラーについてはまた記事にしてみたいと思っています。
調査のためTestflightを利用!アプリをApp Store Connectにアップロードしてみると、下記メールが返信されました。
ITMS-90078: Missing Push Notification Entitlement – Your app appears to register with the Apple Push Notification service, but the app signature’s entitlements do not include the ‘aps-environment’ entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the ‘aps-environment’ entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see
App Store Connect
ググってみるとほとんどのサイトはXCODEの設定の問題となっていました。
内容は下記の手順で「Push Notifications」を選択して再度アーカイブしてアップロードすれば、エラーメールは送信されないという内容です。
- Xcodeを開く
- TARGETSを選択
- signing & capabilitiesを選択
- +Capabilityのボタンを押す
- 検索枠にpushと入れてPush Notificationsを選ぶ
しかし、私の場合プッシュ通知の設定にもともと問題がありませんでした。
アップルテクニカルサポートに問い合わせ
原因がまったくわからないため、アップルテクニカルサポートに問い合わせる事にしました。
このアップルテクニカルサポートとのやり取りで、ipaファイルにプッシュ通知の署名情報が入っているか確認してほしいという依頼がありました。
この依頼が今回の作業の発端です。
ipaファイルを開きプッシュ通知設定の確認方法
ターミナルが重要なツールになりますので、操作に慣れておきましょう。
手順1:ipaファイル作成とexport
手順1-1:いつも通りアーカイブ行います
手順1-2:オーガナイザーが自動表示されます
手順1-3:「Distribute App」ボタンを押下し、「App Store Connect」を選択します
手順1-4:「export」を選択します
手順1-5:Team、Certificate、Provisioning profileを選択
手順1-6:「Export」を選択
手順1-7:ipaファイルの作成とダウンロードができました
手順2:ipaファイルのunzip
次からの手順はターミナルでの作業になります。
手順2-1:ターミナルを起動
手順2-2:作成したipaファイルのフォルダに遷移
「cd」コマンドを使用します。
cd <格納フォルダのアドレス>
手順2-3:ipaファイル解凍
unzipコマンドでipaファイルを解凍します。
unzip <パッケージ.ipa>
「Payload」フォルダに「.app」が格納されていることを確認。
codesignコマンドで署名情報表示
codesignコマンドで署名情報をターミナルに表示させます。
codesign -d –entitlements :- Payload/<パッケージ.app>
赤字部分が情報になります。
署名情報の確認
メモ帳に張り付けて整理してみます。
プッシュ通知の設定がされている場合、本当はここに「aps-environment]」のkeyが設定されています。
<key><aps-environment><key>
私の場合されていないですね!
今回の問題は、ipaファイルにプッシュ通知の設定が反映されていない事が原因です。
まだ、この原因は判明しておりません。
まとめ
App Store Connectにアップロードするipaファイルのプッシュ通知設定を確認する方法
- ipaファイルをexportする
- codesignコマンドで署名情報をターミナルに表示
- <key><aps-environment><key>の存在を確認
この方法でipaファイルにプッシュ通知の設定が反映されているか確認をする事ができます。
今回はプッシュ通知の設定が反映されていない事がわかったのですが、原因がわかりません。
簡単にチェックする事ができますので、覚えておくと便利だと思います。
それではまた!