HI.
My name is Aderval, and I am testing the NuclIOS component. So far I am very glad with it, with just one or two issues that I was planning to submit to the support team, but maybe it is just a matter of learning the API.
Well, my last real test was submitting my app to the App Store, in order to check if it would pass without problems. To my surprise, I've got a Binary Rejected status, with the following text:
"We found that your app uses one or more non-public APIs, which is not in compliance with the App Store Review Guidelines. The use of non-public APIs is not permissible because it can lead to a poor user experience should these APIs change.
We found the following non-public API/s in your app:gridView:heightForHeaderInSection:gridView:viewForHeaderInSection: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."
I saw in the NuclIOS that these methods really exists on the GridView API. So, how can I bypass this in order to approve my App??
Regards,
Aderval Mendonça
Hello Aderval,
Thats very strange. I've submitted multiple apps with both of those protocol methods implemented and never got a rejection. In fact our Nuclios samples browser itself implements both of those methods in various samples and again has never been rejected. Plus we've submitted that specific app to the app store 4 times already.
I believe when your app gets rejected, you can request more information. Would it be possible to find out out what internal API's they're referencing?
Also, are you explicitly using those API's or was the rejection completely random?
I absolutely want to get to the bottom of this, so we can avoid these issues in the future.
Thanks,
-SteveZ
Hi Steve.
They state that the rejected API's were:
gridView:heightForHeaderInSection:
gridView:viewForHeaderInSection:
I am not explicitly using any of them... just those that are in the developer's guide (Adding a GridView).
Yours,
Aderval
Hi Aderval,
Yes, i saw the 2 offending methods in your first post. I was referring to finding out, to which Internal API's those 2 methods belong to. For example, does it belong to some internal control or something along those lines. I apologize for not being more clear in my previous post.
My first guess is that that Apple has made a mistake here. Maybe, confusing our grid as being internal. Seeing as nothing else has gotten rejected, and those API's have existed since we released in October, something weird must be happening.
Could you also let me know what frameworks' your app is referencing? Perhaps, the reason our apps never got rejected, was b/c we're not referencing a specific framework that actually does have those methods internally?
I understand this must be frustrating, and again i apologize as i don't really know what has happened. However, changing a public API is really a big deal, and something we take very seriously. Plus, if there is some sort of internal gridview somewhere in Apple's API's, we need to make sure no other API's violate this.
Thanks!
I'm not using any of the methods explicitly. What I did was: copied the example that is in the NucliOS documentation (adding a gridView...), and changed just some lines of code inside the method's implementation (only cellAt, numberOfRowsInSection, and numberOfColumnsInGridView). That was all. I'm only using the libraries/frameworks that your components requires, as stated on the documentation.
I think Apple started recently to analyze code and reject calls to methods of objects that they do not expose. It seems to not happen before. Just take a look at this (recent) discussion: https://github.com/kolinkrewinkel/KKGridView/issues/150
I hope you can help me.
Thanks Ammar! Worked like a champ! Kudos!
Hi James,
I just verified the build on our download server and it does include this fix. The reason for the continued issue is probably that xcode is hanging on to the old build.
Please follow these steps to wipe out NucliOS from your mac:
1. Close xCode
2. In Terminal (you'll need an admin account) run the following commands: (you might need to change the folder structure if you xcode is in a different location)
#Remove Docsets from "/Applications/Xcode.app/Contents/Developer/Documentation"rm -R -f "/Applications/Xcode.app/Contents/Developer/Documentation/DocSets/com.infragistics.IG-Chart.docset"
rm -R -f "/Applications/Xcode.app/Contents/Developer/Documentation/DocSets/com.infragistics.IG.docset"
#Remove Framework from "/Applications/Xcode.app/Contents/Developer/Library/Frameworks"rm -R -f "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/IG.framework"rm -R -f "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/IGChart.framework"
#Remove product root folder "/Developer/Infragistics/NUCLiOS 2013 Volume 1"rm -R -f "/Developer/Infragistics/NUCLiOS 2013 Volume 1"
#remove pkg references
pkgutil --volume / --forget com.infragistics.infragisticsNucliosTrial.postflight.pkgpkgutil --volume / --forget com.infragistics.NUCLiOS.API.13.1.pkgpkgutil --volume / --forget com.infragistics.NUCLiOS.docs.13.1.pkgpkgutil --volume / --forget com.infragistics.NUCLiOS.framework.13.1.pkgpkgutil --volume / --forget com.infragistics.NUCLiOS.monotouch.13.1.pkgpkgutil --volume / --forget com.infragistics.NUCLiOS.samples.13.1.pkg
3. If you have any copies of NucliOS dll that are referenced by Xamarin, please delete
4. Run the Service release install you just downloaded
5. in your Xamarin project do a full clean up (make sure you are referencing the new dll and not any older copy) the dll you need are located here "/Developer/Infragistics/NUCLiOS 2013 Volume 1/MonoTouch"
I believe this should. Let me know
Thanks Ammar! I downloaded and installed the SR successfully then opened Xamarin Studio and deleted the old reference and referenced the latest NucliOS (8/29/2013) and compiled then submitted the binary to Apple and this is the message I get….
to get the latest fix you can go to your account page on Infragistics.com, register your key if you have not done so already then navigate to "Key and Downloads" in the navigation bar on the right. Select your key from the list then switch to the "Service Release" tab and you'll find the Service release download for NucliOS.
See attached screenshot for detail.
Ammar
Hi Ammar, I am having the same issue with Apple submission. I have purchased the latest NucliOS suite for Xamarin and still no luck. I am able to see the NucliOS Component in Xamarin Studio but there is no update or get latest version available?