The app references non-public symbols: MPMoviePlayerContentPreloadDidFinishNotification

I was trying to submit an update to a Corona app that is already live on the App Store.

This isn’t my first update for this app either, I’ve updated it a couple of times before.

This time, when uploading the app as a submission to Apple, I received this notice:

==============================================================

“Your app contains non-public API usage. Please review the errors, correct them, and resubmit your application.”

“The app references non-public symbols in <MYAPPNAME>: MPMoviePlayerContentPreloadDidFinishNotification”

“If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app’s nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview@apple.com.”

==============================================================

I don’t use a MPMoviePlayerController in the app or even anything to do with movies. It is a fairly simple app that I need to update occassionally - with the only changes being changes to the text in the app. Where this has never been an issue before, it is now, and I would guess it has something to do with Apple’s recent changes to iTunes Connect. Any thoughts on what could be causing this in our Corona app and what would be a good next step for me to actually be able to submit this update build over to Apple?

Thanks in advance!

The latest public build - 2393 - fixed this for me, but with one new twist:

Needed to add CFBundleShortVersionString = “1.6”, to the plist section in build.settings

(The “1.6” matches my build number for this update in iTunes Connect, use the appropriate build number for your app)

Found the answer through:

http://forums.coronalabs.com/topic/50851-resolved-app-submission-reject-your-app-contains-non-public-api-usage/page-5

AND

http://forums.coronalabs.com/topic/50461-publish-app-failure/

I’am using the latest public build 2014.2393a and I have set the CFBundleShortVersionString to the same number as the build on Itunes connect. Still getting this error (see picture).

What now?

What plugins are you using?

2393a should not have this error.  Are you 100% sure you’re building with it?

Rob

Yes 2393a with xCode 6.0 (6A313). To be sure, I uninstalled Corona SDK and re-downloaded the public 2393a build. Here is my build.config file:
 

