Tap continue and sign in to check for downloads. [

2019-04-03 06:56发布

问题:

From times to times I get a very annoying dialog with the text: "Tap continue and sign in to check for downloads." If I login ( with a sandbox user ) or tap Cancel the dialog is immediately displayed again.

I am using Non-Renewing Subscriptions and Non-Consumable products.

Any ideas how to get rid of this dialog?

Thanks

/Martin

回答1:

The consensus seems to be that:

  • The issue started in iOS 6
  • It doesn't seem to happen if you are not logged in in Settings with an Apple ID.
  • Turning on Airplane Mode and then logging out of whatever Apple ID you're logged in as in Settings, and then leaving Airplane mode on for about 15 minutes will stop the messages for a while.
  • Wiping the device and restoring doesn't make it go away
  • Someone filed a bug about this and it was marked Duplicate, so Apple seems to be aware of the issue but unwilling to do anything about it just yet.
  • There's speculation that it happens when your device is logged in to the Sandbox with one ID and to the live store with another. If you're testing in-app purchases, log out of your main ID before you start testing.

Here's some more discussion on the issue:

https://discussions.apple.com/message/21492551?ac_cid=tw123456#21492551

https://discussions.apple.com/thread/4412889?tstart=0



回答2:

Sandbox many a times issues redundant dialogs which are not available with non-sandbox accounts. If you are following the storekit protocol there should be no need to worry. I had the same issue of repeated alert boxes issued from didReceiveResponse delegate, but my app got approved and it doesn't have issues in real environment.



回答3:

I fixed that in the most trivial way ever. When the AlertView appears, just click continue and sign in with that account. (In my case it stored even old account deleted from my test user list in my iTunesConnect). I got the alert for 5 or 6 account I was testing my InAppPurchase with, but after I signed in with all of them, I no longer get it. Hopefully this will help.



回答4:

I'm having the same issues.

I'm pretty positive that the actual issue is from the fact that there are in-app purchases in the payment queue and that those purchases need to be cleared out of the queue.

The code to do so:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

My app has a complex verification system that needs to be passed before I call the method above. If the user quits the app or loses internet connection during that period, there will be leftover purchases in the payment queue.

One way to solve this issue is to just modify the app to "finishTransaction" on every single transaction that you are getting - therefore clearing the payment queue. Make sure to sign in to all of the accounts that could be associated with the purchases in the payment queue (AKA all testing accounts you have used for that app).



回答5:

I added

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

to the end of my appDelegate didFinishLaunchingWithOptions and it fixed the problem for me.



回答6:

Still present in 2017!

Looks like a sandbox glitch: despite logging out of the sandbox user account something remembers the ID and incomplete transactions for that user keep popping up.

I clear these by:

  • Logging in as the problem user when prompted,
  • Running through the 'restore purchases' functionality in the App for this user (re-entering credentials if prompted).

This clears all incomplete transactions (if your 'restore purchases' functionality is correct) and thus the message will not appear on subsequent runs (until such time as a sandbox transaction is left incomplete again...)



回答7:

What fixed it for me was similar to kgaidis answer but to make this easier i just placed multiple: SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)

into the purchased state of the updatedTransactions function. I placed about 20 in there and ran the app. after a few sandbox in app purchases the problem went away.