Background

While getting an app into Android stores is fairly easy, Apple's App Store has an approval process that's often strict, confusing, and not always consistent. There have been grumblings in the developer community because PhoneGap apps are thought to be nearly impossible to get into Apple's App Store. Originally, Apple rejected all hybrid apps, but after about 6 months, they started allowing them and will no longer reject applications solely because their user interface is built using HTML. In fact, many of Apple's own apps or advertising platforms for iOS are entirely built with HTML/CSS/JS. Apple is rejecting some PhoneGap apps because they are essentially nothing more than webpages wrapped in a browser, marketed as an app.





Problems

The Apple Store will reject any app that doesn't "feel like an app." An app must offer a user experience consistent with IOS's other apps or offer other advantages over a mobile web experience.



The following is a list of possible PhoneGap related issues that may result in an app being rejected from the app store:

The app is just a website wrapped in PhoneGap

The app requires the user to pinch/zoom/pan

The app is just text on a page with hyperlinks and no native-like styles.

The app downloads code in any way. (html/javascript)

The app is just a content aggregator or collection of links.

The app is slow, jumpy, and animations are awkward.

The app provides the same experience as the website.

The app deviates from native functionality.

The app contains inappropriate keyboard types.

The app doesn't or improperly manages lost connections.

Solutions

The following is a list of solutions to help a PhoneGap app get into the app store by giving an IOS app user experience as opposed to a web user experience:

Focus the app

Websites usually offer lots of tasks and options to visitors, this generally does not translate to an IOS app. App users expect to see useful content immediately. Avoid screens with lots of links and buttons, and trying to do too much with the app. Most apps offer a single service. While more can be offered, it's advised to keep it to a minimum.

Make sure the app lets people do something

People won't generally download an app just to look at marketing info. An app has to let the user accomplish something.





People won't generally download an app just to look at marketing info. An app has to let the user accomplish something. Design for touch

Don't try to replicate web styles in the app. Use native UI interactions such as buttons instead of text links, similar menus with transitions, lists that look like IOS lists, etc.





Don't try to replicate web styles in the app. Use native UI interactions such as buttons instead of text links, similar menus with transitions, lists that look like IOS lists, etc. Let people scroll

When designing a website, we generally put the most important information on the top half of a page ("above the fold") but on an IOS application, scrolling is easy and an expected part of the experience. Avoid resizing fonts to make them smaller or putting links to more content ("next" buttons).





When designing a website, we generally put the most important information on the top half of a page ("above the fold") but on an IOS application, scrolling is easy and an expected part of the experience. Avoid resizing fonts to make them smaller or putting links to more content ("next" buttons). Relocate the homepage icon

Websites usually have a link to go to the homepage on all pages of a website. This is unnecessary on IOS apps, and a dead giveaway that you just wrapped a website.





Websites usually have a link to go to the homepage on all pages of a website. This is unnecessary on IOS apps, and a dead giveaway that you just wrapped a website. Look and Feel

Make sure lists, buttons, icons, and text match native styles and behaviors.





Make sure lists, buttons, icons, and text match native styles and behaviors. Loading Content

On websites, spinners are sometimes used when data is loading asynchronously. On IOS apps, they should always be used.





On websites, spinners are sometimes used when data is loading asynchronously. On IOS apps, they should always be used. Performance

Avoid anything that will make the app lag, flicker, or jump. Use CSS transitions and animations since they are hardware accelerated. They will be smoother and more aesthetically pleasing.





Avoid anything that will make the app lag, flicker, or jump. Use CSS transitions and animations since they are hardware accelerated. They will be smoother and more aesthetically pleasing. Start Small

Don't try to put every possible feature into the first version of the app. The initial approval process is the most difficult and time consuming one, updates take less time and are usually much easier.





Don't try to put every possible feature into the first version of the app. The initial approval process is the most difficult and time consuming one, updates take less time and are usually much easier. Testing and Bug fixes

Apple will not allow apps with bugs into the app store. Letting an app go for approval with bug fixes will result in a rejection and delay of the app appearing in the store. Make sure the app is tested on all supported devices.





Further Reading



Apple App Review Guidelines (requires developer account)

https://developer.apple.com/appstore/guidelines.html



PhoneGap, Apple Rejections & UI/UX Guidelines

http://www.adobe.com/devnet/phonegap/articles/apple-application-rejections-and-phonegap-advice.html

IOS App Approvals Wikipedia Article

http://en.wikipedia.org/wiki/IOS_app_approvals



How to avoid App Store rejections (Video)

http://creativedroplets.com/how-to-avoid-app-store-rejections/



Apps Created with PhoneGap

http://phonegap.com/app/