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
Aderval,
Here is the download URL for the latest build which include the fix from Steve: http://download.infragistics.com/Download/hotfixes/pre/!Special/IOS/NucliOS_20131.185_Trial_SR.zip
Please note that this is a temporary URL.
I hope this fix takes care of the issue with submitting your app.
Thanks for choosing Infragistics
Ammar
Hi Ammar,
Thanks. I'm downloading it right now and will install, make any changes needed and then submit again to App Store. I'll let you know if it worked.
Best Regards,
Hi. Sorry for my delay. I needed to switch to another project for some days, but I'm back now.
I've downloaded the package that you created, removed the old one, and installed the new one.
There was no need to change anything in my code. Is this what was supposed to happen?
If yes, I'll try to submit the app to the Store.
Hi. I am currently testing my app in order to submit to App Store. It seems everything is working fine, except for the gauge. When I try to display it, I get the following error:
2013-06-11 09:48:36.821 Dashboard[1139:11303] -[GXamRadialGaugeView handleRangeBrushesChangedWithBrushCollection1:brushCollection2:]: unrecognized selector sent to instance 0x78503b0
2013-06-11 09:48:36.822 Dashboard[1139:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GXamRadialGaugeView handleRangeBrushesChangedWithBrushCollection1:brushCollection2:]: unrecognized selector sent to instance 0x78503b0'
*** First throw call stack:
(0x1dfd012 0x1b0ae7e 0x1e884bd 0x1decbbc 0x1dec94e 0x27415b 0x26f529 0x257b82 0x2565da 0x2903c 0x28c23 0x23c2c 0x14e6589 0x14e4652 0x14e589a 0x14e460d 0x14e4785 0x1431a68 0x27d8911 0x27d7bb3 0x2815cda 0x1d9f8fd 0x281635c 0x28162d5 0x2700250 0x1d80f3f 0x1d8096f 0x1da3734 0x1da2f44 0x1da2e1b 0x2cc77e3 0x2cc7668 0x924ffc 0x850d 0x2515 0x1)
libc++abi.dylib: terminate called throwing an exception
- (IGGaugeView *) CreateGauge: (id) result {
IGGaugeView *gaugeView = [[IGGaugeView alloc] init];
gaugeView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
gaugeView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
gaugeView.theme = [[IGGaugeThemeLight alloc] init];
if ([Report.PresentationType isEqual:@"Gauge_Full"] ||
[Report.PresentationType isEqual: @"Gauge_Linear_Vertical"] ||
[Report.PresentationType isEqual: @"Gauge_Linear_Horizontal"]
)
{
gaugeView.scaleStartAngle = 130;
gaugeView.scaleEndAngle = 50;
}
else if ([Report.PresentationType isEqual:@"Gauge_Half_Left"])
gaugeView.scaleStartAngle = 90;
gaugeView.scaleEndAngle = 270;
else if ([Report.PresentationType isEqual:@"Gauge_Half_Right"])
gaugeView.scaleStartAngle = 270;
gaugeView.scaleEndAngle = 90;
else if ([Report.PresentationType isEqual:@"Gauge_Half_Top"])
gaugeView.scaleStartAngle = 180;
gaugeView.scaleEndAngle = 0;
else if ([Report.PresentationType isEqual:@"Gauge_Half_Bottom"])
gaugeView.scaleStartAngle = 0;
gaugeView.scaleEndAngle = 180;
else if ([Report.PresentationType isEqual:@"Gauge_Quarter_NE"])
gaugeView.scaleEndAngle =0;
else if ([Report.PresentationType isEqual:@"Gauge_Quarter_NW"])
else if ([Report.PresentationType isEqual:@"Gauge_Quarter_SW"])
// gaugeView.scaleStartAngle = 90;
// gaugeView.scaleEndAngle = 180;
//Usando esses angulos temporariamente, por que os angulos acima (corretos) nao estao rdesenhando bem na tela.
else if ([Report.PresentationType isEqual:@"Gauge_Quarter_SE"])
else // nao deve entrar aqui...
gaugeView.scaleStartAngle = 225;
gaugeView.scaleEndAngle = 315;
gaugeView.backingShape = IGGaugeBackingShapeFitted;
gaugeView.backingBrush = [[IGBrush alloc] initWithColor:[UIColor blackColor]];
gaugeView.needleBrush = [[IGBrush alloc] initWithColor:[UIColor orangeColor]];
gaugeView.font = [UIFont fontWithName:@"Futura" size:10.0];
gaugeView.MinimumValue = [Report.NormalBottomLimit floatValue] * 0.8;
gaugeView.MaximumValue = [Report.NormalTopLimit floatValue] * 1.2;
if ([ReportData count] >= 0)
gaugeView.value = [[[ReportData objectAtIndex:0] objectAtIndex:0] doubleValue];
if ([[[ReportData objectAtIndex:0] objectAtIndex:0] doubleValue] < [Report.NormalBottomLimit floatValue] * 0.8)
gaugeView.MinimumValue = [[[ReportData objectAtIndex:0] objectAtIndex:0] doubleValue];
if ([[[ReportData objectAtIndex:0] objectAtIndex:0] doubleValue] > [Report.NormalTopLimit floatValue] * 1.2)
gaugeView.maximumValue = [[[ReportData objectAtIndex:0] objectAtIndex:0] doubleValue];
IGGaugeRange *range1 = [[IGGaugeRange alloc] init];
range1.brush = [[IGBrush alloc] initWithColor:[UIColor redColor]];
range1.startValue = [Report.NormalBottomLimit floatValue] * 0.8;
range1.endValue = [Report.NormalBottomLimit floatValue];
range1.outerStartExtent = 0.4;
range1.outerEndExtent = 0.4;
IGGaugeRange *range2 = [[IGGaugeRange alloc] init];
range2.brush = [[IGBrush alloc] initWithColor:[UIColor yellowColor]];
range2.startValue = [Report.NormalBottomLimit floatValue];
range2.endValue = [Report.NormalTopLimit floatValue];
range2.outerStartExtent = 0.4;
range2.outerEndExtent = 0.4;
IGGaugeRange *range3 = [[IGGaugeRange alloc] init];
range3.brush = [[IGBrush alloc] initWithColor:[UIColor greenColor]];
range3.startValue = [Report.NormalTopLimit floatValue];
range3.endValue = [Report.NormalTopLimit floatValue] * 1.2;
range3.outerStartExtent = 0.4;
range3.outerEndExtent = 0.4;
[gaugeView addRange:range1];
[gaugeView addRange:range2];
[gaugeView addRange:range3];
return gaugeView;
Hi,
You shouldn't have to do anything special.
It's possible some issue slipped into the gauge as it didn't go through full testing. However, we're going to look into it right away.
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.
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?