2015-10-06 44 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重繪你的看法時,他們是「骯髒」含義爲顯示聊天更新時收到信息時,認爲