2015-10-06 28 views
0

我是一名编程初学者,我正在做的是使用Parse作为后端的Swift的简单iOS实时聊天应用程序。如何刷新用户界面而不采取行动

我在寻找的是如何让两个用户直接聊天,我的意思是假设有两个用户U1和U2,并且U1已经向U2发送了一条消息如何让U2看到该消息而不强迫他刷新这一页 ?!

任何建议都会有帮助!

+0

有些宽泛,但解析指向此http://博客.layer.com/getting-started-with-layer-parse /作为你想要做的一个例子。 – Abizern

回答

0

无需刷新!你可以使用线程来完成它。 Main_thread用于按时间更新UI时间,让代码附加到另一个队列(并发或序列化取决于你的目的)。使用block的方法(如果你不知道,发现它,它可以在Ray Wenderlich上找到)Block是一个回调的机制是这样的:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
     [self getNewConversation:^(NSArray *conversations, NSError *error){ 
      dispatch_async(dispatch_get_main_queue(), ^{//you got back with main_thread 
       if(error){ 
        NSLog(@"Error with description: %@", error.description); 
       }else{ 
        //update your view with new content right here 
       } 
      }); 
     }]; 
    }); 

这是机制如何时,有从别人新的对话更新您的屏幕通过应用此,你使用多线程两者都做更新UI和操作数据。来自Parse关于远程通知,你可以参考@Nick提供的链接,当设备被锁定或者睡眠时,应该使用通知,带有活动的应用程序,应该使用block来实现回调你的UI并更新它!但是,应用多线程有助于提高应用程序的性能,但要小心,它不是t为新手。

+0

是的,但是如果你经常ping API来进行新的改变有点多余。然后不断地与'我有什么新东西?可能是应用程序明智的,但服务器端/后端它可能会非常快速压倒性的,你发现自己购买,例如,heroku上更多的dyons ... – Miknash

0

你可以设置计时器,它会自动调用你设置的时间。

timer= [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(someMethod) userInfo:nil repeats:YES]; 

这会自动调用每2秒。 。

+0

同@Phong Nguyen,我会粘贴评论: \t 是的,但是如果你经常为新的改变而ping API,那么有点多余。最好是基于事件的聊天,然后不停地与'我有什么新东西?这可能是正确的应用程序,但服务器端/后端可能会非常快速地压倒性的,并且你发现自己购买了更多的heroku ...... – Miknash

0

您可以使用setNeedsDisplay重绘你的看法时,他们是“肮脏”含义为显示聊天更新时收到信息时,认为