4

私の PhoneGap アプリケーションは、「一時停止」イベントがキャプチャされたときに、(接続ステータスを更新するために) Websocket メッセージをサーバーに送信する必要があります。

アンドロイド

Android デバイスでは、次のコードを使用しても問題はありません。

document.addEventListener("deviceready",function(){
    document.addEventListener("pause", function() {
        socket.emit('changeStatus', 'incative');
    });
    document.addEventListener("resume", function() {
        socket.emit('changeStatus', 'active');
    });
}, false);

iOS

iOS では、これは別のやかんです。実際、「一時停止」イベントに関する PhoneGap の公式ドキュメントは次のとおりです。

iOS の癖

一時停止ハンドラーでは、Objective-C を通過する呼び出しは機能せず、アラートなどの対話型の呼び出しも機能しません。これは、console.log (およびそのバリアント) を呼び出すことができないこと、またはプラグインまたは PhoneGap API からの呼び出しができないことを意味します。これらは、アプリが再開したときにのみ処理されます (次の実行ループで処理されます)。

彼らが「Objective-C を経由する呼び出しは機能しない」と言うとき、ネットワーク アクセスの使用について話しているのでしょうか? 実際、iOS でアプリをテストすると、アプリケーションを再開すると値が「inactive」の「changeStatus」メッセージが送信されます。

ここに私の2番目の質問があります: 「一時停止」イベントをキャプチャした後、phonegap iOSアプリでサーバーにアクセスすることは可能ですか?

ご協力いただきありがとうございます

4

1 に答える 1

0

iOS のいくつかのセキュリティ上の問題のため、それが可能だとは思いません。別の解決策として、ソケット サーバー エンドでエコー機能を実行できます。これにより、特定の間隔で特定のユーザーに継続的にメッセージが送信されます。ユーザーがそのメッセージに応答した場合、そのユーザーをアクティブなユーザーと見なすことができます。それ以外の場合は、そのユーザーを非アクティブなユーザーと見なします。

また、ユーザーが自分のアクティビティ ステータスを送信することもお勧めできません。ユーザーが接続を失った場合にどうなるかを考えてみてください。彼がアクティブなのか眠っているのかを知ることはできません..したがって、サーバー側でpingを実行して確認することをお勧めします..

于 2013-11-08T16:52:07.710 に答える