kubou.dev();

好きな言葉は一石二鳥

iOSアプリをアップロードしたら「Missing Push Notification Entitlement」のメールが届いた

お仕事で別会社から引き継いだアプリで、ビルドしてAppStoreConnectにアップロードしたらこんなメールが届いた。

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 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.

「プロビジョニングファイルにはプッシュ通知の設定があるみたいだけど、アプリでプッシュ通知がONになってないよ」とのこと。
XCodeの「Capabilities」から「Push Notifications」をONにし忘れ、、
f:id:kubou:20190406011930p:plain

反映されたかどうかは、プロビジョニングファイルの情報を確認する。

確認方法

・APPをArchivesしてエクスポートする。ローカルに保存される。
・ターミナルでそのファイルの場所まで移動し、下記を実行。

unzip <パッケージ.ipa>

・次にターミナルで下記コマンドを実行。

codesign -d --entitlements :- Payload/<パッケージ.app>

・表示された中に下記文言があれば、プッシュ通知が入ってます。

<key>aps-environment</key>

OK。