2

私は、すべてのサービス提供者が Web 上の設定に詳細を入力し、アプリ名、アプリ アイコン、新しいバンドル ID を変更してアプリ ストアにアプリをアップロードできるテンプレートのようなアプリケーションを作成しています。ここまでは良かったのですが、私にとっての問題は、このアプリにプッシュ通知サービスがあることです。

そして、すべてのバンドル識別子に一意のプッシュ証明書が含まれている必要があるというアップルのドキュメントを読みました。そこから .pem ファイルを作成します。つまり、アプリごとに異なる pem ファイルが作成されます。

しかし、すべてのアプリで機能する単一の pem ファイルが必要です。誰かが私に何をすべきか、またはそれを行うための適切な方法を教えてもらえますか?

4

1 に答える 1

3

残念ながら、あなたが求めていることは現在、Apple Push Notifications Service では実現できません。まったく同じ鍵ペアを使用して証明書署名要求 (CSR) を生成するために、openssl でいくつかのオプションの引数を概念的に使用できますが、根本的な問題は、証明書を作成する最初のステップでの「証明書、識別子、およびプロファイル」ツールに由来します。新しい APNS 証明書:

APNS 証明書生成用の明示的な AppId の選択

補足説明文には次のように書かれています。 「すべてのアプリ ID」を指定します。

「どのアプリ ID を使用しますか?」という仮説の世界に簡単に足を踏み入れると、質問は存在せず、代わりにCSRをアップロードするステップに直接進みました.Appleから返される証明書は、まさにあなたが望むことを行います.APNSペイロードを構築するために使用するサーバーを、正当に属するサーバーとして認証します. APNS ゲートウェイにプッシュを送信する権限があります。ただし、重要なセキュリティ上の懸念が生じます。この 1 つのサーバー (または APNS 用語では「プロバイダー」) を使用して任意のアプリにプッシュを送信できる場合 (デバイスの APNS トークンを知っている限り)、プロバイダーを使用してアプリにプッシュを送信できない理由は何ですか? または、懸念を覆すとしたら、許可された APNS プロバイダーを使用してアプリのプッシュ通知を送信するのを妨げるものは何ですか? または、誤った情報で顧客にプッシュを送信する (例: 「残念ながら MyApp は閉鎖され、App Store を終了します。MyApp は、顧客がサービスを維持するために CompetitorApp を購入することをお勧めします!」)。ありがたいことに、私たちが住んでいないこのぬるぬるした、詐欺が発生しやすい世界...

代わりに、Apple はサードパーティの開発者に、特定の APNS 証明書からのペイロードが受け入れられる AppId を選択するよう要求します。その後、どうにかして顧客のアプリのデバイス トークンを取得できたとしても、サーバーの秘密鍵を取得できないため、詐欺、スパム、またはその他の不正な APNS ペイロードを顧客に配信できませんでした。

わかりました、私はすでにそれを手に入れました!単一の証明書を複数のアプリ ID に使用できないため、どうすればよいですか?

質問の背景を考えると、アプリを高度に構成可能にするために努力したようです。あなた自身の言葉で「[it] はテンプレートのようなものです」 - これは、アプリのサーバー側で、どのアプリがデータ要求を行っているか、どのプロバイダーのデータ要求を行っているかを特定できるメカニズムが整っていることを示唆しています。送り返すデータ。APNS プロバイダーのロジックには、同様のインテリジェンスが組み込まれている必要があります。これらのサーバー側の区別を現在どのように行っているかによっては、既存のロジックの一部を再利用できる場合があります。あなたはその電話をかけなければならない人です。この回答の残りの部分では、APNS が課すアプリごとに 1 つの pem の要件のためにプロバイダーをセットアップする方法について、高レベルのアプローチを提供します。一般に:

  • 署名済み .pem のコピーを APNS プロバイダーの安全な場所に置きます
  • プロバイダーの「デバイス トークンの登録」API を更新して、デバイス トークンと、このトークンが有効なアプリを一意に識別する何らかの方法の両方を受け入れるようにします (...おそらく、アプリ ID 自体と同じくらい簡単です!)
  • iOS アプリを更新して、その APNS デバイス トークンとそのアプリ識別子の両方を、プロバイダーの新しく更新された「デバイス トークンの登録」API に渡します。
  • ペイロードを APNS ゲートウェイに配信するときに、正しい .pem を使用するようにプロバイダーのロジックを更新します。
  • 適切なプロセスのために、アプリケーションの .pem、データ、および関連するトークンを更新または廃止する手順があることを確認してください。

テンプレートから作成するアプリごとに、一意のアプリ ID と App Store 配布プロビジョニング プロファイルを生成する必要があります。この初期設定を行うときに、APNS 証明書を要求して、3 つのデータすべてをアプリ固有の設定として扱うこともできます。APNS 証明書を他のアプリの .pem ファイルと一緒にプロバイダーにインストールして、APNS ペイロードを Apple に送信するときに取得できるようにします。

以前に APNS 作業を行ったことがある場合は、プロバイダーがアプリ固有のデバイス プッシュ トークンの追跡、APNS ペイロードの生成と Apple への送信、およびオプションで APNS フィードバック API からの情報の使用を担当していることをご存知でしょう。アプリがプロバイダーに接続してそのトークンを登録するとき、APNS ペイロードを送信するための適切な .pem を選択できるように、そのトークンが有効なアプリを知る必要もあります。これが重要です。どのトークンがどのアプリ ID に対応するかを知る方法がない場合、ペイロードの生成およびディスパッチ中に適切な .pem ファイルを選択することができません。

ソフトウェアの更新と廃止は、すべてのソフトウェアの重要な部分ですが、常に注目されるとは限りません。.pem ファイルを更新する方法 (現在のファイルの有効期限が切れる前に毎年行う必要があります) と、他のアプリを中断せずにアプリケーションを廃止する方法を検討したことを確認してください。あなたのプロバイダーサービス。

これらの各質問に対する答えは、アプリのさまざまなコンポーネント、Xcode プロジェクトの構成、サーバー側のテクノロジ、およびサーバー側のロジックをどのように設計したかによって大きく異なります。ソフトウェアを構成する詳細に基づいて適切な判断を下せるのは、あなたまたはあなたのチームだけです。幸運を祈ります。状況をお知らせください。

于 2013-07-15T04:38:15.323 に答える