Validate App in AppStore. Non-public API usage. UDID.

RogierKoningRogierKoning ESMember ✭✭

I'm newbie in distributing an APP with Xamarin IOs. I'm trying to distribute my App to the AppStore and I'm getting the following error messages:

  1. Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.

  2. Your App contains Non-Public API usage. Please review the errors, correct them, and resubmit your application.

I'm using testflight, and Oxyplot external libraries.
I've found in the VerificationController.cs file that it's using the unique_identifier, as well.

Could anyone help me to solve these issues?

Answers

  • AustinFoxleyAustinFoxley USMember ✭✭

    For test flight you should simply just not include this in your AppStore build. I put in a compilation symbol called AppStore and then i simply do #if !AppStore then do all test flight stuff, and simply remove the dll for that build. It isn't great but it will make your final package smaller anyways.

    For the verification controller i think they fixed it for iOS 6 according to the github, but i'm not positive.

    I have to assume if oxyplot had issues passing certification someone would have fixed/reported it by now.

  • RogierKoningRogierKoning ESMember ✭✭

    I've resolved it just upgrading both Xamarin Studio and Xcode and creating a new project adding all my files.

    Now I'm using Xcode v4.6.3 and Xamarin Studio v.4.0.12 and after creating a new project with all my files and external libraries it worked.

    I noticed that with the older version of the program the monotouch.dll seemed to include UDID request calls but with compiling a new project it does not.

    Now the appStore accepts my project. Thank you, @JamesMontemagno.

  • Recently we had the same problem and we were advised by apple to check our source code for any occurrence of the “uniqueIdentifier” method since this is the method that returns a device's UDID.

    We updated our libraries to the most recent versions and checked whether the app or libraries are calling this method.
    We opened the catalogue bin/iPhone/AppStore/XXXXX.app and:

    • otool -ov * | grep uniqueIdentifier : no results
    • strings * | grep uniqueIdentifier: no results
    • grep -l uniqueIdentifier * : no results

    We have:
    xamarin studio 5.5.4
    xamarin.ios 8.4.0.43
    Xcode 6.1

    Apart from standard Xamarin libraries we use:

    • Google Analytics 3.0.10.1
    • SWRevealViewControllerSDK (used also in another app which passed the app store submission)

    Unfortunately creating a new project didn't help and Apple refused any further assistance in solving this issue.

    Any ideas?

Sign In or Register to comment.