8

Rails アプリで APNS gem を動作させようとしています。私は数か月前にこれを最初にセットアップしましたが、iOS デバイスへのプッシュ通知は問題なく機能していました。現在、私のアプリはライブであり、通知が送信されなくなっていることがわかりました。APNS gemはしばらく更新されていないので、後でさまざまなフォークを試しましたが、すべて同じ効果が得られました。

これが私がやっていることです:

APNS.host = 'gateway.push.apple.com' 
APNS.pem  = Rails.root + "lib/push_production.pem"
APNS.port = 2195 
APNS.send_notification(device_token, "Test send" )

そして結果は?

=> nil

どの方法からもフィードバックはなく、確認できるログファイルもありません。証明書の生成と再生成を試みました。そこではすべて問題ないようです。山かっこなし、文字グループ間のスペースなしで、さまざまな方法でデバイストークンを表現しようとしました... APNSは気にしません。

これに関連する可動部品の数を考えると、これが難しい質問であることはわかっています。しかし、誰がどこを見るべきかを提案できますか?

4

3 に答える 3

2

公式ドキュメントには次のように書かれています:

通知を送信し、APNs が通知の形式が正しくないか、またはその他の理由で理解できないことを検出した場合、接続を切断する前にエラー応答パケットを返します。(エラーがない場合、APNs は何も返しません。)図 5-3 は、エラー応答パケットの形式を示しています。

したがって、gem が何も返さないことは理にかなっています。Apple のサーバーは自分が何をしているのかを通知しないからです。また、gem の github ページを見ると、指定された例は の戻り値を処理していませんAPNS.send_notification

前回 Apple Push Notifications を使ったときは、ほとんどブラック ボックスのように動作し、ほとんど何も返されませんでした。

于 2012-11-20T16:38:57.227 に答える
2

私は答えを見つけたと信じています。Urban Airship にアカウントを登録した後、自分の電話にテスト メッセージを送信しようとしましたが、やはり役に立ちませんでした。しかし、この人たちは実際に行動を共にしているので、エラー メッセージを表示することができました。デバイス トークンが無効であることがわかりました。なんで?サンドボックス化されたバージョンのアプリによって生成されたためです。

はい、私のアプリはストアにありますが、プッシュ通知の権利が追加される前に私の App Store 配布プロファイルが生成されたことが判明しました。そのため、私の実行可能ファイルで codesign ツールを実行すると、権利が表示されません。次に例を示します。

Diomedes:Release-iphoneos aaron$ codesign -dvvvv --entitlements - Tiberius.app

そのコマンドは、値が「production」のキーを含む plist を表示する必要があります。私のリリースにはそのキーがまったくありませんでした。

実際、Provisioning Portal でまったく新しい配布プロファイルを生成することを余儀なくされましたが、最終的に正しい資格が含まれていました。私はまだこれをテストできていません (8 日間の App Store レビュー、誰か?) が、これが問題だと感じています。

PS Urban Airship のサイトのこの記事は、私を助けるのに役立ちました。

于 2012-11-21T03:45:35.323 に答える