Apple Rejecting Ionic Apps

Apple rejected my app for 3 reasons, 2 of which are due to it being designed for an iPhone and not scaling up well for an iPad.

The third is more concerning - because I use web views and not native buttons. i.e. because I am using Ionic. Has anyone else had this problem or have any idea of how I should progress?

ionic-angular: 3.9.2
Native packages: admob-plus, google-maps, social-sharing, status-bar, splash-screen

Rejection message from Apple:

Guideline 4.0 - Design

We noticed several issues in your app that contribute to a lower quality user experience than Apple users expect, such as:

  • Your app included low resolution or jagged images.

  • Your app included hard to read type or typography.

  • Your app did not include iOS features. App Store apps should use native iOS buttons and include iOS features other than just web views, push notifications, or sharing.

These examples identify the types of issues discovered in your app but may not represent all such issues.

Sounds like you got an upset reviewer. Tackle the design issues first, then resubmit.

My organization has only released Ionic apps for the last 3 years, with custom styled buttons, etc.

What does your app do? I know Apple will crack down if they feel like you’re submitting a website wrapped in a WebView.

Thanks for your reply.

The app has instructions for 100+ hikes in Hong Kong, they are displayed in a list or on a Native Google Map & the instructions/images are all available offline.

All the hiking instructions come from a blog, which may be why they see it as a website wrapped in a WebView.

No offense, that’s b_llsh_t. Yes your app was rejected, but no, nothing related to Ionic, that end up as being typical hoax.

For the reason of your rejection, I’m agree with @Eric_Horodyski, if you “just” wrap your blog in your app as you describe in your last msg, that could be a reason for the rejection.

Also I understand the msg of Apple as they want you to use some features of the mobile phones, don’t know if they doesn’t count the map as such.

Well… it is related to Ionic. A rejection reason is for not using iOS buttons or the right iOS features. Which implies (or outright states) that if you make an app using Ionic without some Ionic Native plugins, then Apple will reject it.

I don’t remember the slogan being “Build once. Run anywhere, as long as you use native features that go beyond sharing, storage, and Google Maps”

As for the app just being a wrapper for a blog, it is not. The interface, navigation, storage, map view, settings & structure is all built with Ionic & Ionic native components. The individual hiking instructions come from a Wordpress API in the form of pre-rendered html (h1, p, img), which is injected into the ion-content. The API also returns co-ordinates, which allow me to plot the maps on Native Google Maps - where I use markers, clusters & infowindows.

If someone was to make an email clients using Ionic, with the actual emails coming from a server, then I imagine it would be rejected for the same reason. Emails <=> Hiking Instructions.

Well no sorry, it’s exactly the same thing if you develop a blank native app it not gonna be accepted. Also I didn’t read nothing in the msg you received from apple that your app was reject because of missing iOS buttons, I think you misunderstand.

Also there isn’t “Ionic Native plugins”, there are “Ionic Native wrapper” which let you access “Cordova plugins”

Again nothing in the msg you displayed above mention Ionic neither any of the features of its ecosystem, that’s entirely your own personal interpretation.

Anyhow…

Then in that case let’s assume you effectively use features from the mobile devices, cool, so let’s read the msg form Apple once again respectively

You double checked the quality of your images, splash screen etc.?
On every screen size?
And double checked that your typo is ok too?

In french we say something like “clean your front door first”, so maybe try to test these on iPhone 4,5,6,7,8,X and iPad, maybe you will notice a quirk?

As per my first message

Apple rejected my app for 3 reasons, 2 of which are due to it being designed for an iPhone and not scaling up well for an iPad.

The 2 points you mention from Apple; I am already aware of what caused them problems.

It was my understanding that Ionic runs in a webview, which Apple do mention.

I’m done with this conversation. I don’t find your comments useful and you’re petty.

I just try to point you in the right direction as thinking that Ionic is the problem isn’t the issue for sure (I’ve pushed more than 50 updates successfully of my app in the app store, that’s my personal reference, just in case).

But as you wish, if you want to continue in that direction I don’t have something more to say neither

Good luck

My team and I have published at least a dozen unique Ionic apps. We’ve also learned from experience that Apple does not have a consistent review process. At times, one binary was rejected for X, we pushed a binary that addressed Y (totally unrelated) and it passed, without even resolving X. Some reviewers are more stringent, some reviewers are more lenient.

The context clue to take away from their message is:

These examples identify the types of issues discovered in your app but may not represent all such issues.

That pretty much gives the reviewer carte-blanche to reject you and not give specifics.

However, you are entitled to specific reasons but they will just send you the same list if you ask again. If you resolve any one of their concerns, then it gets rejected again, they need to send you a new justification.

Take the path of least resistance and update the easier of these two: typography/images. Then resubmit and see what happens.

For the record, there are services you can purchase that will literally wrap a website into a webview, generate an app, and guarantee it will pass Apple’s review. I’ve looked into the source code, and it’s very similar to what Cordova does. So if a service like this can exist with that level of guarantee, I must contend that Cordova + Ionic are not the issue.

hi @bensearle,

Did you manage to get your app submitted in the end? What did you have to change in order to get it submitted?

Thanks,
Eline

@vraemdone Yes it was accepted on the second attempt

  • I recompiled as just an just iPhone app, removing iPad (TARGETED_DEVICE_FAMILY=1)
  • In the submission message/instructions, I emphasised the use of Native Google Maps
2 Likes

I didn’t know you could do this. I have an app that also has an iPad version because the App store process required it.

Yes, on Xcode > Deployment info > Devices > Select “iPhone”

Or automatically in a hook_after_build

var fs = require('fs');     // nodejs.org/api/fs.html
const projectName = 'MyApp'; // same as <name> in config.xml

module.exports = function (ctx) {
  if (ctx.opts.platforms.indexOf('ios') !== -1) {
    let pbxprojFile = `platforms/ios/${projectName}.xcodeproj/project.pbxproj`;
    let pbxproj = fs.readFileSync(pbxprojFile, 'utf8').replace(`TARGETED_DEVICE_FAMILY = "1,2";`, `TARGETED_DEVICE_FAMILY = "1";`);
    fs.writeFileSync(pbxprojFile, pbxproj, { encoding: 'utf8' });
  }
};
1 Like

thanks :slight_smile: