Preso com a conta de sandbox
-
22-09-2019 - |
Pergunta
Criei uma conta de teste para verificar as compras de aplicativos. Eu poderia comprar e a compra foi bem -sucedida. Depois disso, encontrei um bug na navegação. Corrigi um bug, criei outra conta e excluí a conta que eu conectei na sessão anterior. Agora, não posso mais testar as compras no aplicativo, já que a App Store me login automaticamente com uma conta fantasma que já não existe. Solicito -me a inserir uma senha apenas, apesar de que antes de cada sessão de depuração, saio da loja em Configurações e exclua a versão anterior do aplicativo. Como faço para redefinir isso?
Obrigado,
Nava
Solução
Sei que esse é um tópico antigo, mas tive problemas para encontrar uma solução e passei por algumas tentativas e erros entorpecentes até descobrir uma solução, então pensei em compartilhá-lo aqui, pois não consegui encontrá-lo em nenhum outro lugar.
Primeiro, verifique se após cada transação que você chama:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
O que aconteceu no meu caso é que uma transação não terminou e ficou na fila, mesmo quando mudei para uma conta de sandbox diferente, ele ainda continuava pedindo a senha da minha conta antiga.
Para consertar, adicionei:
SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
Antes de adicionar o observador de transações, ou seja, isso:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
Além disso, no
(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
função, adicionei esta linha de código:
[queue finishTransaction:transaction];
nos casos SkPaymentTransactionStaterestored e SkPaymentTransactionStateFailed da instrução SWITCH. Não adicione ao estado adquirido, porque você não pode ligar para acabar com o que eu sei.
Não tenho certeza de qual das duas etapas acima corrigiu o bug porque ele persistiu até que eu saí do meu iPhone, excluí o aplicativo, o desviou e fiz uma reconstrução/instalação limpa que finalmente parou de me pedir a senha para a conta com bug. Espero que isso ajude alguém.
Edit: (11/12/15)
Então eu descobri a causa de quebrar contas de sandbox. Aconteceu depois de restaurar as compras e depois atingir a chave da casa, reabrir e pressionar o botão Restaurar novamente, o que causou uma falha. A restauração permaneceu na fila e o processo acima foi a única maneira de sair dos pop -ups pedindo a senha.
Para parar com isso, adicionei:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
para a função de desmontagem (chamada pelo ApplicationDIDERBackground :) do meu controlador de exibição principal antes de nilaria meu objeto de gerente de compra no aplicativo. Eu acho que o que estava acontecendo é que eu adicionei o objeto como observador de transações mais de uma vez e estava causando o comportamento estranho. Pelo que parece, isso parece ter corrigido o problema inteiramente porque não consegui recriar o erro novamente.
Outras dicas
Eu tive o mesmo problema. Foi isso que resolveu meu problema:
- Configurações -> Redefinir -> Redefinir todas as configurações
- Configurações -> iTunes & App Store -> Sair
- Exclua o aplicativo
- Reinicie o aplicativo do Xcode
ATUALIZAR: Eu percebi que o problema era que não tinha essa linha no meu código:
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
Isso significa que minha antiga transação não foi concluída e o iPhone estava tentando finalizar transações antigas que aconteceram antes. Quando adicionei essa linha ao meu código, a solicitação de senha de usuário antiga não está mais acontecendo.
Então, você quer dizer que, mesmo se você for ao aplicativo de configurações -> Store -> Sair, você ainda recebe o nome de usuário da conta de teste anterior? Você também tentou excluir o aplicativo do seu dispositivo? Isso corrigiu um problema semelhante para mim.