2013-02-22 5 views
1

먼저 감사합니다.사용자가 소모품을 구입했는지 확인하는 방법은 무엇입니까?

전제 조건 : 신청서에 의 소모품을 제공하고 있습니다. 제품 :

  1. 목록 항목
  2. 사용자가 IAP하여 아이템을 구입할 수 있습니다.
  3. 내 응용 프로그램이 updatedTrancactions (트랜잭션)을 수신하기 전에 네트워크 연결이 끊어졌습니다.

그래서 내 서버에는 영수증을 확인할 데이터가 없습니다. 사용자는 또한 "가상 통화"를 얻을 수 없습니다.

아무도이 문제를 해결하는 방법을 알려주거나 팁을 제공하지 않겠습니까? 매우 감사합니다.

답변

1

표준 클라이언트 - 서버 문제입니다. 클라이언트와 서버 간의 연결이 끊어지는 경우 (시간 초과 또는 다른 이유로 인해) 일반적으로 요청을 다시 시도하는 것이 일반적입니다. 하지만 API 호출이 Idempotent이 아니고 API를 여러 번 호출하면 시스템 상태에 여러 번 영향을 줄 수 있으므로 더 많은 것을 영리하게 처리해야합니다. 일부 옵션 -

  1. 로컬 데이터베이스가 있습니다. 구매가 발생하면 먼저 로컬 DB에서 상태를 업데이트하십시오. 늦게 lazily 클라이언트에서 서버로 DB를 동기화, 나는 coredata 또는 sqlite 우수하다고 들었어요. 사용자는 이것을 인식하지 못하고 DB가 로컬이기 때문에 UI는 사용자에게 더 이상 적합하지 않습니다.
  2. 두 번째 방법은 - 실패한 HTTP 호출의 경우입니다. 통화가 성공할 때까지 계속 재 시도합니다.
  3. API가 멱등수가 아니기 때문에 토큰 개념이 필요합니다. 즉, 초기 호출이 실패 인 경우에만 성공한 경우 서버 측에서 여러 번 호출 된 동일한 토큰을 가진 API 호출을 먼저 검사합니다. 전의. 이는 은행 솔루션에서 매우 중요합니다. 시간 초과 및 재 시도를 계속하도록 프로그램 된 누군가로 인해 은행 계좌에서 여러 개의 인출을 생각해보십시오!

이것은 내가 지금 생각할 수있는 전부입니다. 스핀을주고 당신에게 효과가 있었던 것을 알려주십시오.