Apple sandbox user logout before production - ios

I developed a Phonegap iOS app that implements In app purchase. As suggested here, I used a sandbox user in order to test the IAP during the development process in iOS, but i can not find a way to switch back to my personal account to authenticate the application.
At the start of the development process, i signed out with my personal account, i didn't login with my sandbox user in General > iTunes & App Store, i started the application and i logged in with my sandbox user from that.
It is time now to pass to production and i can not figure out how to logout the sand box user from my app. If i start the application a Sign In popup is displayed and the sandbox email is there. It simply ask for the password but now chance to change the account. When i login within the application the sandbox user account is logged in General > iTunes & App Store, but if i log out from there the application is stuck with the sandbox email. In other words, it is like if the app is now linked to that email account and it does not give me the chance to change it.
I tried to remove the application (tapping on it and pressing the X button and from General > Manage storage), install it again, to soft reset the iPhone, log out from iTunes & App Store, rebuild the application in debug mode or not, including the plugin or not, in many combination but with no success.
Does anybody experienced something like this? How did you logout your sandbox user when you switched back to your personal iTunes Connect account?

I'm not sure how it looks like on previous iOS versions, but on iOS 12.0 you can open:
Settings > Your Name (Apple ID, iCloud & App Store) > iTunes & App Store
There you will find a section called "SANDBOX ACCOUNT" where you can sign out of the sandbox account you've been using.

On iOS 14 & 15:
Go to Settings > App Store
Scroll down until the end and you'll find the title "SANDBOX ACCOUNT", there you'll see the sandbox account you are currently logged in to, tap over it and it will let you change it.

I have found 2 ways to avoid the problem but first be sure to use a "fresh" testing account.
Change the Bundle Identifier in Xcode and iTunes Connect
Restore the iPhone
I go for the first one because my Testing device is also my personal iPhone and I can't afford restoring every week.
I spent so much time on that so I hope my answer can help you.

Related

iOS 11 - Is in app purchase testing using a sandbox user keeps asking to sign in for anyone else too? Forever loop?

