2012-04-10 8 views
2

プッシュ通知付きのアプリケーションをコーディングしたことがなく、私は非常に一般的な質問があります。 私は、「プル・トゥ・リフレッシュ」や他のユーザーとのやりとりをせずに、(Webサービスから)UITableviewのデータを自動更新したいと考えています。帯域幅とバッテリーを無駄にするxx秒ごとにポーリングを避けるために、プッシュ通知を使用してアプリケーションにデータ変更を通知することは可能ですか?言い換えれば ユーザーインタラクションなしでUITableviewの有効な自動リフレッシュ(IOS 5)

、私のアプリがフォアグラウンドで実行されている間(多分)私はメッセージを処理することができ、ユーザーが文句を言わないポップアップを受けるが、何がそうでない場合はどうなりますか?

同じ結果を得る他の方法はありますか?

私は、あなたが変更があった場合のみ、何かを返すサーバーのHTTPリクエストを作ることができIOS 5.0+アドバンス

答えて

4

感謝を使用するつもりです。次に、この応答が空でない場合は、データをリロードすることができます。あなたはNSTimerによって呼び出すことができる機能です。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(get) userInfo:nil repeats:YES]; 

-(void)get { 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/app.php"]]; 
    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    if(![responseString isEqualToString:@""]) { 
    // reload 
    } 
} 
+0

またはこれを 'didReceiveLocalNotification'と組み合わせてください(上のStephen Darlingtonの回答) – Dion

+0

ありがとう!これは大いに役立ちます。残念ながら、私には評判のポイントがないので投票できません。 – vassilag

+0

あなたは投票を避けたかったと言いました!身体にデータがないという理由だけで、無線がオフになっていることや、データが転送されていないことを意味するわけではありません。 –

1

アプリケーションが実行されているときは、プッシュ通知を受け取るように登録することができます。次に、メソッドを実装してテーブルビューを更新するだけです。

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 

かなり良いです。documented by Appleです。

+0

スティーブンありがとうございます。 – vassilag