12

サンドボックスで APNS フィードバック サービスをどのようにテストしますか? 言い換えれば、デバイスを強制的にフィードバックに含めるにはどうすればよいでしょうか?

4

3 に答える 3

11

「はい、どうやってそこに何かを表示させるのですか?」という最初の質問から、実際には、彼のテストではデバイスが返されなかった、つまり、通知が正常に送信された可能性があるにもかかわらず、 iPhone / iPadは、FBサーバーにクエリを実行するたびに、アプリがデバイスから削除されなかったために何も返されませんでした。したがって、サーバーは、障害が発生したデバイスがないため、「0デバイスが見つかりました」と応答し続けます。通知を受信します。

そのため、アプリがデバイスから削除された場合にのみ、通知サーバーはフィードバックを提供します。つまり、アプリを削除したデバイスのリストで最終的に応答します。

ローカルサーバーのアイデアもかなり良いです。

-アレックス

==============

これは、少なくとも1つのプッシュイネーブルアプリを保持するというAppleの提案に対する厄介な副作用です。スレッドに投稿されたドキュメントに対する私の提案は次のとおりです。

「フィードバックサーバーの問題」では、2つのシナリオに注意するのが興味深いです。1)アプリが実稼働モードで実際のデバイスにデプロイされている。2)アプリが開発デバイスのサンドボックスにデプロイされます。

1)最後の1つのアプリ(正しいと思います)を残すためのヒントは正しく、説明どおりに機能するはずです。ここでは問題はありません。

2)では、最後のアプリが開発アプリでもあることを確認する必要があります。言い換えれば、物事を簡単にするために、「ラストマンスイッチ」を押すためだけにある2番目の「サンドボックスアプリ」を用意します。

私が抱えている問題は、開発アプリを削除すると、デバイス上に他のプッシュ対応アプリがある場合でも、サンドボックスフィードバックサーバーで何も起こらないということです。ただし、それらはすべて本番アプリであるため、「レポート」されます。 (あなたがそう言うことができるなら)本番フィードバックサーバーに。

アプリの2番目のコピー(サンドボックスアプリ)は、サンドボックスサーバーへの永続的な接続を維持できるようにするためのものです。次に、「テスト中のアプリ」を削除すると、サンドボックスアプリが報告します。サンドボックスに移動すると、実際のテストを実行できます。

これが正しいことを願って...toniteをテストします。

于 2011-02-20T02:32:54.293 に答える
6

デバイスからアプリを削除した場合、そのデバイスに 1 つの通知を送信するだけで、次回フィードバック サーバーに接続したときにそのデバイスが返されます。その後、別の通知をそのデバイスに送信しようとするまで、デバイスは返されません。

また、フィードバック サーバーへの接続の間にデバイスに複数の通知を送信すると、拒否された通知ごとにデバイスが返されます。

于 2010-05-19T22:42:36.997 に答える
4

これに対する回答が受け入れられたことに気づきましたが、電話/iPod からアプリケーションを頻繁にインストールおよび削除することなく最初のテストを行うために、フィードバック サーバーとして機能する非常に単純な ruby​​ スクリプトを作成しました。代わりにこのサーバー (localhost:2196) に接続し、そこから読み取るように Ruby APNS クラスを構成しました。SSL 接続を開始しなかったので、代わりにベース ソケットを使用しました。以下は、サーバーを「ホスト」するために使用したスクリプトです。

#!/usr/bin/env ruby

require 'socket'

puts 'Opening server'
server = TCPServer.open(2196)

loop {
    puts 'Waiting for connection'
    client = server.accept

    puts 'Connected preparing data'
    data = [1, 2, 3, 4, 0, 32, ['d41c3767074f541814c2207b78f72e538569cb39eae60a8c4a8677549819e174']]
    puts 'Data for delivery: ' + data.inspect

    begin
        data[6] = data[6].pack('H*')
        data = data.pack('c6a*')

        loop {
            puts 'Writing Data'
            client.write data

            puts 'Sleeping for 5 seconds'
            sleep 5
        }
    rescue
    end
    puts 'Done writing, closing'
    client.close
}

このスクリプトはリッスンし、5 秒ごとに接続を受信すると、ソケットにパケットを書き込みます。接続しているソケットが閉じた場合 (たとえば、フィードバック プロセスを強制終了した場合)、このスクリプトはリセットされ、新しい接続を待ちます。

標準の Ruby ソケットだけで SSL 接続を使用しないでください。幸運を!

于 2010-06-18T04:40:23.207 に答える