Could other developers' IAP test user accounts buy in my apps? - ios

In the server side, I'm doing something like:
if(tryIsRealAccount or tryIsSandBoxAccount)
{buy...}
It's a MUST when my app is reviewing by Apple. But should I close sandBox-trying after review?
It may be a silly question, but I really wanna make sure. Thank you!

There isn't any reason to close testing the sandbox - you'll only need to turn it on again next time you submit an app for review (because Apple's reviewers use the sandbox).
Other developers won't be able to use sandbox users to purchase items in your production apps. I just tested it in a production app with my test user credentials, and it doesn't work without payment information:

Related

Private set of users for iOS App

I would like to create an iOS App for a limited set of people.
It should be possible to download the app for free from App Store, but in order to use it
the idea is that you are required to be a member of the organization, which in this case is a local sports organization.
To solve the problem I thought of giving away activation keys to members that can be entered when they create an account, and therefore only members will be using the app.
Will the app be rejected by App Store? If so, is it possible to go around this in some away?
Thanks.
No you will not be rejected by the App Store.
During the review you will only need to give the access to demo account.
Your app will be available to anyone but you are free to give the credential to any person you want.
edit
Fyi I have such apps. The AppStore only block 'discriminating' app based on carrier or location (you can choose the countries anyway), but you are perfectly in the rules if you give access only to your clients...
edit edit
2.22 like I said is against arbitrary criterias, not linked to the login mechanism
for 11.1 and so on, I understand the point, but in my case (and I think yours) there is no problem if
you sell your service before, the app is just complimentary
you dont sell anything within the app
you dont charge for the app itself or anything within the app, you charge only the use of the server/back office/whatsoever
I guess that Apple dont care, they just don't want to bypass the applestore but I dont think that it is your case.
You should try Enterprise distribution for such purpose.
Yes your app may be rejected. Check the App Store Review Guidelines. In 2.2 it says
Apps that arbitrarily restrict which users may use the App, such as by location or carrier, may be rejected
There are different alternatives.
You can opt in for the Apple Developer Enterprise Program, this'll cost you 300$ a year and requires you to be a legal entity.
If you want to test it with a limited number of people (<1000) try looking into Testflight it was bought by Apple and is deeply integrated in the development process.
No, there will not. You need to to give some demo account info as test data to review while submitting to app store in the iTunes Connect portal.
Demo use case(worked for me): Implementation is like, there need some userid/unique pin to the registered account holders to start the application. At the time they input this pin, authenticate the user with our server and give the permission to let in to the app.
Otherwise you need to go for enterprise distribution. Find more about enterprise distribution here.

How to create a promotion code for iOS in-app purchases

As of about May 2014 this year, searching Google for "ios in app purchase promotion code", yields lots of news sites reporting the same thing - Apple seem to be working on allowing promotion codes for testing in-app purchases as evidenced by a screenshot from EA games.
My question is; does anybody know how to do this yet? I logged into the new iTunesConnect interface but can't find any link and nothing appears in the Apple docs from what I can find.
Ideally I'm looking to create a code for a monthly subscription but they may only be allowed for consumables. With the lack of actual info on IAP promo codes my guess is that the feature hasn't been officially made available yet and that EA games were invited by Apple to test it out.
As #Christoph Wimberge notes this is old news. Apple is now supporting this.
You cannot officially get promo codes for IAP currently. See here https://developer.apple.com/library/prerelease/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/ProvidingPromoCodes.html . If you're testing then you should be creating Sandbox Testers under Users and Roles. Depending on how you handled the IAP this could well serve as a promo code of sorts. So, for instance, if you're using the IAP to set a flag in NSUserDefaults or a plist file then this will work as a promo code. You will have to instruct the user to log in as the test user for the purposes of the purchase. Even if you delete the test user once the flag is set the user can use the IAP so long as they don't completely remove the app and assuming you don't change the way IAPs are handled like using App Store digital receipts to confirm purchases. Of course, if you're worried about crackers then you're probably not going to store successful IAP as a flag especially in User Defaults where anyone can just change the value willy nilly. But for apps that aren't games this probably isn't a huge worry. Hope that helps.
We were told by Apple today that they never allow users to type in codes, use Q-codes, or other gateway key to access anything. Instead, she said we should use a members-only webpage (i.e., login required) to accept redemption codes and associate the content through our backend. When the user returns to the app, the content would be available.
If Apple enabled codes for IAP, you could offer sales of the codes from another platform, which would then unlock the IAP. Apple would be doing all of the work, but reaping none of the rewards. In addition, all of a sudden, you've created a knock off market for promotional codes, like g2a.com does for Steam keys.
While Apple might have the functionality, it seems exclusive to EA for now.
Currently, you'll need to figure out how to support promotional items outside of the app store.

Is it possible to test in-app-purchase without having to enter bank details etc?

I want to test IAP, however it seems this isn't going to be possible without going through multiple hoops on iTunes Connect and entering bank information etc.
Reasons for SKProductsRequest returning 0 products?
Can anybody confirm if this is the case or not? If so then is there any reason why I can't just create a dummy test app entry in iTunes connect, enter garbage for the bank info, then after finishing testing delete the app entry from iTunes connect?
Yes, you definitely do have to enter banking and US tax info before you can do in-app purchases. I was getting "invalid product ID", but it started working as soon as my banking/tax info was set up. This doesn't seem to be documented anywhere.
Did not work for me. If it works out for you, let me know.
I tested in-app payment this late December 2013 / early January.
Yes you can test IAP without entering bank info. what you need to do is
Create a test user in itunesconnect
Run your app on an actual device
Launch AppStore App on your iphone/ipad
logout and login with your test user id
Go to your app and try to make an in-app purchase
You should get a prompt saying something like "Charge $0.99 to Sandbox"
You won't be charged to your actual account.
This is all documented by Apple HERE
Expand tab that says To perform testing for In-App Purchase products

Apple Review with external payment systems

We are using Amazon FPS payment gateway for purchasing goods through IOS app, now we need to upload it to apple review team and as this is production app, it is pointed to production/live Amazon FPS account so here I want to understand if apple really want to buy anything then they need some credentials by which they can test the purchases.
So first thing really apple tests the whole purchase flow? If yes then what credentials should I provide? or should I update the server for sandbox mode till apple approves the app?
You should submit your app and select "Hold for developer release".
Then you can provide Apple with credentials on your sandbox server to test with.
When Apple approved your app, you can switch your server to production, then release your app.
But, I have a feeling they are not going to approve your app because it provides a mechanism for folks to buy things that does not give Apple a cut of the action. This is not unlike the issue with magazines and newspapers (or anyone) selling subscriptions via non-Apple Store mechanisms: Apple doesn't like when they get cut out.
Apple would prefer you use In-App Purchase, so they get a cut.
Good luck!
EDIT:
Indeed, there is a distinction to be made for real versus virtual goods, which I guess I missed when I read your post. Sorry.
To your actual question: Will Apple test it? No one knows. :-) You should assume they will, and provide some test credentials for them to use.
I can tell you from experience with a (free) commercial app I built, before we launched the service, we had the app submitted, and Apple did register on our backend and test out the app.
We released a charitable "micro-giving" app on iOS that uses Amazon payments to externally process the donations. We submitted the app with our production payment system.
According to our server logs, during their review Apple never submitted a payment or even initiated one.
It took a couple of submissions to get approved, but their feedback largely was focused on making sure we were complying with Apple's guidelines (donations must be processed external to the app, i.e. via safari), and making it clear to the user what the exact donation process was.
I think it's unlikely that Apple would spend money to test your app, nor would they wait to see if you actually delivered the goods as promised either. However, I do think that they will make it clear to you in their feedback if they want to test without spending real money.

Turning off auto-renewing subscriptings on an iOS device in sandbox

I have set up and tested In-App purchases successfully in sandbox environment. But I have a problem:
In actual In-App purchases, I can turn off auto-renewing subscriptings on an iOS device by following this link http://support.apple.com/kb/HT4098?viewlocale=en_US&locale=en_US
I wonder how I can do the same thing in sandbox environment. I thought we have to sign in App Store to turn off auto-renewing subscriptings, but Test User Account can not sign in App Store. So I think we can not turn off auto-renewing subscriptings in sandbox environment.
If so, I also need a simple explanation why we can not.
Thanks for reading and any help or direction will be appreciated.
Yes. That was my experience as well: that test users can't access the settings page to manage subscriptions in their phone. I think Apple just didn't bother programming this knowing that sandbox subscriptions will just cancel after five repetitions anyway. That automatic cancellation is probably your way to test the scenario where a user cancelled through the App Store.

Resources