2014-09-01 20 views
0

我目前有一個iOS應用程序,它運行一個線程(通過NSTimer),每10秒輪詢一次rails服務器上的後端ruby以更新UITableView。原因是桌面視圖應該始終在iPad上打開,以便它可以反映服務器數據的變化。讓服務器後端告訴iOS應用程序更新數據

我的問題是 - 有沒有更好的方法來做到這一點?我可以使用Apple推送通知系統告訴我的應用程序更新其來自服務器的數據,而不會向用戶顯示通知嗎? (過去我使用Android GCM在不顯示通知的情況下告訴應用程序更新,但我不確定Apple允許這樣做)如果是這樣,怎麼辦?

是否有另一種解決方案通知我的iOS應用程序更新服務器更改數據?

回答

1

自iOS7以來,您可以像Android GCM一樣向您的應用程序發送無聲oush消息。所有你需要做的是與有效載荷一同發送以下鍵值對:

aps =  { 
    "content-available" = 1; 
}; 

通過這樣做,推送消息將不會顯示在橫幅或警覺,則您可以在更新您的tableview在您的應用程序代理中收到消息:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    // update your application 
} 
+0

如果推送通知未得到傳遞,會發生什麼? APNS不保證交付嗎? – Petar 2014-10-09 22:35:09

+0

不,它不。如果你想要,你可以考慮實現一個握手機制。當您在設備上收到數據時,您會向您的服務器發送確認,如果服務器沒有收到確認,服務器將重新發送信息。 – 2014-10-10 05:16:58

+0

我想知道這種問題的通常方法是什麼?我想這很常見?握手機制是一個直接的解決方案嗎?你能指點我正確的方向嗎?謝謝 ! – Petar 2014-10-10 08:58:46

0

您可以在沒有警報有效負載的情況下發送推送通知。

無論通知是否有提醒,如果您的應用程序正在前臺運行,那麼推送通知將始終傳遞給您的應用程序代理進行處理 - 因此,如果您的iPad致力於運行您的應用程序,如果有的話就顯示警報。

相關問題