Clarification on Apple Guideline 5.1.1(v)

Hello, I recently was rejected for the following reason:

However, your app does not comply with:

Legal 5.1.1

We noticed that your app requires users to register with personal information to access the app’s content and purchase in-app purchase products that are not account based.

Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user. User registration that requires the sharing of personal information must be optional or tied to account-specific functionality.

To resolve this issue, please revise your app to not require users to register before purchasing in-app purchase products that are not account based. You may explain to the user that registering will enable them to access the purchased content from any of their iOS devices and provide them a way to register at any time, if they wish to later extend access to additional devices.

Resources See guideline 5.1.1(v) - Account Sign-In to learn more about our requirements for apps with account-based content and features.

I replied: We require the user to login/sign up because it relates directly to the core functionality of our App.

  1. If the user deletes the App and chooses to reinstall it, his data will be saved on our server because the sign up system allows their data to be saved. This allows the User to restore all his in-app purchases and for our database to always keep track of the User’ in-app purchased consumable items. Apple requires a restore feature for in app purchases and we allow the user to restore his in app purchases by tying their account to an email or social media login.

  2. The login is required to prevent users from hacking the app. The diamond and coin systems are stored on our back end database servers. Once a user logins in, the back end stores how much coins and diamonds are associated with that account. This prevents users from manually altering how many coins or diamonds they have. It preserves the integrity of the app and the Apple App Store itself.

Our servers store all user progression and data. Without the login / sign up system, we cannot sync the back end database. The login / sign up feature is crucial to the functionality of the app to prevent hacking and to keep track of the users database and more importantly, keep account and restore capabilities available for any in app purchases.

To which the review board responded with:

Although requesting that users register to for tracking users’ purchases and game progresses is acceptable, requiring users to fully register for an account before entering the game is not. Users should be allowed to access none account-based features before registration and login. You may also choose to alert users that accessing game without binding an account may result in losing game progress or in-app purchase items.

To resolve this issue, please revise your app to let users freely access your app’s non account-based features, such as accessing the game, prior to registration or login. Once the user decides to use account-based features, the app may present the registration or login feature at that time.

My understanding is this... I need to implement a "play as guest" mode where Users do not need to register. This will automatically generate an account for that User. However, am I allowed to require the user to register before conducting any in-app purchases, or other activities on the app?? What is this asking for? Do I need to allow the guest user to be able to purchase and do all the things a registered user can?

Accepted Reply

Hello,

My personal experience with such implementation: I can't stand apps that I download and then I must create an account in order to use them. I delete such apps immediately because I simply don't trust them. There was 0 effort for the app to "bond" with me as a user. It's a frustrating experience for me.

On the other side as a developer, I understand your problem but there are several things you can do in order to protect the integrity of your game. One idea is that in "guest" mode, you just don't accept / store any coins from the client and you let the user know this is the case (ex. until it registers the progress won't be saved on the server).

Anyway, there are many things you can do here. There are multiple solutions in which you can take to give the user a good user experience and on your side, to protect the integrity of the app.

Just don't make apps that require user login before using them.

Replies

My understanding is this... I need to implement a "play as guest" mode where Users do not need to register. 

I cannot speak on behalf of reviewers, but that seems to be a correct answer.

.

This will automatically generate an account for that User.

As long as this is anonymous (hence will be deleted when the user quits), that should be OK.

.

 Do I need to allow the guest user to be able to purchase and do all the things a registered user can?

IMHO, no. Just let user play reasonably with the game. But of course there are some function that will not be accessible until registration.

So, explain all this in the comments to the reviewer and you should go through.

Hello,

My personal experience with such implementation: I can't stand apps that I download and then I must create an account in order to use them. I delete such apps immediately because I simply don't trust them. There was 0 effort for the app to "bond" with me as a user. It's a frustrating experience for me.

On the other side as a developer, I understand your problem but there are several things you can do in order to protect the integrity of your game. One idea is that in "guest" mode, you just don't accept / store any coins from the client and you let the user know this is the case (ex. until it registers the progress won't be saved on the server).

Anyway, there are many things you can do here. There are multiple solutions in which you can take to give the user a good user experience and on your side, to protect the integrity of the app.

Just don't make apps that require user login before using them.