settings = { orientation = { default = "portrait", supported = { "portrait", } }, iphone = { plist = { CFBundleShortVersionString = "1.019", UIPrerenderedIcon = true, UIAppFonts = { "Impact2.otf", "CODE Bold.otf", }, CFBundleIconFile = "Icon.png", CFBundleIconFiles = { "Icon.png", "Icon@2x.png", "Icon-60.png", "Icon-60@2x.png", "Icon-72.png", "Icon-72@2x.png", "Icon-76.png", "Icon-76@2x.png", "Icon-Small-50.png", "Icon-Small-50@2x.png", "Icon-Small.png", "Icon-Small@2x.png", }, UIApplicationExitsOnSuspend = false, FacebookAppID = "425404020855077", CFBundleURLTypes = { { CFBundleURLSchemes = { "fb425404020855077" }, }, }, }, }, android = { usesPermissions = { "android.permission.INTERNET", "com.android.vending.CHECK\_LICENSE", "com.android.vending.BILLING", "android.permission.WRITE\_EXTERNAL\_STORAGE" }, }, plugins = { -- key is the name passed to Lua's 'require()' ["CoronaProvider.ads.iads"] = { -- required publisherId = "com.coronalabs", }, -- key is the name passed to Lua's 'require()' ["CoronaProvider.ads.inneractive"] = { -- required publisherId = "com.inner-active", }, ["CoronaProvider.analytics.flurry"] = { -- required publisherId = "com.coronalabs", }, -- key is the name passed to Lua's 'require()' ["plugin.PinsightMedia"] = { -- required publisherId = "com.PinsightMedia", }, ["facebook"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, ["iphone-sim"]=true }, }, ["CoronaProvider.native.popup.social"] = { --required publisherId = "com.coronalabs", }, }, }

I would suggest maybe commenting out the non-Corona plugins and see if one of them is triggering the issue.

Rob

It turns out the problem is in the PinsightMedia ad provider. I have disabled the plugin and removed the code for displaying their ads. Now I was able to upload my app to iTunes.

I suggest you contact them so this issue can be resolved.

The latest public build - 2393 - fixed this for me, but with one new twist:

Needed to add CFBundleShortVersionString = “1.6”, to the plist section in build.settings

(The “1.6” matches my build number for this update in iTunes Connect, use the appropriate build number for your app)

Found the answer through:

http://forums.coronalabs.com/topic/50851-resolved-app-submission-reject-your-app-contains-non-public-api-usage/page-5

AND

http://forums.coronalabs.com/topic/50461-publish-app-failure/

I’am using the latest public build 2014.2393a and I have set the CFBundleShortVersionString to the same number as the build on Itunes connect. Still getting this error (see picture).

What now?

What plugins are you using?

2393a should not have this error.  Are you 100% sure you’re building with it?

Rob

Yes 2393a with xCode 6.0 (6A313). To be sure, I uninstalled Corona SDK and re-downloaded the public 2393a build. Here is my build.config file:
 

settings = { orientation = { default = "portrait", supported = { "portrait", } }, iphone = { plist = { CFBundleShortVersionString = "1.019", UIPrerenderedIcon = true, UIAppFonts = { "Impact2.otf", "CODE Bold.otf", }, CFBundleIconFile = "Icon.png", CFBundleIconFiles = { "Icon.png", "Icon@2x.png", "Icon-60.png", "Icon-60@2x.png", "Icon-72.png", "Icon-72@2x.png", "Icon-76.png", "Icon-76@2x.png", "Icon-Small-50.png", "Icon-Small-50@2x.png", "Icon-Small.png", "Icon-Small@2x.png", }, UIApplicationExitsOnSuspend = false, FacebookAppID = "425404020855077", CFBundleURLTypes = { { CFBundleURLSchemes = { "fb425404020855077" }, }, }, }, }, android = { usesPermissions = { "android.permission.INTERNET", "com.android.vending.CHECK\_LICENSE", "com.android.vending.BILLING", "android.permission.WRITE\_EXTERNAL\_STORAGE" }, }, plugins = { -- key is the name passed to Lua's 'require()' ["CoronaProvider.ads.iads"] = { -- required publisherId = "com.coronalabs", }, -- key is the name passed to Lua's 'require()' ["CoronaProvider.ads.inneractive"] = { -- required publisherId = "com.inner-active", }, ["CoronaProvider.analytics.flurry"] = { -- required publisherId = "com.coronalabs", }, -- key is the name passed to Lua's 'require()' ["plugin.PinsightMedia"] = { -- required publisherId = "com.PinsightMedia", }, ["facebook"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, ["iphone-sim"]=true }, }, ["CoronaProvider.native.popup.social"] = { --required publisherId = "com.coronalabs", }, }, }

I would suggest maybe commenting out the non-Corona plugins and see if one of them is triggering the issue.

Rob

It turns out the problem is in the PinsightMedia ad provider. I have disabled the plugin and removed the code for displaying their ads. Now I was able to upload my app to iTunes.

I suggest you contact them so this issue can be resolved.

Hi everyone,

I’m having an issue submitting a version 1.2 of my App “Happy Skeleton Factory” to the App Store via Xcode 6.1.1.

 

This is the first time I’m submitting my app using Corona SDK Enterprise and the minimum iOS version was set to 8.0. When I submit the Archive > Validate option in Xcode - I get the following error:

 

"! Your app contains non-public API usage. Please review the errors, correct them, and resubmit your application.”

“! The app references non-public symbols in Payload/happyskeletonfactory.pp/happyskeletonfactoy: MPMoviePlayerContentPreloadDidFinishNotification”

 

I’m using the Game Center plugin as well as 3 ad networks for my apps - AdMob, iAds and Vungle. I am able to compile the app and view it on my iDevices (iPad, iPhone and iPod) without error.

 

I’ve searched the Corona forums and there appears to be a couple of issues surrounding this problem:

 

Forum post #1 (http://forums.coronalabs.com/topic/51035-the-app-references-non-public-symbols-mpmovieplayercontentpreloaddidfinishnotification/) suggests that the  CFBundleShortVersionString needs to match the current version set in iTunes Connect. For me I’ve set it in the Info-plist & App-info.plist and in my build settings as 1.2. I’ve searched within the Xcode project and replaced it where it needs to be, ran a project clean and rebooted to make sure so I don’t believe it’s this.

 

Forum post #2 (http://forums.coronalabs.com/topic/53079-your-app-contains-non-public-api-usage/) suggests upgrading Corona SDK. I’ve upgraded to the the latest build 2015.2537 (2015.1.16). I’ve updated to the latest version, rebooted my computer and restarted Xcode. This didn’t solve the problem.

 

Forum post #3 (http://forums.coronalabs.com/topic/50851-resolved-app-submission-reject-your-app-contains-non-public-api-usage/) suggests to consult Apple to investigate if there is an issue. There is a note 

 

You should reference the fact that GameCenter’s public API (‘setComposeViewDelegate:’ a.k.a the ‘composeViewDelegate’ property in GKFriendRequestComposeViewController) is being incorrectly flagged as a non-public API. 

 

I contacted Apple and received the following reply:

 

“The symbol that this app was rejected for has been deprecated. It would be appropriate to change the reference to the replacement selector, MPMoviePlayerLoadStateDidChangeNotification. Once this modification has been made then ApplicationLoader should not give this warning.”

 

I’ve upgraded all the plugins in my CoronaEnterprise/lib folder but my Corona libplayer.a is about a year old (around 9.9Mb).

 

I’m not sure what I should do? Is anyone else still having problems submitting?

What version of Corona Enterprise are you using?

This MPMoviePlayerLoadStateDidChangeNotification problem was solved a couple of public builds ago.

Rob

Thanks Rob - I’ll download and install the latest build of Corona Enterprise and try again.

Rob - do I need to upgrade my Corona Enterprise project as well or should replacing /Applications/CoronaEnterprise with the latest build be enough? If so then I’ve already replaced CoronaEnterprise with the latest build and it still has that error.

EDIT: I’ve got it working now.

For reasons unknown - my project didn’t reference the /Applications/CoronaEnterprise alias… instead it pointed to old CoronaEnterprise files bundled into my project. Perhaps the result of a copy and paste from a previous application.

I added the alias to the project, deleted the old CoronaEnteprise folder in my project, downloaded updates to all the plugins I used, archived and validated and it appears to be working.

Hi everyone,

I’m having an issue submitting a version 1.2 of my App “Happy Skeleton Factory” to the App Store via Xcode 6.1.1.

 

This is the first time I’m submitting my app using Corona SDK Enterprise and the minimum iOS version was set to 8.0. When I submit the Archive > Validate option in Xcode - I get the following error:

 

"! Your app contains non-public API usage. Please review the errors, correct them, and resubmit your application.”

“! The app references non-public symbols in Payload/happyskeletonfactory.pp/happyskeletonfactoy: MPMoviePlayerContentPreloadDidFinishNotification”

 

I’m using the Game Center plugin as well as 3 ad networks for my apps - AdMob, iAds and Vungle. I am able to compile the app and view it on my iDevices (iPad, iPhone and iPod) without error.

 

I’ve searched the Corona forums and there appears to be a couple of issues surrounding this problem:

 

Forum post #1 (http://forums.coronalabs.com/topic/51035-the-app-references-non-public-symbols-mpmovieplayercontentpreloaddidfinishnotification/) suggests that the  CFBundleShortVersionString needs to match the current version set in iTunes Connect. For me I’ve set it in the Info-plist & App-info.plist and in my build settings as 1.2. I’ve searched within the Xcode project and replaced it where it needs to be, ran a project clean and rebooted to make sure so I don’t believe it’s this.

 

Forum post #2 (http://forums.coronalabs.com/topic/53079-your-app-contains-non-public-api-usage/) suggests upgrading Corona SDK. I’ve upgraded to the the latest build 2015.2537 (2015.1.16). I’ve updated to the latest version, rebooted my computer and restarted Xcode. This didn’t solve the problem.

 

Forum post #3 (http://forums.coronalabs.com/topic/50851-resolved-app-submission-reject-your-app-contains-non-public-api-usage/) suggests to consult Apple to investigate if there is an issue. There is a note 

 

You should reference the fact that GameCenter’s public API (‘setComposeViewDelegate:’ a.k.a the ‘composeViewDelegate’ property in GKFriendRequestComposeViewController) is being incorrectly flagged as a non-public API. 

 

I contacted Apple and received the following reply:

 

“The symbol that this app was rejected for has been deprecated. It would be appropriate to change the reference to the replacement selector, MPMoviePlayerLoadStateDidChangeNotification. Once this modification has been made then ApplicationLoader should not give this warning.”

 

I’ve upgraded all the plugins in my CoronaEnterprise/lib folder but my Corona libplayer.a is about a year old (around 9.9Mb).

 

I’m not sure what I should do? Is anyone else still having problems submitting?

What version of Corona Enterprise are you using?

This MPMoviePlayerLoadStateDidChangeNotification problem was solved a couple of public builds ago.

Rob

Thanks Rob - I’ll download and install the latest build of Corona Enterprise and try again.