Rejection by Apple: Guideline 3.1.1 - In-App Purchase ...

@luaykanaan

Thanks for the confirmation.

Unfortunately, it might not make any difference indeed.

@rob

This does look bad… So it was an issue with Apple review process in the end.

According to the forum, it has been around since early June and still no answer.

It’s still weird that previous version of our apps get validated (week ago) and then abruptly denied.

@d.mach

Just out of curiosity, do you use the Appodeal plugin too ?

As it includes a lot of other ad provider SDK, maybe some of the

code is what triggers Apple bot rejection claim.

No, we just use the basic Corona features and the only active plugin is Flurry analytics.

@d.mach

Thanks for your answer.

Might come from something else then…

Just read another forum post:

https://forums.developer.apple.com/thread/73244

I use collectible coins in my game to unlock harder levels but they can’t be bought.

I know a lot of game that do just that without issue (it even was present in my previously validated versions).

Do you have similar mechanics in yours ? Do you think it can be what’s triggering Apple rejection ?

Thanks

The only thing we did change is the following:

we have defined a string for showing the inapp price in case the price can not be loaded from the store. In this case the predefined hardcoded string is shown. For example:

Someone opens the shop to purchase products, but internet is not available and the correct price can not be loaded from the product online… in this case we show “0.99$” as a hardcoded string.

If the store can be reached the correct string (price) is loaded and then shows: “$0.99” or the price based on the country the product is purchased in.

Maybe it’s the “hardcoded” value!?

I’m starting to suspect my ‘collect coins to unlock levels’ feature to be the source of the rejection as,

according to Apple guidelines:

3.1.1 In-App Purchase:

  • If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may use in-app purchase currencies to enable customers to “tip” digital content providers in the app. Apps and their metadata may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than in-app purchase.

 

Maybe the last iOS reviewer read that quite strictly (compare to previous ones validation my app).
 

@d.mach, do you have a similar feature that could explain the rejection too ?
It’s not “another payment method” but maybe Apple would disagree here…
 

PS: I sent another message to the reviewer, still waiting…

Just to be clear, there is ZERO reason to have multiple build.settings files 99.9% of the time. The build.settings file has blocks that are OS specific and if you’re building for iOS, the Android stuff is ignored.  For plugins, even if you don’t use “supportedPlatforms”, we can’t link Android libraries to an iOS build anyway. Only in a couple of odd cases is “supportedPlatforms” even needed.

In other words, there is no way Apple is seeing any “Google” code in our builds.  Just keep one, well tabbed, well-organized build.settings and you should be good to go.

Rob

@GoG I could see where a reviewer might get tripped up on in-game currency, in particular, if you don’t let them buy coins.  Some of Apple’s reviewers are new and they usually feel they have to be the most strict.  But they should be able to explain that to you.

Rob

Thanks for your answer @Rob.

I’m still hoping the reviewer will reply… someday :expressionless:

You can’t buy coins indeed, but the “earn to unlock” mechanism is as old as platformers (plus the IAP does unlock all levels).

It will be sad to confirm that Apple just don’t allow it (even if it shouldn’t be any of their concern…)

Guys look here . Other developers also have this problem. Apple scans the binary for Non Apple Payment stuff. Obviously Stripe and more. But it looks like their bot doesn’t work

https://forums.developer.apple.com/message/232579#232579

http://​https://forum.unity.com/threads/standard-events-may-protentially-cause-rejection-from-apple-app-store.503721/

@festival

Thanks for the additional info.

If it is an issue with Apple bot, this is really bad as there is not much we can do…

Also, I finally received an answer from the review team (same as @d.mach):

  • 3. 1.1 Business: Payments - In-App Purchase

Hello,

Thank you for your reply. Our team has confirmed this app contains non Apple payment methods.

To continue review, it would be appropriate to remove all non Apple payment methods, then resubmit a new binary for review.

Note: Continuing to hide functionality within your app or other dishonest acts may result in the removal of your apps from the App Store and termination of your Apple Developer Program membership and all associated memberships. 

Thank you,

App Store Review

As you can see, this is not helpful at all.

I asked for details and they just confirmed it…

No comment.

@GoG I go the same message like you.

Will sent them a email where I will tell them which 3rd party SDK the binary had and made a Demo Video of the In-App Purchase mechanism in the app.

When you talk with App Review you need to give them all information You have. They don’t say which code breaks. 

My concern is even when I remove ALL 3rd party Sdks the review might break. (Note: It’s not a Corona app)

Their Warning to remove all apps in their message scares me off a little bit.

@festival

It is scary indeed.

And I can’t just remove my 3rd parties SDK without breaking essential features either.

On forums, some people say it is because the Apple bot pick up keywords such as “payment”

in the app code that don’t belong to Apple IAP framework (even if it is not another payment method).

I think it’s weird as previous versions of my app got validated (I didn’t change my 3rd parties since).

I was thinking more of a rejection from a human reviewer in this case (could explain the sudden change).

Please keep us updated if you manage to get your app approved.

I’ll try to get more info from the review team on my side and post it here.

Note: I sent them a screenshot of my single IAP menu/button with my reply

but they didn’t seem to have taken it into account, btw…

Someone at the Apple forum posted , he removed Rewarded Ads in his game, and got approved. 

Hope they don’t mean “Rewarded Ads” is “Non Apple Payment”  since every Ad Network has that it in their SDKs 

We also got rejected for this exact same reason last week. We asked for clarification from the reviewer and got the same reply as others in this thread: just stating that we are using a non-Apple payment method. This is puzzling since we do not have any third party non-Apple payment methods implemented. We do have some third party ad networks as well as rewarded ads implemented but these have never been a problem before in the last 3 years that our app has been live…

 

We are currently trying to decide what to do next. Please keep us updated if you manage to get any clarification for what could be causing this issue and if you find a way to get your app approved.

Our application has also been rejected, and the reason is 3.1.1. One of my applications was completely without third-party payment, but was also 3.1.1. Now I’ve considered whether the engine is a problem. Hopefully the official will come out and discuss it together.

People who have the issue used  Cocos2d, Cocos2d-x, Unity3d and now Corona.  So it’s across frameworks. 

A list what it may be can be (summarize across Forums):

  1. Billing SDK’s like Stripe

  2. 3rd party SDKs ad networks, analytics 

  3. To much “Purchase”,“Payment” symbols  in code not related to StoreKit API

I am sure that there are no third-party libraries in my game, and also deleted all the pay fields… In my code, I basically couldn’t find the keyword pay. Even the packaged computer has been rejected… I really don’t know what to do with…

I don’t understand. Sure you don’t have ad networks? Facebook SDK has a lot of “payment” symbols 

Maybe test the binary thru TestFlight beta review would help. But who knows… 

It’s very hard to make changes when there is NO real info from the Review team.

Are you a corona official? Or corona user like me?

@614751320  I’m just a App Review victim like you. I used Cocos2d in my app but it turns out others have the problemen too