2014-09-09 3 views
0

IAP 복원 프로세스를 구현하려고하지만 이상하게 작동하는 것 같습니다. 이것은 내가 그것을 설정하는 방법입니다인앱 구매 암호 프롬프트

  • A 버튼을 누르면 및 [[SKPaymentQueue defaultQueue] addTransactionObserver:self];는 암호를 입력하라는 메시지가 온다하더라도이 즉시 복원 프로세스를 처리 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
  • 다음에 호출됩니다. 복원하기 전에 사용자가 암호를 입력 할 때까지 기다리지 않습니다.

이것은 옳지 않을 수 있습니다. 올바른 복원 제품을 처리하지만 사용자가 암호를 입력하지 않고 즉시 복원합니다. 구매를 복원하기 위해 로그인 프롬프트를 사용하지 않으면 로그인 프롬프트를 표시하는 목적은 무엇입니까?

+0

사용자가 컨트롤러를 바인딩하고 아직 보류중인 모든 작업을 완료하기 전에 사용자가 'addTransaction'을 호출해야한다고 생각합니다. 버튼을 탭하면됩니다. 단지'restoreCompletedTransactions'를 호출합니다. – sha

답변

0

아마 당신이보고있는 것은 이전 구매 또는 restoreCompletedTransactions (암호를 입력 한)의 트랜잭션입니다. 이전 트랜잭션은 최종적으로 finishTransaction : 트랜잭션을 실행할 때까지 addTransactionObserver를 추가 할 때마다 updatedTransactions에서 계속 팝업됩니다.

0

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]은 초기화시 한 번만 호출하려고합니다. 여러 명의 옵저버를 가질 수는 있지만, 애플은이를 반대합니다. 호출 된 후 지불 대기 행렬에있는 모든 항목이 처리됩니다.

복원 부분의 경우, 인앱 구매 클래스에서 복원을 수행하는 방법을 호출하는 UIButton을 작성하기 만하면됩니다.

//Button's action 
-(void)restoreButtonTapped(UIButton *)button { 
    [yourInAppPurchasingClass restoreTransactions]; 
} 
// located in your class that handles IAP 
-(void)restoreTransactions { 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
} 

성공적인 복원을위한 대리인은 구매 한 것과 동일하지만 실패한 경우는 아닙니다. 그러므로 구현을 확인하십시오 - (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

+0

옵저버를 추가하면 암호 프롬프트가 표시됩니다. 고아 StoreKit 구매를 제거하는 방법이 있습니까? iTunes Connect에서 테스트 사용자를 제거했지만 어떤 iTunes 계정에도 로그인하지 않은 경우에도 해당 이메일에 로그인하라는 메시지가 나타납니다 ... – SpellChucker

+0

항상 finishTransaction이 호출되는지 또는 limbo에서 계속 구매할 것인지 확인하십시오. 샌드 박스와 테스트 사용자는 때때로 이상하게 보입니다. 테스트 계정을 삭제 했으므로 앱을 삭제 한 다음 설정 -> 앱 스토어에서 기기의 해당 계정을 로그 아웃하십시오. 그런 다음 새 테스트 사용자로 로그인하고 이동하십시오. – Inertiatic