2016-06-29 130 views
1

我正面臨API問題。我有我的API,iOs應用程序和外部API。PHP等待API響應

iOs對我的API發出請求,我的API向外部API發出請求。但是現在我必須等待外部API向我的回調發送數據,這需要一些時間,例如30秒。我應該如何與iOs應用保持聯繫?

我有3種可能的解決方案。

  1. 問我的API,例如每10秒。如果數據已經到達。
  2. 當數據到達時將通知發送到我的應用程序。
  3. 如果我正確理解套接字,請創建將偵聽響應的套接字。

有沒有其他解決方案?或者最佳做法是什麼?

+0

你使用什麼協議? HTTP?您是否在應用程序和API之間保持連接(例如TCP)? – TheOperator

+0

我正在使用HTTPS。我不保持連接。有沒有關於如何實現PHP和iOS應用程序編寫的API之間的連接的文章? – Vastlik

+2

我相信@Igor T.的解決方案是理想的。爲此目的使用套接字不是很可靠,特別是如果電話接收到呼叫或進入睡眠狀態,套接字連接將會丟失。每10秒查詢API *如果用戶基數非常小,則可能是一個很好的解決方案;然而,這個選項並不理想,因爲會有許多不必要的查詢。 –

回答

1

您可以嘗試的另一種方法是使用APN將應用程序通知新的數據到達。

  1. iOS的客戶端向您的API

  2. 你的API使得在內線的請求的請求。 API,向iOS客戶端返回響應

  3. 一旦從分機的數據。 API到達後,您的API向iOS客戶端發送推送通知,通知後者數據已準備好被提取
  4. iOS客戶端收到推送通知(PN),未向用戶(人類)顯示PN,
  5. iOS客戶端發出另一個請求來檢索數據。
+0

根據您可能能夠在推送通知的有效內容中發送的數據而定。根據官方文件,有效載荷大小現在可高達4096字節。 https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html –

+0

如果@chasenyc建議您爲您工作,它會爲您節省第5段中的額外請求時間,因爲你不需要再做了。 –

+0

謝謝你們的回覆,你爲我提出了最好的解決方案。將嘗試它像這樣實施。 @chasenyc不幸的是它會超過4 kB,所以iOs應用程序必須提出另一個請求。 – Vastlik