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 Richard,
I wanted to let you know we're still on the case. Sorry for any delay.
When you said you checked the dll for the strings, can i ask what you're checking?
We loaded the dll into Xamarin studio, and using the Assembly Browser, we expanded the Infragistics node, and selected the IGGridViewDelegate. In there, if you do a search on "header", four entries should show up. You should should see something like "heightForSectionHeader" instead of the old string "heightForHeaderInSection".
I've attached a screen shot that shows what we're specifically looking at.
In the mean time, we're trying out the specific installer that you used on various clean machines, to make sure nothing is getting cached on our machines.
We will keep you posted.
Thanks for your patience.
One other thing, i wanted to explain how to get the version information on a the IG.framework. I've attached a screenshot, to demonstrate:
Just right click on the ig.framework file, select Get Info, and you should see a version that ends in .191 like in the screenshot.
Hi,
I did that GetInfo and its 2013.1.191, thanks.
When I look at IG.dll in Xamarin Studio I do see the heightForSectionHeader, not the conflicted name.
I ran strings again the IG.dll in /Developer/Infragistics/NUCLiOS 2013 Volume 1/Monotouch/IG.dll, and the IG file under the framework folder, redirecting the output to a file. I then searched the file and the strings gridView:heightForHeaderInSection is there, right next to gridView:heightForSectionHeader! So both old and new methods seem to be mentioned in the IG.dll file.
Below is a copy&paste from the relevant part of the strings output file:
gridView:heightForRowAtPath:gridView:heightForHeaderInSection:gridView:heightForSectionHeader:gridView:heightForFooterInSection:gridView:viewForFooterInSection:gridView:viewForHeaderInSection:gridView:viewForSectionHeader:gridView:titleForHeaderInSection:gridView:titleForFooterInSection:
Regards,Richard
Hi guys,
Ok thats was actually really helpful. We had a string inside the one of our .m files that had that method in it. Apparently, it looks like all apple is doing is a simple string check on the framework, just like Richard ran.....amazing.
I'm fixing this right this second. And as soon as its all checked in, we'll do a few sanity tests, to make sure nothing new is introduced, and get you a new build today.
I really appreciate your help on this. We haven't ran into an issue like this before, so it's a learning experience for us as well.
Thanks!
Steve,
Please remember to generate a trial package for me again when you've done, ok?
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?