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 just checked that build. It's not referencing those API's anymore.
Could you try doing a clean on you project, and deleting the bin/obj folders in your project directory. It may also be worth removing the references and adding them again. It sounds like a caching issue, which we've personally had experience here with using Xamarin Studio in the past.
Let me know if this works and I apologize for the inconvenience.
Hi,
I had done a Clean before doing the last build, but this time I also wiped the bin and obj folders. I also removed the references and added them back again, but its still complaining about the non-public selectors when I do an Application Upload of the fresh build.
I'll "developer reject" the binary again, then reboot the Mac, remove any old DLLs if present, wipe those folders etc etc to see if I can figure out where it is going wrong.
ThanksRichard
I just examined the IG.dll file dated June 13th and it does contain the text string gridView:heightForHeaderInSection
To rule out any installation/patch type issue I renamed the /Developer/Infragistics folder, and installed the package from yesterday again. I then looked at the IG.dll file in
/Developer/Infragistics/NUCLIOS 2013 Volume 1\MonoTouch and again it contains that string.
I assume the presence of that string in the DLL is what is causing Apples code analysis tools to reject my binary?
Any ideas what I should try next?
Thanks
Richard
Can you do a Get Info on the main framework file and give me the version number listed?
The framework would probably be at /Developer/Infragistics/NUCLiOS 2013 Volume 1/Framework/ on your machine.
Sorry but GetInfo does not seem to show anything like a version number, and I tried all the folders and some of the files such as the 9.7MB IG Unix Exe file under the Framework folder. I'm not a Mac expert so I may be missing something obvious.
If I look at info.plist in /Developer/Infragistics/NUCLiOS 2013 Volume 1/Framework/IG.framework/Versions/A/Resources it has a Bundle Version version of 2013.1.1 if that's any help?
All the files in the NUCLiOS folder seem to be from 13June2008 around 14:08, again I don't know if that helps or not?
I just ran strings against both IG.dll and the IG exec file and both file outputs included the string heightForHeaderInSection. So I either downloaded/installed the special build wrong, or the special build still has them??
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?