Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

Rejected: IAP works for beta testers, not for Apple reviewers
Started by colinmorgan Dec 02 2019 01:12 AM

10 replies to this topic
ios iap iap badger
[TOPIC CONTROLS]
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

colinmorgan

[GLOBAL: userInfoPane.html]
colinmorgan
  • Observer

  • 29 posts
  • Corona SDK

I've run into a problem with the IAP on an app of mine that is preventing me from passing App Store review. All of my in app purchase products work flawlessly for me and my beta testers, however some (but not all) of the IAP is failing for Apple's review staff. I am fairly certain that it is not a flaw in my code because a binary I built in mid-October was approved for sale by Apple, and I have made no changes to my IAP since then.

I believe this is related to the new Apple IAP plugin. The build that was approved was built with Corona 2019.3476 targeting iOS SDK 12.1 before I activated the plugin. Builds made after I activated the plugin, both with Corona 2019.3476 targeting iOS SDK 12.1 and with Corona 3555 targeting 13.2 have been rejected by the App Store.

In this post vlads mentioned that with the new IAP plugin has "...very long lag issues..." and I believe this is triggering a timeout. Unfortunately, I have no particular was of verifying this. The error message being reported is "Transaction failed. No response from App Store", which is the generic IAP Badger response. However, I know that, in general, responses from the app store are being received, since some transactions work for the tester and I can see from that screenshot that was provided that the localized product catalog is being loaded and localized price information is being displayed for all of the IAP. (Not to mention the fact that everything works fine for me and my beta testers.)
One thing I'd be curious to try is doing a build with 3476 targeting 12.1 with the new Apple IAP plugin deactivated, but I don't know how I'd accomplish that, since it is not called in build.settings- apparently it's either there or it isn't, as dictated by my Corona account.

If anyone has any insight into this issue, I'd very much appreciate it.



[TOPIC: post.html]
#2

vlads

[GLOBAL: userInfoPane.html]
vlads
  • Contributor

  • 972 posts
  • Corona Staff

I would suggest trying latest build which targets iOS13.2, but no ideas otherwise. IAP plugin should not give different results than built-in IAP functionality, unless you want receipts. IAP plugin only provides additional receipt handling funcitonality, repeating core functions.



[TOPIC: post.html]
#3

colinmorgan

[GLOBAL: userInfoPane.html]
colinmorgan
  • Observer

  • 29 posts
  • Corona SDK

vlads,

The first binary that was rejected was build 3555 targeting iOS 13.2.

Would it be possible to turn the Apple IAP plugin off on my account? I'd like to try submitting a build without it and see if that works.



[TOPIC: post.html]
#4

vlads

[GLOBAL: userInfoPane.html]
vlads
  • Contributor

  • 972 posts
  • Corona Staff

IAP plugin is not getting linked if you do not include it in build.settings.



[TOPIC: post.html]
#5

colinmorgan

[GLOBAL: userInfoPane.html]
colinmorgan
  • Observer

  • 29 posts
  • Corona SDK

The documentation for the Apple IAP plugin does not have any instructions regarding Project Settings. Previously, there were no plugins to activate for iOS in-app purchasing, and Rob described the new plugin as a "drop in replacement", which led me to believe that, like the prior incarnation of Apple IAP, it was just integrated into the build automatically.

Perhaps the problem is that I think I'm using it, but I'm not. How should it be activated in build.settings?



[TOPIC: post.html]
#6

vlads

[GLOBAL: userInfoPane.html]
vlads
  • Contributor

  • 972 posts
  • Corona Staff

Sorry. For plugin you have to include it in build settings, and require it. I'm certain of it:

settings =
{
    plugins =
    {
        ["plugin.apple.iap"] = { publisherId = "com.coronalabs" },
        ["plugin.apple.iap.helper"] = { publisherId = "com.coronalabs" },
    }
}

Then in Lua to use it you have to

local store = require "plugin.apple.iap"

 



[TOPIC: post.html]
#7

colinmorgan

[GLOBAL: userInfoPane.html]
colinmorgan
  • Observer

  • 29 posts
  • Corona SDK

vlads,

Thank you for the clarification.

Now I run into the problem that I use IAP Badger, so nowhere in my code do I have a [ store = ... ] statement- it's all handled behind the scenes. Does anyone using IAP Badger have any experience with integrating the new Apple IAP plugin?



[TOPIC: post.html]
#8

colinmorgan

[GLOBAL: userInfoPane.html]
colinmorgan
  • Observer

  • 29 posts
  • Corona SDK

vlads,

I copied and pasted the two relevant lines of code into my build.settings file and built to device. Unfortunately, the app crashes as soon as

local store = require "plugin.apple.iap"

is called. There is no runtime error, and the device syslog through the Corona Console doesn't tell me anything that appears useful- the app just closes. When I comment the new plugins out of build.settings and change back to calling the Store as usual, everything works fine.

Suggestions?



[TOPIC: post.html]
#9

GamingStudio17

[GLOBAL: userInfoPane.html]
GamingStudio17
  • Contributor

  • 174 posts
  • Corona SDK

We have the same problem  :( What to do?



[TOPIC: post.html]
#10

vlads

[GLOBAL: userInfoPane.html]
vlads
  • Contributor

  • 972 posts
  • Corona Staff

Same problem like in "App is crashing" or in App gets rejected? What is specific message it is getting rejected with? I just tried building my sample app and it worked perfectly.

Note, you would have to open main.lua and edit prodList contents to have your IAPs.



[TOPIC: post.html]
#11

GamingStudio17

[GLOBAL: userInfoPane.html]
GamingStudio17
  • Contributor

  • 174 posts
  • Corona SDK

Same problem like in "App is crashing" or in App gets rejected? What is specific message it is getting rejected with? I just tried building my sample app and it worked perfectly.

Note, you would have to open main.lua and edit prodList contents to have your IAPs.

Guideline 2.1 - Performance - App Completeness


We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 13.2.3 on Wi-Fi.

Specifically, while the in-app purchases are responsive, we received an error message when we attempted to take action on your in-app purchases.

Next Steps

When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.

Resources

You can learn more about testing in-app purchase products in your development sandbox environment in App Store Connect Developer Help.

For more information on receipt validation, please see What url should I use to verify my receipt? in the In-App Purchase FAQ.

Learn how to generate a receipt validation code in App Store Connect Developer Help.



Please see attached screenshot for details.




[topic_controls]
[/topic_controls]

Also tagged with one or more of these keywords: ios, iap, iap badger