Manipular transações IAP canceladas
Estou usando o StoreKit para compras no aplicativo. Estou descobrindo que a API é peculiar em seu comportamento quando o usuário pressiona o botão "Cancelar".
Por exemplo, se eu pressionar Cancelar na tela "Confirme sua compra no aplicativo", recebo umaSKPaymentTransactionStateFailed
transação comerror.code == SKErrorPaymentCancelled
como eu esperava.
Mas se eu pressionar Comprar e pressionar Cancelar, recebo umFailed
transação comerror.code == 0
. Oerror.localizedDescription
é "Não é possível conectar à iTunes Store", o que é claramente uma mentir
É tentador tratar tudoFailed
transações como cancelamentos ignoráveis, mas também posso ver claramente que, se o dispositivo estiver offline no modo avião, recebo umaFailed
transação sem pop-up de alerta; Eu realmente deveria notificar o usuário para explicar o problema nesse caso.
Notei que MKStoreKit assume que todas as falhas são cancelamentos.MKStoreManager
'sfailedTransaction
método nunca é chamado;MKStoreObserver
sempre chamatransactionCanceled
para todosFailed
transações. OMKStoreManager.h
comentáriosrecommend nenhuma mensagem de erro paratransactionCanceled
, o que faz sentido, mas quem notificará o usuário sobreFailed
transações não canceladas?
Qual é a melhor prática para lidar com essas falhas? Devo engolir erros? Sempre mostrar um erro, mesmo que seja redundante?