• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!
  • Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Apple reject for "non-public API: setup"?

D

DaveTheHutt

Guest
So I finally launched my app HiveFall just over a week ago. I made some improvements and bug fixes, resubmitted and it got rejected because:

"Your app uses or references the following non-public APIs:

: setup

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change."

The new build was created in GM v1.4.1757, same as the previously accepted one. My version of XCode is up to date (and the same as the one used in the previous build). I've not added any new extensions or anything - the only new stuff is some graphics to help explain the controls.

Has anyone else had this problem? I was tempted to upgrade to the new GM version but wondered if anyone had any insight before potentially rocking the boat for no actual gain.

Thanks in advance for any help,
Dave
 
K

KennySun

Guest
I just got this rejection today too, were you able to figure out how to get around it? This is messing with my launch plans for a game that I've been working on for a while..
 

SnoutUp

Member
Well, this keeps getting better and better. Not only we're not able to publish on Android with 1.4.1757, but now this..? I was hoping to be able to go for iTunes release first, because of that libpng issue with Android (and performance problems with new GM version). Hopefully, this is just some easily fixable fluke. It would be great to get some input from someone who published the iOS game with the latest GameMaker, because I don't see anything like that mentioned in the changelog.
 

rwkay

GameMaker Staff
GameMaker Dev.
Can you please report this to the help desk with the full details from Apple - we have not seen this and its not an API I am familiar with - are you using any extensions as well?

Russell
 
K

KennySun

Guest
Ok so I submitted a new build this weekend and.. it magically got approved? The only notable difference was that I had implemented Game Center Achievements / Leaderboards
 
J

Jacob Tomlinson

Guest
I have also had exactly the same rejection. I've raised this with YoYo support.
 
T

Toppu

Guest
From Apple
  • 2. 5 PERFORMANCE: SOFTWARE REQUIREMENTS
Performance - 2.5.1

Your app uses or references the following non-public APIs:

- setup

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Next Steps

Please revise your app to remove any non-public APIs. If you have defined methods in your source code with the same names as the above-mentioned APIs, we suggest altering your method names so that they no longer collide with Apple's private APIs to avoid your application being flagged in future submissions.

Additionally, if you are using third party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool can output a list of the methods that the library calls and "otool -ov" will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the "nm" tool to verify if any third-party libraries are calling these APIs.

Resources

For information on the "nm" tool, please see the "nm tool" Xcode manual page.

If there are no alternatives for providing the functionality your app requires, you may wish to file an enhancement request.

If you have difficulty reproducing a reported issue, please try testing the workflow described in Technical Q&A QA1764: How to reproduce bugs reported against App Store submissions.

If you have code-level questions after utilizing the above resources, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide:
- complete details of your rejection issue(s)
- screenshots
- steps to reproduce the issue(s)
- symbolicated crash logs - if your issue results in a crash log
 
I'm getting the same rejection, and Apple's reply tells me to refer to their original rejection....

They eventually told me the api in question is called "setup"................................??????????????? ya i smell a setup alright.
 

camerakid

Member
Interestingly mine just went through smoothly without any issues. I had a build up already and I just uploaded yesterday a new update. I did not use gamecenter or any leaderboards or inapp payments.
 
Hey, did any of you put the word "performance" in your release notes or description? Because I did that on three apps that got rejected now due to this issue. I wonder if the forbidden fruit that got bit in the Garden of Eden flags it?

I'll resubmit without that word and see if they take a bite out of it.
 
T

Toppu

Guest
Interestingly mine just went through smoothly without any issues. I had a build up already and I just uploaded yesterday a new update. I did not use gamecenter or any leaderboards or inapp payments.
All my updated binaries for already published apps were rejected (last one was rejected yesterday) with the same "non public api:setup is not allowed" message. And I dont use GS, iap or any other features either, so those aren't the source of the problem.
 
J

jackhigh24

Guest
yes i used the word performance in my listing for an update that id done that helped with performance and it was approved, apple are asses, sometime they reject it sometimes they dont.
 
L

lek

Guest
Just got the same issue today when updating my old game.
I compiled using GMS 1.4.1760, with IAP , & Leaderboard
Whats weird is my other app (with IAP+Leaderboard) just got approved on 22nd sept without any issue.
The difference is that i one got approved is a newly publish app, and the one got rejected is a binary update.
sigh....

Edit:
both my approved and rejected build were built on OS X 10.10.5 + Xcode 7.1.1
 
