5

私の職場では、1 つの iOS アプリの開発が完了し、2 つ目のアプリに着手しようとしています。

そうする前に、証明書とプロファイル、およびビルド環境に関するいくつかのことを明確にしたいと思いました。

Q1: Apple アカウントは配布証明書を 1 つしか持つことができないため、両方のアプリでこれを使用するという考えは正しいですか? (プロビジョニング プロファイルに存在することにより、新しいアプリの新しいアプリ ID を含む新しいプロファイル セットを作成します)。

Q2: キーチェーンにインストールされるのはプロファイルではなく証明書であるため、現在のアプリケーション用に現在セットアップされているビルド マシンで新しいアプリケーションをビルドする必要があると思います。

Q3: Q2 に関連して、現在のアプリと新しいアプリのビルドを別々の物理ビルド マシンに配置する (またはビルド マシンを仮想マシンに分割する) 必要があるかどうか、または良い考えかどうか疑問に思っています。 . 2 つのアプリが異なる証明書を使用している場合、これが必要だと思います (または、少なくともキーチェーンを分割します)。証明書とキーチェーンの問題が発生するのではないかと心配しています。しかし、Q1 に対する答えが配布証明書が 1 つしかないという場合、理論的にはアプリケーションごとに個別のビルド マシンを用意する必要はないのでしょうか?

Q4: どちらのアプリもプッシュ通知を使用しますが、同じプッシュ証明書を両方に (もちろん別のプロファイルで) 使用しても問題ありませんか?

ティア

4

1 に答える 1

4

証明書とプロビジョニングは扱いにくいトピックになる可能性があるため、うっかりして面倒なことになる前に、まず質問することをお勧めします。

Q1: アカウントごとに配布証明書は 1 つだけですか?

はい、個人および企業のアカウントは、会員年度ごとに 1 つの有効な配布証明書に制限されていますが、この証明書は、個人または企業が必要と判断した場合 (公開/秘密キーの侵害、従業員の解雇)、いつでも取り消され、再発行される場合があります。秘密鍵へのアクセスなど)。最近、 「コード署名 ID とは何ですか?」という質問に回答しました。これは、プロビジョニング プロファイルにエンコードされる情報と、デバイス ビルドの実行時に Xcode がこの情報を検索する方法に関する追加のコンテキストを提供するのに役立つ場合があります。使用するプロビジョニング プロファイルの種類 (開発と配布) に応じて、プロビジョニング プロファイルでエンコードされる証明書とテスト デバイスの数と種類が変わることに注意してください。

また、準備中/作成中の 2 番目のアプリケーションのアプリ ID/バンドル ID でエンコードされたまったく新しいプロビジョニング プロファイルのセットを使用して、既存の配布証明書を再利用するという点でも完全に正しいです。

Q2: キーチェーンにインストールされるのは、プロビジョニング プロファイルではなく証明書ですか? ビルド マシンはどのような影響を受けますか?

はい、これは正しいです。開発証明書と配布証明書の両方がキーチェーンにインストールされ、プロビジョニング プロファイルはコード署名操作で使用するために Xcode 内の特別なディレクトリにインストールされます。

ビルド マシンのセットアップが完了し、最初のアプリの作業が完了したと仮定すると、多くの大変な作業が完了したことになります。まだやらなければならないことのハイレベルなリスト:

  • 既存の証明書を使用して、新しい AppId の一連のプロビジョニング プロファイルを生成します
  • ビルド環境にプロビジョニング プロファイルをインストールする
  • Xcode プロジェクトの「コード署名 ID」ビルド設定が、新しく作成されたプロビジョニング プロファイルを使用するように構成されていることを確認するか、プロジェクト構成で許可されている場合は「自動プロファイル セレクター」を使用するのがより理想的です。
  • ビルド システムを構成して、実際に新しいアプリを作成します。

これらの高レベル タスクの特定の HOWTO は、プロジェクトとビルド システムのセットアップ方法に多少依存しますが、通常、最初のアプリを構築するときに使用したのと同じワークフローに従う必要があります。

Q3: ビルド環境を別のマシンに分割する必要はありますか?

この質問の「必要な」部分に関しては、いいえ、これらのアプリを並べてビルドできるようにするために、ビルド環境を物理的または仮想的に分離する必要はありませんが、ビジネスの場合はそうすることを選択できますアプリケーションごとに専用のビルド環境が必要になるようなニーズがありました。

技術的な観点から見ると、プロビジョニング プロファイルは、並行して構築できるようにするために必要なパーティショニングの 99% を提供します。物理的または仮想的なパーティション分割が必要になる状況に遭遇するのは、2 つ以上の iOS 開発プログラムのメンバーであり、これらの各チームによって発行された証明書の「共通名」が一致した場合のみです (例: 「iPhone ディストリビューション: MyCompany」はチーム 1 からの証明書の共通名であり、チーム 2 によって発行された証明書と完全に同一でした)。このような場合、Xcode で次のような警告とエラーが表示されます。

コード署名エラー: 証明書 ID 'iPhone ディストリビューション: MyName' がキーチェーンに複数回表示されます。コードサイン ツールでは、1 つだけ存在する必要があります。

それ以外の場合はすべて、証明書とプロビジョニング プロファイルの両方がインストールされていて、Code Signing Identity の値が正しく設定されていると仮定すると、Code Sign はそれ自体で問題を解決できます。

Q4: 両方のアプリで同じプッシュ証明書を再利用しても問題ありませんか?

これはしっかりした「いいえ」です。各アプリ ID には、プッシュ通知を含む一連の資格が付随する独自のプロビジョニング プロファイルのセットがあります。プッシュ通知資格を使用して新しいプロビジョニング プロファイルを作成する場合、新しいプッシュ証明書を生成するよう求められます -- 既存の証明書を Apple に提供する機会はありません。これは、プッシュ通知の「プロバイダー」(Apple のプッシュ ゲートウェイに送信されるプッシュ通知ペイロードを作成するサーバー) が、iOS エコシステム内で見られるのと同様の方法でサンドボックス化されるようにするために行われます。 AppId ごとのサンドボックス。

セキュリティの観点から、これにより、Apple のプッシュ ゲートウェイで有効なプッシュ トークンとペイロードを提供するだけで、攻撃者がスパムのようなプッシュ通知をユーザーに送信するのを防ぐことができます。プロバイダー コードの 2 番目のインスタンスをセットアップし、新しいプロビジョニング プロファイルの作成中に生成されたプッシュ証明書を使用するか、既存のプロバイダーを更新して、アプリケーションごとのレベルでプッシュ通知トークンを追跡し、プッシュ通知ペイロードの送信時に適切な証明書を使用します。アップルへ。残念ながら、この決定を行うことができるのはあなた (またはあなたの同僚) だけです。その決定は、既存のプロバイダーの技術的能力と、あなた/あなたの会社が同じプロバイダー インスタンスでプッシュ通知を統合するリスクの程度によって左右されるためです。

他の人はここにパイプを張って、独自のプロバイダーをセットアップする方法について追加の洞察を提供するかもしれませんが、あるアプリのプッシュ通知の更新がまったく別のアプリのプッシュ通知を壊す可能性があるというシナリオを防ぐために、完全に別のインスタンスを使用しました.

于 2013-04-23T19:46:52.250 に答える