2

ここでプッシュ サービスに問題が発生しています。アプリはしばらくの間 AppStore にあり、初めてプッシュを試してみたかったのです。すべての人に送信するのではなく、私のデバイスにのみ送信します。

このガイドに従ってすべてをセットアップしたところ、開発中に完全に機能しました。その後、アプリが AppStore で公開されたときに、配布に関しても同じことを行いました。(たぶんこの順番じゃない)

いずれにせよ、公開後にプッシュを実際にテストしたことはありません (私たちのサービスは一種のニュース サービスであり、選択したときにすべてのデバイスに通知を送信することになっています)。デバッグを実行して、デバイスのトークンを残りのテーブルとは異なる SQL テーブルに登録し、アプリストアから直接アプリを再ダウンロードしました。通知を登録するように求められることはありませんが、これを初めて行ったことはわかっており、[設定] で確認することもできます。

.php Web サイトを使用して、テーブル内の「すべての」デバイス (現在は自分のデバイスのみ) にメッセージを送信しましたが、何もしません。iPad に同じアプリをダウンロードすると、トークンがデータベースに追加され、新しいメッセージが送信されましたが、誰も受信しませんでした。

同僚のトークンを同じデータベースに追加し、彼は AppStore からアプリをダウンロードし、新しいテーブル内のすべてのデバイス (現在は 3 つのデバイス) にメッセージを送信し、彼だけがメッセージを受け取りました。

彼の電話には以前の重要なプロファイルがいくつか含まれている可能性がありますが、これはすべて生産中であり、何も言うべきではありませんよね?

私は今、何をすべきか見当がつきません。iPhone と iPad の両方が壊れているか、プッシュ サービスによって無視されているか、同僚の電話がこのサービスから通知を受け取る唯一のデバイスであると考えています..?

.php-code を使用fwriteして gateway.push.apple.com に通知を送信すると、メッセージがすべてのデバイスに正常に送信されたことが返されます (ただし、アプリがデバイスから削除された場合でも同様です。 )

自分のマシンから新しく作成されたリクエスト/キー/プロファイルなどから、.pem ファイルを自分で作成しました。

プッシュ サービスがデバイスに送信されない理由はありますか? それともこれまでのところ彼だけですか?証明書、プロビジョニング プロファイル、キーなどと関係がありますか?

編集

私たちは今、たくさんのことを試してきましkind of works nowたが、何が起こったのか、それが今どのように機能するのか、私にはわかりません.

私たちがしたこと: 私の同僚は彼の XCode プロジェクトを開き、すべてをリリースに設定し、ビルドを押しました。彼は私に AppName.app を送ってきたので、私はこれを iTunes にドラッグし、そのアプリをインストールするように指示しました。(AppStore バージョンと Xcode バージョンの現在の唯一の違いは、前に述べたように、DeviceTokens を別のテーブルに登録する必要があることです)。アプリを起動すると、4 つ目のトークンが登録されていることに気付きました。つまり、デバイスの deviceToken が変更されたということです。私はこれが時々起こることを知っていますが、それは問題ではありません. 新しいアプリと新しいトークンを登録した状態で通知を送ろうとしたところ、届きました。彼から送られてきたバージョンをアンインストールし、AppStore バージョンを再ダウンロードして、新しいデバイス トークンに通知を送信すると、それを受け取るようになりました。

どのように?

新しいテーブルと古いテーブルのデバイス トークンをクロス チェックすると、両方とも両方にあります。最初にデバイス トークンを取得するために使用した方法は、別の URL を使用してプロジェクトをビルドすることでした。最初に AppStore バージョンを削除する必要がありました。この「新しい」xcodeバージョンを実行すると、AppStoreバージョンに登録されていない新しいトークンが吐き出されるため、AppStoreバージョンを再インストールしてそのトークンのみに通知を送信しようとすると、まったく届きませんでした-これは、「現在の」deviceToken が新しいテーブルではなく、元のテーブルに隠されているためです。

新しい質問:

ビルドごとに deviceToken が変わるのはなぜですか?

私が考えていることのより明確なイメージを作るために:

1. AppStore-app launch - Table.regDeviceToken = 111;
2. AppStore-app launch2- Tabke.regDeviceToken = 222; //(it updated itself)
3. Xcode launch - Table2.regDeviceToken = 111; //This is the Token I found and used
4. AppStore-app lauch4 - Table1.regDeviceToken = 222 //This is hidden from me, I thought it would be 111.
5. Send push to Table2.DeviceToken=111; //Which does not work
6. Send push to Table.DeviceToken = 222; //Which works

そのため、Xcode でアプリを起動すると、OLD DeviceToken を取得しました。なぜこれが起こるのでしょうか?

4

1 に答える 1

1

さて、この問題による頭痛の種の後、私はついに答えを見つけました. 私たちのサービスは、これまでずっと正常に機能していました。

Xcode プロジェクトを使用してデバイス トークンを取得していたときに、Development用に作成されたデバイス トークンを取得しました。次に、 AppStore-appを使用してこのトークンにプッシュ通知を送信しようとしたところ、届きませんでした。

同僚からAppName.appファイルを取得したとき、それは明らかにProduction/Releaseモードであったため、データベースに異なる deviceToken が与えられまし

結論:アプリケーションは、 DebugRelease に対して異なる deviceTokens を提供します。

于 2013-01-23T17:51:32.297 に答える