我从来没有使用推送通知编写应用程序,我有一个非常笼统的问题。 我想自动刷新UITableview的数据(来自web服务),而不需要“拉动刷新”或任何其他用户的交互。是否可以使用推送通知来通知我的应用程序数据更改,以避免每隔xx秒轮询浪费带宽和电池?
换句话说,当我的应用程序在前台运行时(也许)我可以处理消息而用户不会收到弹出窗口但是会发生什么呢?
有没有其他方法可以达到相同的效果?
我将使用IOS 5.0+
先谢谢
答案 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 {