0

コードがクラッシュしたときに実行される例外ハンドラーがありますが、サーバー (parse.com) にメッセージを送信して、プレーヤーが再生を停止したことをサーバーに知らせる必要もあります。

void onUncaughtException(NSException *exception)
{
    NSLog(@"uncaught exception: %@", exception.description);
    [self playerLoggedOut];
}

playerloggedOut 行は、宣言されていない識別子 self のエラーを示します。

例外が発生したときに playerLoggedOut メソッドを実行するにはどうすればよいですか?

4

3 に答える 3

1

まず第一にself、メソッドではなく関数であるため、不明です。関数はオブジェクト コンテキストで実行されないため、self を認識しません。

Caleb が前述したように、サーバーがクライアントからのメッセージをしばらく (秒単位で) 受信しない場合、自動的にプレイヤーをログアウトさせるサーバー側のウォッチドッグが必要です。自動的にログアウトされるのを防ぐために、ユーザーが非アクティブ (ただし、まだプレイ中) の場合、 のインスタンスを使用してクライアントにハートビートを実装できますNSTimer

于 2013-08-20T19:13:00.197 に答える
1

例外が発生したときに playerLoggedOut メソッドを実行するにはどうすればよいですか?

ネットワーク接続の確立やメッセージの送信などの長いプロセスを開始することはできません。あなたの最善の戦略は、サーバーがレコードなどを更新できるように、情報を保存してアプリの再起動時に送信することです。または、クライアントがサーバーに毎秒チェックインするようにしますt。のような間隔内にサーバーがクライアントから連絡がない場合、2tクライアントが機能を停止したと見なされます。

于 2013-08-20T17:40:23.177 に答える