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

Foi útil?

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:

  1. Configurações -> Redefinir -> Redefinir todas as configurações
  2. Configurações -> iTunes & App Store -> Sair
  3. Exclua o aplicativo
  4. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top