iosxcode5cocos2d-x-2.x

Submission deny with non-public API MPMoviePlayerContenPreloadDidFinishNotification


I just received the following rejection when submitting an update to my game using Xcode 5.1.1:

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/XXX.app/XXX: MPMoviePlayerContentPreloadDidFinishNotification

with XXX is my app name.

As far as I know I'm not using this anywhere. I just added MediaPlayer.framework in my project. Does anyone know how to fix this issue?

Any help would be appreciated!


Solution

  • To find out which part of your executable requires this symbol, disable link with MediaPlayer.framework and look for the libraries which generates a link error with symbol MPMoviePlayerContentPreloadDidFinishNotification. After you find out who is guilty, you can update or remove this library from your project.

    In my case it was old version of flurry:

    Undefined symbols for architecture armv7:
      "_MPMoviePlayerContentPreloadDidFinishNotification", referenced from:
          -[FlurryVideoPlayer playVideo:view:ad:] in libFlurryAds.a(libFlurryAds.a-armv7-master.o)
          -[FlurryVideoPlayer moviePreloadDidFinish:] in libFlurryAds.a(libFlurryAds.a-armv7-master.o)
    

    I updated flurry to the latest version and checked that it's not requires anymore MPMoviePlayerContentPreloadDidFinishNotification symbol. Problem was solved.