Last edited by a moderator:

camerakid

Member
All my updated binaries for already published apps were rejected (last one was rejected yesterday) with the same "non public api:setup is not allowed" message. And I dont use GS, iap or any other features either, so those aren't the source of the problem.
My went through with the following settings: I am using GM:S 1.4.1757 and Xcode 7.1.1 OSX El Captain 10.11.4
 
bah, I took the word "performance" out of the description/release notes and apple still just rejects it.... no gamecenter or leaderboards etc.
 
T

Toppu

Guest
Sent support tickets, bug reports about the non-public api: setup issue to YoYo several days ago. Needless to say, they didn't care to reply in any way. -_-
 
T

Toppu

Guest
After following instructions from Apple and searching my XCode project with terminal utility, I got the following matches for "setup":

Binary file myproject/Supporting Files/libyoyo_interpreted.a matches

myproject Tests/myproject_Tests.m: // Put setup code here. This method is called before the invocation of each test method in the class.

Binary file myproject.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate matches
Out of which myproject_Tests.m contains string "setup" in a sample function,
UserInterfaceState.xcuserstate contains one string "setup",
And libyoyo_interpreted.a contains 2,222 strings "setup".

I assume that out of those 2,222 function names only some (or maybe even one) is that problematic "setup", while others just contain "setup" as part of their names (like "JS_ObjectSetup") and not a problem. But I have no idea what to do next. -_-

Out of those functions there is one where "setup" is not a substring in a longer name (hex 00 53 65 74 75 70 00) - "Bitmap5SetupEv.Setup.", with 4 counts out of those 2,222. Could this be the source of the problem?

I hope somebody can help to solve this...
 
Last edited by a moderator:
L

lek

Guest
Hi, all, just a quick update.
to avoid confusion, i will recap what happened to me so far.

I have 3 apps on itunes previously (lets call them A,B,C)
last week, I published another new one (lets call this D), then in a few days later, i uploaded new build for (A,B,C)
(kindly refer to my previous post if you wanted to know the GMS ver & ext i used)

D got approved.
then later C got rejected with the non public api issue.

yesterday, miraculously, A,B got approved......
in terms of GMS ver, and ext used, ABCD are all the same.

perhaps, it is just like what Jackhigh24 said..... itunes is simply random.....
I will try to compile another one for C and try my luck again.
 

zbox

Member
GMC Elder
After following instructions from Apple and searching my XCode project with terminal utility, I got the following matches for "setup":



Out of which myproject_Tests.m contains string "setup" in a sample function,
UserInterfaceState.xcuserstate contains one string "setup",
And libyoyo_interpreted.a contains 2,222 strings "setup".

I assume that out of those 2,222 function names only some (or maybe even one) is that problematic "setup", while others just contain "setup" as part of their names (like "JS_ObjectSetup") and not a problem. But I have no idea what to do next. -_-

Out of those functions there is one where "setup" is not a substring in a longer name (hex 00 53 65 74 75 70 00) - "Bitmap5SetupEv.Setup.", with 4 counts out of those 2,222. Could this be the source of the problem?

I hope somebody can help to solve this...
Surely its something to do with that
Code:
@implementation ${YYXCodeProjName}_Tests

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}
Its calling it's parents setup function which is exactly what apple is rejecting it over. Maybe its not crucial? I will try to remove it before i do my next submission and see if it helps.

Either way this really needs patching very soon because currently you can't guarantee if app store upload will succeed or not.

Surely if GM can't reliably publish to one of two major app stores you'd be onto it right away. rather than weeks and possibly months in the future. But then again its not like I'm suprised. If you want to look on the bright side I guess you could say they are consistent atleast.
 

FrostyCat

Redemption Seeker
Surely its something to do with that
Code:
@implementation ${YYXCodeProjName}_Tests

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}
Its calling it's parents setup function which is exactly what apple is rejecting it over. Maybe its not crucial? I will try to remove it before i do my next submission and see if it helps.

Either way this really needs patching very soon because currently you can't guarantee if app store upload will succeed or not.

Surely if GM can't reliably publish to one of two major app stores you'd be onto it right away. rather than weeks and possibly months in the future. But then again its not like I'm suprised. If you want to look on the bright side I guess you could say they are consistent atleast.
That's a great lead you got there, let us know if it goes through.

Edit: So it has been handled. Let's see if it works better than the Google extensions.
 
Last edited:
Top