MAS rejection due to LDAP

My Mac OS app has been rejected with following reason:

Your app app links against the following non-public framework(s):
/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP

I believe it’s because I have included some calls to CurlsMBS, no problem as I can remove them but would appreciate if someone can confirm this.
Thanks.

Just if someone runs into the same issue:

I have removed all calls to CurlsMBS and the application has been accepted.

But LDAP is a public framework!?

You can use CURLMBS instead with the system library.

[quote=400991:@Alejandro Fresno Meyer]Just if someone runs into the same issue:

I have removed all calls to CurlsMBS and the application has been accepted.[/quote]

I use CURLsMBS in my Mas Apps too. No rejections because of this so far…

/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP

Mayve because the path is fixed and doesn’t use the relative symbolic links that Apple likes to have included in Frameworks?

/System/Library/Frameworks/LDAP.framework/Versions/Current/LDAP

All apps links to specific versions of frameworks.
That’s how it works.

Got the same message this morning from Apple:

[quote]Hello,

We have recently found that your app uses or references the following non-public APIs:

Found private library usage:
/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP

We are constantly reevaluating and identifying non-public APIs that you may have been using for an extended period of time. You should always use public APIs and frameworks and ensure they are up-to-date to prevent this issue in the future.

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

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.

Resources

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

Regards,

App Store Review[/quote]

I think i’ve build the App using a MBS Plugins version before 18.4. I will try a build with the latest MBS preview version now. :slight_smile:

Really strange they consider LDAP non-public!?

may be they only consider LDAP as dangerous !

Considering that’s not in the PrivateFrameworks folder, you might want to challenge them on it, but it looks like LDAP is under the OpenDirectory framework, so I’m wondering why your app uses LDAP.framework.

I can’t answer this @Greg O’Lone :slight_smile:

But i can tell you that Apple just approved the Update made with the latest MBS Plugins: mySalesAgent

Excellent. :slight_smile:

Sascha I just noticed that the toolbar in your app isn’t Retina

Thank you. Most updates of this App are a fight with Apple, because they do not like such (show me a Discount) Apps in the Store… So i make updates only if really necessary. I will put it on my ToDo for a future Update. :slight_smile:

Fixed it for you :slight_smile:

I got this message today as well. My app is probably using an older (1+ years old?) version on MBS. I’ll compile using latest and see what happens.

Stupid question to all (from a person who still use El Capitan / Xojo 2015r1):

Why do you use an old software to build your application for the App Store ?

No pun intended to Christian, that is why I do use “old software" instead of the real name. Also, other software may fall into that category a day or another; even old Xojo IDE may be used to build application (by some) that can be sent to the App Store.

Well, I do have classes for LDAP. Those use the LDAP framework, which is not really private API.
But Apple now flags it. So we don’t link to the framework, but load it at runtime and only if you call a method which needs it.

I just updated mySalesAgent. The KillerToolBar has been replaced with the Xojo Toolbar (should make it Retina’ed) and Light Mode Support has been added :smiley: