无需用户交互即可有效自动刷新UITableview(IOS 5)

时间:2012-04-10 11:55:10

标签: xcode ios5 push-notification

我从来没有使用推送通知编写应用程序,我有一个非常笼统的问题。 我想自动刷新UITableview的数据(来自web服务),而不需要“拉动刷新”或任何其他用户的交互。是否可以使用推送通知来通知我的应用程序数据更改,以避免每隔xx秒轮询浪费带宽和电池?

换句话说,当我的应用程序在前台运行时(也许)我可以处理消息而用户不会收到弹出窗口但是会发生什么呢?

有没有其他方法可以达到相同的效果?

我将使用IOS 5.0+

先谢谢

2 个答案:

答案 0 :(得分:4)

您可以创建一个服务器HTTP-Request,只有在发生更改时才会返回。然后,如果此响应不为空,您可以重新加载数据。您可以通过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
    }
}

答案 1 :(得分:1)

当您的应用运行时,您可以注册接收推送通知。然后,只需要实现该方法,使其更新您的tableview。

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

非常好documented by Apple