2

EA フレームワークで問題が発生しています。アプリがフォアグラウンドにあるとき、アクセサリがセッションを開いてストリームを取得し、デリゲートを設定して、メインの実行ループでストリームをスケジュールすると、すべてが機能します

アクセサリは私の iPhone に毎秒 ping を送信しており、これらの ping はストリーム デリゲートで読み取られます。この ping は一種のハートビートです。iPhone が数秒間 ping を受信しない場合、ユーザーは警告を受けます。

このアプリはバックグラウンドで動作するはずなので、対応するキーを plist ファイルに追加しました

アプリがバックグラウンドで実行されると、すべてが 10 ~ 30 分間正常に動作し、突然 7 ~ 8 秒間、ストリーム デリゲートが呼び出されず (ただし、ping はアクセサリから送信されます)、その後 1 秒でデリゲートが呼び出されます。が 8 回呼び出されます (最後の 1 秒間に送信されたすべての ping に対して) アプリが 8 秒間中断されたようで、この間隔で発生したすべてのイベントがキューに入れられ、後で配信されます。問題は、この 8 秒間にアプリケーションが ping を受信しないため、ユーザーに誤った警告が表示されることです。

私はこの行動を理解していません。誰かが同じ問題に直面していますか? メインの実行ループでストリームをスケジュールするのではなく、バックグラウンド スレッドを介してストリームをポーリングすることを検討しています。

ありがとう、

4

0 に答える 0