I am testing a non-consumable IAP on an iPhone 6s running iOS 11 GM.
Whenever I tap my "Buy" button, it asks me to sign in. I tap "Sign in with existing apple ID" and enter my sandbox user details (which worked fine as of a few days ago on iOS 10).
After entering, it just goes back to the same "Sign in" screen. I tried entering a few more times and it just goes back to the same screen again. Keeps looping forever.
Is this down for anyone else?
The same thing happens for me, for three separate sandbox users which were created before iOS 11 release. (The problem seems prevalent on iOS 11, there are posts on reddit and apple forums reporting this issue)
It seems creating new fresh sandbox user is the way to go. Sandbox users created after iOS 11 release work, while those created before the release cause "Sign in/Create Apple id" alert loop.
I did this steps and it's works
logout your account from iPhone
create fresh sandbox account
use the app to purchase anything - it will ask you for your login information
put the fresh sandbox account - it will ask you again your login information
leave the message and close the app
open the app again and try to purchase anything and it will works ^^"
Fixed as follows
Create new sandbox account.
Logout iTunes account from device setting.
Try to purchase and enter new sandbox account when popup appears.
NOTE: It may not work first time, I entered account twice & it worked second time.
If it does not work after few day try new account.
Go to Settings ▸ iTunes & Appstore scroll to bottom.
You can add account here for sand box purchase.
For iOS 11 and older, sign out the existing account if any. For iOS 12 and newer do not sign out of your Apple account - but manage it at the bottom of the page mentioned above.
Docs: https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchase_transactions
To keep the sandbox account operational, be sure to only use it when you see [Environment: Sandbox] on the login prompt. For all sandbox accounts, you still have to go through the email-verification process (click link in email).
This is what just worked for me.
1) Go to setting on your device and sign out of your current account. Then sign in with your Sandbox account.
2) Power off your device and when it boots in open the app you are testing. It may ask for you to enter in you password (which would be the sandbox user's password)
This should fix the issue...
Let me know if you tried and the outcome.

iOS sandbox test user account not working properly

I'm trying to test my app's in-app purchases but when I try to log in as my sandbox tester it tries to send me to the settings screen to sign in there. however as I understand it, wouldn't that invalidate the tester.
Steps in order as I did them:
1: Create sandbox tester account on iTunes connect
2: sign out of itunes and app store as well as iCloud
3: opened the app and tried to purchase something. was prompted, telling me to sign into an account.
4: Signed in using the test users credentials and still got redirected to the settings screen. What am I doing wrong?
According to some people on the apple developer forums, regarding this particular issue, of course, you need only to verify the account and it seems to have done the trick for me.

iTunes account creation not allowed when trying to test In-App Purchases

I have an app in the App Store and I want to test in-app purchases. I followed the steps described on the Apple website but I'm facing some problems.
When I try to log in in the iTunes in my application or in Settings/iTunes & App Stores, I receive the error:
iTunes account creation not allowed.
This Apple ID cannot be used with the iTunes Store at this time. Please try again later
I searched the internet but I found nothing about this. It seems like I am the first to encounter this kind of error.
Looks like Apple has this poorly documented. Basically, you shouldn't log in with your sandbox user from that screen. Log in when actually prompted by your test IAP.
Source: Unable to log in with sandbox test users on device
I just had the same problem. Here's how I solved it:
Don't try to sign in Settings > iTunes & App Stores
Log out of iTunes & App Stores (make sure you're not logged into any account)
Just open the app you're trying to test
Your app will promt you to sign in
Enter your credentials for your sandbox test account
Et voilà! You're done. Worked for me. I hope it works for you.
For those who are still facing an issue, here is the solution:
From settings main screen, select "iTunes & App Store", as seen in the picture
now scroll to bottom and you will find your previous apple is still there, sign out of that, see picture for reference, and now when doing in app purchase, it will ask for both apple id and password, use your sandbox tester apple id and password there.
I had this issue. I tried changing existing Sandbox tester account password and tried to login on device...but didn't worked.
Even iPhone device restart didn't worked [last option that most developer follows ;-) ]
I thought it takes time to update this newly created Sandbox testing on DB. So left the login option as it is on device
Now, after launching app that contains In App purchase. Press on button that is responsible for In App purchase. This will prompt for Apple credentials. Enter the Sandbox tester credentials here.
Voila this worked for me!
This has changed... again. Here's how to fix it in 2020:
0) On your test device, go to Settings.
1) Click your account name at the the top, the one with "Apple ID, iCloud, iTunes & App Store" under it.
2) Click "iTunes & App Store"
3) Scroll all the way to the bottom and find the option: "SANDBOX ACCOUNT". It will have defaulted to your AppleID. Tap it and sign out.
4) Tap "Sign In" under SANDBOX ACCOUNT.
5) Add your Sand Box Account credentials. You will probably have to have verified your email address before this will work.
The top answer is correct, but if you're still having the issue:
Make sure that the app you're trying to log into is a development app installed with Xcode. You'll get the same error if your version was installed from the App Store.
(I got confused because I have 5 versions of almost the same app.)

You are not authorized to make purchases of this InApp in Sandbox at this time

