Among all the requirements, I’d like to highlight some parts of the guidelines which I consider to be the most important and influential and which any Apple developer or business analyst must keep in mind while doing mobile app development
Payments
Basically, payments can be divided into 2 groups: payments for physical goods and payments for digital goods. Digital goods can be some game items, online content, unlocking functionality. An example of physical goods would be products in an online store. Apple’s policy is clear and strict: only in-app purchase (IAP) can be used for buying digital goods used in the application but the policy does NOT allow using in-app purchases for buying physical goods. The main thing to note of in-app purchases is that Apple charges a 30% fee on each transaction – and this is the main reason why almost any product owner wouldn’t mind avoiding those transactions. Unfortunately, there is nothing to do about this requirement apart from coming to terms with it. Below is a list of possible workarounds which have been tried(in my personal experience and experience of my colleagues) that don’t work.
- The first and the most obvious one – direct or indirect redirect to a website instead of an in-app purchase. For instance, there is a game where users can buy some equipment for the game and, to buy it, there is a link to an external online shop hidden somewhere in settings of the iOS app. Don’t even try, the application will be rejected.
- What if an application allows both methods: IAP and something else? Yes, it looks like we can divide payments on a 50/50 basis, some users will use IAP, some will use a website. Not so bad. Apple has specific guidelines that are not so univocal about this.. According to 3.1.1 “If you want to unlock features or functionality within your app … you must use in-app purchase. Apps may not use their own mechanisms to unlock content or functionality …”. Here it’s clear that an IAP must be present in the app (ok, we have it), having other ways of buying goods isn’t mandatory, but it is also not restricted. Does it mean that it’s possible to add an alternative web page in the application which allows users to buy something? It depends. If another method is a simple website for buying goods or just some credit card based system inside the app, I have bad news – unfortunately, chances that the app will be rejected are still close to100%. It’s a cheat, and Apple recognizes cheats very well. However, a legal case is still possible and described in the section 3.1.3(b) of the guidelines – multi platform services. It says that, “Apps that operate across multiple platforms may allow users to access content, subscriptions, or features they have acquired in your app on other platforms or your web site, including consumable items in multi-platform games, provided those items are also available as in-app purchases within the app”. This makes sense, Apple gives an opportunity to have another payment system other than IAP only where it’s really needed. If a service, or a game has a fully working instance on other platforms it’s possible to use items bought using these platforms in the iOS app. Good news for those who already have a system and want to extend it to the iOS platform.
- Another variation of the previous topic is not having any payment system inside the iPhone app, but having an ability to buy digital goods on another platform – a website being the most common case. It may work if the reviewer, who is testing the app, doesn’t know about the other platforms, but it’s a huge risk to take. When the application becomes successful and attracts more attention, this fact may become known. In this case, an Apple developer will come across a more serious problem, which is mentioned in the guidelines as well: “If you attempt to cheat the system (for example, by trying to trick the review process, steal user data, copy another developer’s work, manipulate ratings or App Store discovery) your apps will be removed from the store and you will be expelled from the Developer Program.”. Quite a big risk for your Apple Developer Account, right?
Apart from attempts to save the 30%, it’s important to understand Apple’s payments policy in order to avoid mistakes app developers make during iOS app development. For example, any application has to provide a restore mechanism so that users can restore all their purchased items if they use other devices or have to remove and install the app.
Background Modes
Among other hardware and software requirements, working in the background has always been a special feature. The first iOS versions didn’t allow to use it at all, and, starting from iOS 4.0, Apple opened it for developers for mobile app development. Although it gives many possibilities it’s still quite limited for battery saving purposes. Thus, it’s no surprise that we sometimes need a little more than is allowed for an iPhone app. Many apps for iOS need background data updates, synchronization or some calculations, but Apple says that background modes should be used only for particular tasks like location updates, audio, VoIP, etc – something to keep in mind when considering development of an iOS app. And, during reviews, they carefully check if an app uses a background mode only for something which is proposed.
For example, if an app has to perform calculations in the background and these calculations are triggered by location updates or audio events, it will be rejected. Moreover, using any device capability requires permission from end users and can be disabled at any time. Also, apps have to explain why they need a capability in their privacy policy section.
On the other hand, if an app already has a background mode for a reasonable purpose, nothing prevents it from adding some extra logic apart from the main. In any case, it’s always better to consider all the methods of meeting system requirements which use iOS capabilities in a way they propose.
App Rating Manipulation Prevention
Apple takes its rating system seriously and is very attentive to the ways an Apple developer may get feedback from the application users. It’s considered unacceptable to influenсe users in order to get more stars in the store review. The worst violation of this rule is any attempt to bribe the user. Thus, it’s not worth making up solutions giving users in game points, free subscriptions for a month or unlocking some new features for the sake of good ratings in your store review and risking the status of your Apple Developer Account. Less, but still dangerous is giving something for free and proposing to rate the app right after the user accepts it. Any behavior like this may lead to expulsion from the Apple Developer Program.
One more example of the app which was rejected had had the next solution implemented: It asked the user if they liked the app and, based on their choice, redirected them either to the Apple App Store or to the app’s internal feedback system. Despite not being a bribe, it was still manipulation in terms of the Apple Developer Program rules. The guidelines mention the criteria described only in one place which was given here a few topics above, but it’s worth quoting it one more time so that you never jeopardize your Apple Developer Account: “If you attempt to cheat the system (for example, by trying to trick the review process, steal user data, copy another developer’s work, manipulate ratings or App Store discovery) your apps will be removed from the store and you will be expelled from the Developer Program.”
Privacy
Talking about privacy, the general rule regarding mobile app development can be formulated as follows: any access to the user’s data must be explicitly accepted by the user. iOS apps must provide all the information about the purpose of accessing their data. The App Store guidelines have a whole section dedicated to privacy (5.1). It’s recommended for an iOS developer to read this section at the starting point of mobile app development. Applications should behave correctly if the user doesn’t give permissions to access some of their data. Many privacy settings may be changed in the phone’s settings when the app isn’t working.
One more thing which is often forgotten by an Apple developer before their App Store submission, is adding a privacy policy section to the app. It can be a separate screen or a link to a web page. Writing a comprehensive privacy policy text usually takes some time and it’s much better to have it done before you prepare for a submission than after a rejection. Also, don’t forget to fill privacy policy descriptions in the project’s info.plist file for every capability using user’s data (location, health data, Bluetooth,etc). This information is then shown in the application’s App Store page.
Web-Based Applications