理解できてない故に如何にも陥る話。
最初はxcodeビルド端末ではプッシュ通知が確認できているんだけど、testflight越しにインストールしてもらってる他の端末で確認できてない。
方々ググった挙句、testflightでもAPNs証明書はsandboxではダメで、prodを使わないとならないと発覚
TestFlight Beta Testing 内部テスト で PUSH通知を利用 – Qiita
More than 5 years have passed since last update. TestFlight Beta Testingの内部テスト時に、PUSH通知を利用するには、 Production用の証明書(Certificate)が必要です。 Development用の証明書のみでは、PUSHが届きません。 Certificate Listを開く 右上の「+」をクリック Productionの「Apple Push Notification service SSL (Production)」を選択してContinue 流れに従うと証明書が発行される できた証明書をPUSHサーバーで利用する。今回はParse.comを利用していたので、作ったProduction用の証明書から.p12ファイルを作成し、Parseにアップロードしました。 (ParseでのPUSHの使い方はParseの公式ドキュメントを参照してください。) Production用の証明書が作成されていない場合、iTunes connectへのアップロード後、以下のようなメールが届きます。 Missing Push Notification Entitlement – Your app appears to include API used to register with the Apple Push Notification service, but the app signature’s entitlements do not include the “aps-environment” entitlement.
仕方ないので上司にproduction版のcsrファイルを作ってもらい、そのファイルのみを私のキーチェーンアクセスに読み込んだら、
証明書の名称の先頭に▶︎が無い
そりゃそうだ、秘密鍵が欠落していたorz
大学の頃履修した暗号学を思い出しながらよく考えると証明書の発行プロセスを考えると至って当たり前な話で
CertificateSigningRequest.certSigningRequestを作った同一人物がcerファイルを読み込んだ場合にのみ秘密鍵が取得できて然り。
つまり.p12ファイルの取得までは全て同じ端末でやるべき。
この辺の証明書周りはどのプラットフォームを使っても同じなのでどこかにまとめておく。
コメント