Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

detz

macrumors 65816
Original poster
Jun 29, 2007
1,051
0
So Apple approved my app twice and it was ready for launch tomorrow. I just got a call from David would said that they are removing it because it violates their rules. I'm confused, my app basically just uses a webview to display some custom html/javascript.

www.customcalcapp.com

They're saying that I'm not allowed to download and execute external code but all I'm doing is downloading an html/javascript file and showing it in their webview! Is this violating any rules? Everything I'm using is from their approved API, how is downloading a webpage and showing it agains their rules, there are countless "browsers" online that do that same thing.

Sorry, I'm very upset and they've removed my app and there is zero change I can get it up for launch.
 
I actually asked some people at Apple about this. One thought that anything interpreted through Javascript would be OK, since it's using Apple's built-in interpreter. But another hinted that adding any custom function definitions to standard Javascript or DOM might make the working API, as exposed to outside calculator coders, my API and not Apple's, thus violating some part of 3.3.x.

So my programmable calculator prototype is tabled, waiting for someone else to be the guinea pig. You're it. :D Unfortunately. :(
 
I actually asked some people at Apple about this. One thought that anything interpreted through Javascript would be OK, since it's using Apple's built-in interpreter. But another hinted that adding any custom function definitions to standard Javascript or DOM might make the working API, as exposed to outside calculator coders, my API and not Apple's, thus violating some part of 3.3.x.

So my programmable calculator prototype is tabled, waiting for someone else to be the guinea pig. Your it. :D Unfortunately. :(

They even provide stringByEvaluatingJavaScriptFromString, what other purpose would this be other than to run your own code? What Javascript doesn't use it's own functions, there are apps on the store right now allow you to download webpages to view later which is what my app does. It downloads the html/javascript page(it doesn't modify it once it's downloaded) and then just shows it in the webview. How is this any different?
 
So what does your app provide above and beyond a web app or ordinary web page?

Reports are that Apple has been rejecting apps that are just uiwebviews of some real estate agent's (etc.) web site for reasons of "limited utility". But that's not the reason they gave you...

Or maybe this is yet another of their "secret legal interpretations" of the SDK agreement... Who would have thought that being able to read SDK tea leaves would be a necessary and important part of being an iPhone/iPad app developer?
 
detz, I looked at the web site and your app is clearly on the line. Their rules on this are a little vague and maybe deliberately vague. I've never clearly understood their prohibition against interpreters and downloading interpreted code to be executed. They don't give an explanation in the rules of why it's prohibited but only that it is prohibited.

I always assumed that it had to do with keeping Flash off the phone or maybe to prevent some kind of security holes from being exploited. It might also have to do with Java or C# or other non-Apple technologies that they wanted to prevent from being used on the phone. It might also simply be that some UI could be implemented in the downloadable code that they can't validate using their UI rules. It's possible to have UI that violates any of their UI rules but which they can't possibly test.

Your app probably doesn't do any of that but it does run afoul of their rules.

I think if the calc editor ran on the phone they might allow it but they don't like the downloading and executing of code.
 
Apple don't want people to be able to release iPad/iPhone applications outside the App Store. Using a wrapper like this, someone can have Javascript appear as a native iPad/iPhone application. Thus, they don't want you doing it, simple as that.

Chastity belts like this are what make me openly hate Apple and everything to do with them as a company. With a bit of luck, Android devices will supplant iPhones and iPads as the industry standards and I will never have to use a Mac again.
 
If your app is downloading Javascript code from the web and executing it, it means that Apple doesn't have any control over what the app does. The Javascript code might be completely harmless but if Apple approves the app and puts it in the app store, you might later change the Javascript code at the server and make the app do something completely different, something that Apple wouldn't have approved in the first place.

It would be a nightmare for Apple if people could somehow control what an app does after it has been approved. That's probably the main reason why Apple won't approve apps that download code.
 
There are countless apps on the store right now that let you download webpages to your phone and view them offline. This is exactly what my app does it just gives you a list of pages to downloaded. I'm hoping they just don't understand what's going on, if they block this then they should block every app that uses uiwebview.
 
Another possibility is that they suspect you are using or exposing something like the "PhoneGap" library. You need to make it clear that you are not, and that all your buttons are HTML buttons, not UIKit buttons, etc.

I've never clearly understood their prohibition against interpreters and downloading interpreted code to be executed.

They want to full control over the API that any developer uses to code "apps". That way no one can either "embrace and extend" the API to eventually make a competitor's platform look more desirable, or construct an API that allows easy porting to another company's platform.

I think if the calc editor ran on the phone they might allow it but they don't like the downloading and executing of code.

I thought of that too. But then they actually changed the SDK license agreement wording. The original 2008 agreement said no downloading AND executing is allowed. The current version says no downloading OR execution of interpreted code is allowed.

...if they block this then they should block every app that uses uiwebview.

The SDK license says nothing about them being required to interpret or enforce their rules evenly.
 
I didn't watch the howto movie all the way through but I assume that the user can type in javascript code and have it be executed. I think this is the problem and is different from displaying any web page in a webview.

I don't think that use of javascript per se is a problem. Javascript is explicitly supported on the iPhone by Apple. It's the typing in of arbitrary javascript and executing it that Apple can't validate in any way.

I think it's possible that if instead the app used a macro language that only could do math, like ansi C code for instance, then it might be OK. Something like the macro language used by spreadsheet apps might be acceptable. In fact it could work under the covers by javascript or by your own parser.

I wouldn't claim to be certain of this however.
 
Looks like the reason for the rejection might have been that they were secretly tightening up the rules in section 3.3.1 before the OS 4.0 announcement.

As far as UIWebView Javascript is concerned, I don't like it. But I do understand their concerns re development APIs in general.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.