1

サンドボックス APNS サーバー経由で Push Sharp を使用して iPhone デバイスに通知を正常に送信できますが、問題が発生しています。

.cer および .p12 ファイルを生成し、Windows 8 開発マシンに正常にインストールしました。

このチュートリアルを使用して、Windows 8 マシンに証明書をインストールしました。

昨日は問題なく動作しており、通知を正常に送信していました。システムをシャットダウンし、翌日コードを実行しようとすると、次の例外が発生しました。

メッセージが予期しないものであったか、フォーマットが不適切でした

Google で利用可能な別のソリューションを試しましたが、何も役に立ちませんでした。次に、マシンから証明書を削除してから再インストールすると、再び機能し始めました。

サービスをばかにするために、システムをシャットダウンして通知の送信が失敗したかどうかを確認しましたが、同じ例外で再び失敗しました。

証明書を再度削除し、再インストールして問題を修正しました。私は実際の問題は何ですか?PUSHSharp がシャットダウン後に通知の送信を停止する理由。

注: Windows ファイアウォールは無効になっています。何か案が?

4

3 に答える 3

1

過去数週間、PushSharp を使用してきましたが、この問題は発生していません。ただし、私の環境はWindows 7です。iPhone Developer Program Portal で適切なプッシュ通知証明書を作成したら、apn_developer_identity.cer などの名前のファイルをダウンロードする必要があります。まだ行っていない場合は、このファイルをキーチェーンのログイン セクションで開く/インポートする必要があります。

最後に、キーチェーンをフィルタリングしてログイン コンテナーの証明書を表示すると、証明書が一覧表示されます。証明書を展開すると、その下/添付されたキーがあるはずです。

適切な証明書を右クリックするか、Ctrl キーを押しながらクリックして、[エクスポート] を選択します。キーチェーンは、エクスポート先のパスワードを選択するよう求めます。一つ選んで覚えてください。最終的に .p12 ファイルになるはずです。ここで通知ライブラリとフィードバック ライブラリを使用するには、このファイルと選択したパスワードが必要です。

OpenSSL

open ssl を使用して PKCS12 形式のファイルを作成する方法は次のとおりです。開発者の秘密鍵 (キーチェーンからエクスポートできます) と CertificateSigningRequest??.certSigningRequest が必要です。

  1. apn_developer_identity.cer (der 形式) を pem に変換します: openssl x509 -in apn_developer_identity.cer -inform DER -out apn_developer_identity.pem -outform PEM}

  2. 次に、p12 秘密鍵を pem に変換します (4 文字以上のパスワードの入力が必要です): openssl pkcs12 -nocerts -out private_dev_key.pem -in private_dev_key.p12

  3. (オプション): 秘密鍵からパスワードを削除する場合: openssl rsa -out private_key_noenc.pem -in private_key.pem

  4. 証明書とキー (パスワードの有無にかかわらず) を取得し、PKCS#12 形式のファイルを作成します。 .p12

これらの手順を使用して p12 ファイルを生成したら、コンソールにスナップする必要はありません。次のようにコードを変更するだけです。

 var appleCert = File.ReadAllBytes("C:/Certificate/aps_dev_identity.p12");

お役に立てれば。

于 2013-11-29T21:24:07.433 に答える
0

最初に、このような C# コードで通知を実行できるかどうかを確認してから、インストールについて心配してください。コードを実行しようとしたときに同じメッセージが表示されました。インストールについては気にせず、.pem ではなくタイプ .p12 の証明書を使用していることを確認し、.p12 がパスワード。PC のコンソール C# アプリから iPhone に通知を送信できるようになりました。

于 2016-10-01T14:12:43.797 に答える