I am dealing with a very frustrating App rejection. Apple has twice rejected my App with Guideline 2.1 - Performance - App Completeness. They're stating that the In App Purchase (an auto-renew subscription) is not unlocking the premium content after the purchase is made.
I have thoroughly tested this IAP on my end, on 3 devices, and 3 different TestFlight accounts. All tests worked flawlessly. I am unable to replicate the issue the Apple App review team is having.
The same IAP helper / receipt validation is also being used in another App of mine that has been working perfect for well over a year on the App Store.
I have ensured all product identifiers match up.
I have re-generated a Subscription Secret.
Is there anything I may be overlooking? What may cause the IAP to not unlock the content for JUST the App reviewer, and not any of my 6 unique devices that were tested and work perfect.
This has been resolved! My App was using expires_date in the receipt validation for the in-app subscription. It turns out, expires_date is bug-prone in certain configurations of devices (device / ios / locale). Because of this, the purchase was successfully finishing, but the premium content was remaining locked due to a misconfigured expiry date.
The solution was to use expires_date_ms instead of expires_date. It doesn't even look like expires_date is documented anymore on Apple's docs.
See: https://developer.apple.com/documentation/appstorereceipts/expires_date_ms
Hope this helps anybody running into issues of in-app purchase subscriptions not unlocking content!
I recently finished the first version of an iOS application. I have several in-app purchases within it. When testing these, I always used a physical iPhone. Apple just approved the build for release and the app is now in "Pending Developer Release." As one last sanity check, I generated a promo code for myself on app store connect and downloaded the app onto my phone through the app store. I quickly noticed that the SKProductsRequestDelegate method is never fired and the list of in-app purchases is never downloaded from Apple's IAP server. This is similar behavior to when the app is run within a simulator: the IAP data is never loaded.
I am unfamiliar with how the "Pending Developer Release" stage impacts in-app purchases. Will they work as expected when I release the app to the public? Is there some change I need to make and resubmit?
Any help would be greatly appreciated.
As far as I know, it should work seamlessly except for the charging (You won't be charged if your app is downloaded from outside AppStore). So trying to gather logs may help you in this case.
Turns out this was an issue on Apple's end. I contacted support and something on their end had been messed up when they approved the in-app purchases.
Reject from Apple for In APP Purchase
During development in app purchase auto-renewing subscription, I've created test accounts which are able to obtain the product of the in app purchase as well as actually purchasing it without an issue. I've submitted the version to the testFlight Beta and testing in app purchase as well as purchasing it with test accounts works well at sandbox mode environment. However after submitted to the IOS version app to the Apple review, the version of the app can't even retrieve the product, and nothing shows up when I press the button to send the purchase request.
IAP is attached to the binary and IAP is approved with the binary that i submit. But its not displaying in the production. In sandbox its listing fine.
Please tell me how you solved this problem?
Or is this factor not decisive and the application will not be rejected for this reason?
During development I've created test accounts which are able to obtain the price of the in app purchase as well as actually purchasing it without an issue. However after publishing the iOS app to App Store, the version of the app in App store can't even retrieve price of the product, and nothing shows up when I press the button to send the purchase request.
Uninstalling the app and redeploy the development version to the same device got it to work again.
What could be the problem? Is there a way to debug or see logs on the app store downloaded version? (iOS noob here)
Thanks!
I had the same problem. The app was approved but in-app purchases were not working. After 24-48 of app publishing problem was fixed by its own. By the time app approved it was not appearing on App Store through search. After it was indexed on App Store in-apps started to work also.
It takes a little time even when everything is approved.
My binary was approved.
My In-App Purchase (IAP) was approved.
Testing the purchase in development with a sandbox iTunes Account worked great.
Purchasing in production with a real or sandbox iTunes Account would fail.
I didn't have to wait long, something like a couple hours and it just started working.
Now, my binary and my In-App Purhcase were approved at the same time and almost immediately after they were both approved, I released the app version to the store.
I'm not positive, but what I probably should have done was wait a couple hours before releasing that new app version and give the In-App Purchase a chance to "register" or "propagate" in the Production App Store.
Just a recommendation for others.
It takes some time, but the amount isn't predictable. In my case, I launched 3 very similar apps at the same time, so just add some data on this :
Everything was approved, the apps were quickly available on the App Store.
It took about 4 hours for 2 of the apps to show up in search results.
After 6 hours, IAPs started progressively showing up (not all at once) for these
After 9 hours, IAPs for the two apps were complete.
After 12 hours, IAPs for the last app started appearing, but the last app itself still wasn't showing up in search results.
After 14 hours, the last app appeared in search results.
The order in which I hit the "Publish" button didn't seem to have any influence, nor the number of IAPs, weight of the app, etc.
So delays are unpredictable and do not follow a specific rule ("First-in, first-out" or "search results and then IAP")
I found this Apple Tech note, which is includes follow:
Q. App Review has recently approved my application, but my In-App Purchase identifiers in the production version of the application are being returned in the invalidProductIdentifiers array.
A. When an application is approved, the developer must also approve the application for release to the App Store. On approval, the application ID is activated to the App Store. The same activation is required for the in-app purchase identifiers and can only take place once the application is activated. In some cases, the activation of the In-App Purchase identifiers may lag up to 48 hours following the activation of the application.
If the developer does not approve the release of the production application to the App Store, then any new in-app purchase identifiers will not be activated. This is an issue when a developer wants to verify the application prior to activating it on the App Store. If the desire is to test the in-app purchase process for the new items, the application must be activated to the App Store. This is only an issue for new in-app purchase identifiers in a corresponding application submission. Once these in-app purchase identifiers have been activated, application updates to the submission will find that these in-app purchase identifiers are validated, even if the update is not activated.
But in my case it takes even further, about 52 hours.
I found that doing a simple edit of the description in each IAP helps. Just make an edit, save it, revert to the original and save again. It took up to 8 hours for it to propagate across Apple servers. IAP's I didn't do this to had no change.
I am developing an iOS application with In-App Purchase (IAP). I have tested the IAP (in the sandbox environment) and it's working fine. Apple accepted the application and my IAP is ready for sale. But when users download the application and try to buy, they receive the alert the product is not yet available.
For information, I have two Apple accounts, one for the client and one for me. I have added the same productID in the two accounts. In my account it's just for testing and I have used the same productID for the release of the application with the client's account.
Do you think that the use of the same productID can cause this error in the Apple store?
Finally it was a Bug from the Apple Store, after waiting (6 days) it's OK.
how long did you wait after approval? My experience is that 4-hour of waiting, check it out here --- plus you can go thru a few things in the link to see if any of that was not properly set for your app.
IAP fails after release, but no in development stage