2016-06-29 5 views
1

API에 문제가 있습니다. 내 API, iOS 응용 프로그램 및 외국 API가 있습니다.API 응답 대기 중

iOs가 API에서 요청하면 내 API가 외부 API에 요청합니다. 하지만 이제는 콜백에 외국 API가 전송 될 때까지 기다려야합니다. 예를 들어 30 초가 걸립니다. iOs 앱을 어떻게 유지해야합니까?

3 가지 가능한 해결책이 있습니다.

  1. 예를 들어 10 초마다 내 API에 문의하십시오. 데이터가 이미 도착한 경우
  2. 데이터가 도착하면 앱에 알림을 보냅니다.
  3. 소켓을 올바르게 이해하면 응답을 수신 할 소켓을 만듭니다.

다른 해결책이 있습니까? 또는 가장 좋은 방법은 무엇입니까?

+0

어떤 프로토콜을 사용하고 있습니까? HTTP? 앱과 API간에 연결 (예 : TCP)을 유지하고 있습니까? – TheOperator

+0

HTTPS를 사용하고 있습니다. 나는 연결을 유지하지 않습니다. PHP와 iOS 앱으로 작성된 API간에 연결을 구현하는 방법에 대한 기사가 있습니까? – Vastlik

+2

@Igor T.의 솔루션이 이상적이라고 생각합니다. 이 목적으로 소켓을 사용하는 것은 그다지 신뢰할 수 없습니다. 특히 전화기가 전화를 받거나 잠자기 상태가되면 소켓 연결이 끊어집니다. 사용자 기반이 극단적으로 작 으면 10 초마다 * API를 쿼리 할 수 ​​있습니다. 그러나 불필요한 쿼리가 많으므로이 옵션은 최적이 아닙니다. –

답변

1

시도해 볼 수있는 또 다른 방법은 APN을 사용하여 새로운 데이터 도착에 대해 앱에 알리는 것입니다.

  1. 아이폰 OS 클라이언트는 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 불행히도 4KB 이상이 될 것이므로 iOs 앱이 또 다른 요청을해야합니다. – Vastlik