I'm trying to make in-app (non-consumable) in my app.
I'm trying to buy the package but I can't...
Of course, I've looked here for answer, but I have one actual account everywhere - at developer.apple.com - also I've created provisioning profiles, at itunesconnect.apple.com and in Xcode as well...
My bundle identifier is the same across the all websites and application.
The Application finds my package and show me the price of it. When I click on BUY the alert view show the text:
You are not authorized to make purchases of this InApp in Sandbox at this time.
[Environment: Sandbox]
Any ideas please?
You can use In-App purchase test users, to test In-App purchase in sandbox mode.
Create test users in the "Users and Access" section of appstoreconnect.apple.com
Before testing In-App purchase, Using the Settings app, logout your actual Apple ID and login the test user account directly via your app. (DON'T login the test user via Settings app or AppStore.)
They used to have the real iTunes login and the Sandbox iTunes login grouped back in 2017. So you would sign in to your Sandbox account while testing purchases in the app, and then it would change your iTunes login as well. Then you'd have to sign out of your iTunes through settings. Now they have a separate field on the bottom of the Settings --> Itunes & App Stores screen (called "Sandbox Account"). You have to sign in there with a provisioned Sandbox account which is added in "Users & Access" in App Store Connect. (You have to also verify that email address, and it can not use a +postfix on the email address, IF that email is used as one of your non-sandbox main accounts... Sigh...) So you have to actually create new unique emails now that are not used as part of your main accounts. (From my understanding you can still use +postfixes on your emails which are only used for sandbox accounts though :)
Now, there's still a bug with purchases where If you are not signed in with your main Itunes account, OR your sandbox account, and you try to test purchases by typing in a sandbox account (in the app), it will keep asking you for your Sandbox Email / Password over and over again, Until you type in your REAL iTunes account as well (????). That works (typing in both the sandbox account and the real itunes account). Then the sandbox purchase goes through. I'm as surprised as you are...
If your apple account has a sandbox account user, after logging in with your account, follow these steps
Step 1 : Go to settings.
Step 2 : Select iTunes & Settings
Step 3 : Scroll to the bottom. There is a section for SANDBOX ACCOUNT
Step 4 : Sign in there using your Sandbox account
Now test your app & it will work fine.
First create a new account on sandbox which is on iTunes -> Users and access -> on left hand side click on sandbox and add account on it.
And then go to your testing device
Sign out previous id from Sandbox Account and click to add a new sandbox id which have added on Sandbox tester.
Thank you!
I have multiple Apple development organizations associated to my account on App Store Connect. The reason I was getting this error was because my Sandbox Tester was created in an organization that wasn't associated with the app I was testing.
I swear the organization was right when I was adding the Sandbox user, but I can't be sure. It never hurts to refresh App Store Connect an extra time and double check the Sandbox Tester is in the correct organization.
I had this issue as well when I accidentally tried to make an in app purchase on our TestFlight app using sandbox account credentials created in the App Store connect Sandbox Testers section. So if you are experiencing this issue just make sure you are using sandbox account credentials for your dev or staging apps. With the TestFlight app version you should use your real Apple ID credentials (you won't be charged of course as TestFlight still uses the Sandbox environment for in-app purchases).
For more information checkout https://developer.apple.com/documentation/storekit/original_api_for_in-app_purchase/testing_at_all_stages_of_development_with_xcode_and_sandbox
https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox
Try this check-list
Create test user #App Store Connect > "Users and Access" section. (Apple Doc - https://help.apple.com/app-store-connect/#/dev8b997bee1)
Logout older sandbox id from App Store & login new sandbox id, here is the steps for iOS & macOS
iOS: Open "Settings" > "App Store" > "SANDBOX ACCOUNT" (will be at bottom of screen)
macOS: Open "App Store" app > "Preferences.." > "Sandbox Account" section will be at bottom
First,make sure the account of your in test app is right.
Second,when you are working in the app,click the recharge button,and input the right account for testing.

Testing In-App Purchase on iPhone

I have setup my app to use In-App Purchases. All the necessary steps have been done and everything works except for one thing, the final step for completing the purchase transaction i.e. SKPaymentTransactionState always completes with Failed every time.
So I did some research and found another post that said not to test this in the simulator and do it on a physical device as it seems there is a limitation placed on making purchases in the simulator by Apple on purpose.
So I went back to try to run this on my physical iPhone instead. The problem I'm having now is that my physical iPhone is linked to my active iTunes account. When I try to make a purchase on it, the User ID is already defaulting to my active ID and it only asks for my password.
So my question is (1) How do I force the phone to ask for me to enter a new User ID and Password so that I can use the Sandbox User I created in iTunes Connect? (2) I am a little nervous about even entering a secondary iTunes credentials, can anyone validate what the behavior is like? I do not want my active iTunes account to have any issues, it is possible to run both my active iTunes account and the sandbox user on my physical device with no issues?
Log out of iTunes on the phone via Settings, but wait for the app to prompt you to log in before entering your sandbox account credentials. NOTE that I'm referring to iTunes, not iCloud. It gets more interesting if you need to do that.
When you're done testing, log out again via Settings but differently than before, go ahead and re-log in via Settings to your "regular" Apple ID to return to production use.
You can't run them "simultaneously" as such but you can use your regular device to sandbox test without problems.

Resources