2

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

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

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

我将使用IOS 5.0+

提前致谢

4

2 回答 2

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
    }
}
于 2012-04-10T11:58:51.280 回答
1

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

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

Apple有很好的记录。

于 2012-04-10T12:00:59.347 回答