Blog

iOS

9 Things to Remember When Submitting your iOS App

When submitting an app to the App Store, it’s easy to feel a bit stressed and nervous about the uncertainty of what will come out of the Apple validation black hole. Here are a few tips to help you crush the application submission so you can submit and relax.

1. Avoid using official iOS app logos

If your app contains iOS system app logos, it will be rejected due to the copyright, so be smart and use a custom logo. Moreover, using the existing iOS logos may not offer the best user experience. For example, if you use the default mail app logo, you risk losing potential downloads from users who prefer alternative email apps to the standard iOS mail app simply because you used the same app logo.

iOS app

2. Pay attention to extensions

Building extensions is a big thing, but it can be tricky. If you are building an iPhone app with a Today extension, you have to build your extension for the iPad. In fact, you app will automatically be running on an iPad with the *2 mode. But your extension will be added and the extension panel of your iPad, so it also has to be implemented and tested on iPad! One piece of advice, use autolayout to build your extension to better adapt to unexpected future screen sizes.

iOS app

3. Phone number as a required field

Whenever building a formula that includes a phone number field, make this field optional; it’s clearly written in the iOS guidelines. And even if you’re lucky and your app is published with the phone number as a mandatory field, it could easily be rejected on a future update just because of this small critical detail.

4. Avoid mentioning Android or other platforms

You are probably aware of the love between Apple and Google. If you’re developing on both iOS and Android, don’t make any references in your iOS app to the Android app and vice versa otherwise Apple will happily reject your app.

iOS app

5. Improper user file storage (iCloud)

This one is trickier. By default, some of your app directory automatically syncs with iCloud. But Apple’s policy is pretty strict on which information can be stored and which cannot. Only personal data can be store on the cloud.
To avoid any issues, you can exclude from backup URL using:

– (void)excludeFromBackup
{
      if (&NSURLIsExcludedFromBackupKey && [NSURL instancesRespondToSelector:@selector(setResourceValue:forKey:error:)]) {
           //use iOS 5.1 method to exclude file from backup
           NSURL *URL = [NSURL fileURLWithPath:self isDirectory:YES];
           [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:NULL];
      }
      else {
           //use the iOS 5.0.1 mobile backup flag to exclude file from backup
           u_int8_t b = 1;
           setxattr([self fileSystemRepresentation], “com.apple.MobileBackup”, &b, 1, 0, 0);
      }
}

6. Have a backup for denied permissions

With iOS, and now Android M, when requesting access to photos, location or other information, your app will ask the user if your app can access their resources. Handling permissions can be a big headache. You have to consider a backup plan if the user rejects those permissions. For example, if your user rejects location, you have to show them how to re-activate location permissions in the settings on a dedicated screen.

iOS app

7. Do not use IDFA if there are no ads in your app

Since Apple no longer accepts the UUID method, the number of apps using IDFA (an identifier reserved for advertising) has increased. If your app uses it without any ads, it will be simply rejected by Apple. Be careful, some frameworks use it without telling you, so before submitting, just check on the root directory of your project with the following command :

$ find . -name .svn -prune -or -type f -exec grep ‘advertisingIdentifier’ -H {} ;

8. Provide Apple a test account

If your app needs an account to access all the content, don’t forget to provide a test account to Apple during submission in the dedicated section to avoid any unnecessary back and forth with Apple. For Banking apps or other apps involving complex account creation, you can flag the account in the code and switch to a preproduction environment to simulate for instance money transaction.

iOS app

9. Check your app submission period

September usually brings a new fleet of Apple devices and new OS versions. If you submit your app during this time, make sure that your development team has tested the app on both new and old OS versions as well as on new devices through the simulator tools provided by XCode.

Conclusion

Although this is not a guarantee your app will be accepted, if you follow these steps you will avoid 70% of the rejection cases and you can sit back and relax. If your app does get rejected, don’t forget that you always have the option of doing a “fast review” to expedite the process if you are in an extreme rush (remember this option is only available once or twice and should be used sparingly).