iOS en las requestes de compra de la aplicación de inicio de session dos veces

Agregaré compras de aplicaciones a una de mis aplicaciones. Según lo requerido, agregué un button para permitir a los usuarios volver a download los artículos comprados. Aquí está el método IBAction para eso:

- (IBAction)touchedButtonUnlockAgain:(id)sender { [self.activityIndicator startAnimating]; [UIApplication shanetworkingApplication].networkActivityIndicatorVisible = YES; [[SKPaymentQueue defaultQueue] restreCompletedTransactions]; } 

Cuando toco este button, obtengo el cuadro de inicio de session estándar. Ingreso mi nombre de usuario y contraseña de Sandbox (correctamente, verificado). Luego de que desaparece ese cuadro de inicio de session, vuelve a aparecer medio segundo más tarde. Entonces, vuelvo a iniciar session con el mismo nombre de usuario y contraseña (correctamente, verificado) y luego las compras vuelven a downloadse. He verificado que sucede en el Simulador y en un dispositivo (iOS 6.0 en ambos casos).

¿Por qué me piden mi nombre de usuario / contraseña dos veces?

El único motivo para esto serán las transactions sin terminar: los fantasmas que esperan su finishTransaction . finishTransaction call for networkingemption. Pueden existir debido a transactions iniciadas por el usuario que no se pudieron finalizar, o simplemente debido a la terminación abrupta de la aplicación antes de que pudieran finalizar. Básicamente, las llamadas desequilibradas a addPayment / restreCompletedTransactions y finishTransaction pueden provocarlas.

Compruebe sus delegates: paymentQueue:RestoreCompletedTransactionsFinished: & paymentQueue:restreCompletedTransactionsFailedWithError:

¿Estás haciendo algo dos veces? ¿Recibes algún error?

Una cosa más para verificar es: ¿Cuándo en el ciclo de vida de su aplicación llama a la siguiente statement?

 [[SKPaymentQueue defaultQueue] addTransactionObserver] 

Es importante que se lo solicite lo antes posible, ya que algunas veces las transactions perdidas que convierten a los fantasmas debido a la terminación de la aplicación aparecen nuevamente, esperando que se termine. Sin un observador activo, no alcanzan el método updatedTransactions, que es su puerta de enlace final para finishTransaction llamada finishTransaction .

En su teléfono, intente acceder a Configuración / iTunes y tiendas de aplicaciones y cierre la ID de Apple existente allí especificada. Vuelva a entrar en su aplicación y vuelva a intentarlo.