0

私は現在、プラットフォーム iOS 用のアプリを開発しているチームに所属しています。このゲームのすべてのスコアは mysql ベースに送信され、Web ページに表示されます。このデータを mysql ベースに送信するには、もちろんインターネットが必要です。

私の質問は、このスコアを電話またはタブレットでローカルに保存し、デバイスがインターネット信号を受信したときにスコアを mysql ベースに自動的に送信する方法を知っている人はいますか? デバイスからデータベースにデータを送信するために使用されるコード:

-(void) startNewGame:(ccTime) delta {

    NSString *strURL = [NSString stringWithFormat:@"http://erlpil.com/stumpp/settscore.php?poeng=%i", score];
4

1 に答える 1

0

はい、Apple が提供する Reachability と呼ばれるクラスを使用してインターネット接続ステータスを確認し、NSNotificationCenter を使用してインターネット接続ステータスを待機し続けることができます。したがって、上記の @trojanfoe による方法を使用して、スコアを mysql データベースに送信できます。

インターネットの状態を確認するには、まず到達可能なホストがあるかどうかを確認します。到達可能な場合は、インターネット接続があることを理解しています。

- (BOOL)verifyInternetStatus
{
    Reachability *reachable = [Reachability reachabilityWithHostName:@"www.google.com"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];
    if (internetStatus == NotReachable) {
        // there's not internet connection, therefore we save the scores locally
    }
    else {
        // send the scores to the database
    }
}

インターネットの状態が変化すると、 Reachability クラスは NSNotificationCenter を介してオブザーバーに、キーを使用してインターネットの状態が変化したことを通知しますkReachabilityChangedNotification。したがって、クラスをこのキーのオブザーバーとして追加する必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(verifyInternetStatus:) 
                                             name:kReachabilityChangedNotification
                                           object:nil];

これはそのための 1 つの方法です。verifyInternetStatusスコアを送信する場合は、スコアを送信するかローカルに保存するメソッドを呼び出します。

お役に立てば幸いです。

編集:

申し訳ありませんが、クラスを忘れてしまいました:

https://developer.apple.com/iphone/library/samplecode/Reachability/index.html

于 2013-02-19T12:55:41.733 に答える