a
I am submitting this appeal because we believe our app was misunderstood and the review outcome and follow-up communication have been unfair and mechanically handled.
1) What happened / Outcome we disagree with
Our submission was rejected under Guideline 4.8 – Design – Login Services, with the reviewer stating that our app uses a third-party login service but does not provide an equivalent login option that meets Apple’s requirements (limited data collection, private email option, no advertising tracking without consent).
However, our game does not require or force any third-party login. The feature being treated as “login” is not a login service at all—it is Mainland China real-name / anti-addiction compliance verification.
2) Why we believe we comply with the App Review Guidelines
A. The feature in question is compliance verification, not login
Players do not need to create or log into any in-game account to play.
The flow exists solely to satisfy Mainland China real-name/anti-addiction compliance requirements.
Verification can be completed by either:
Using TapTap only as a real-name verification authorization option, or
Manually entering a Chinese ID number + legal name to pass verification and play.
Because this is verification, not an account login, Guideline 4.8 “Login Services” should not apply in the way the rejection message assumes.
B. There is no “playable account” to provide
After we clarified the above, we continued to receive repeated, template-like requests to provide a “playable account.” This request does not match our product design: there is no account system required for gameplay, so there is no “review account” to provide.
We have already provided the information needed to complete the verification path (ID + name for the compliance flow), yet the responses remained repetitive and did not reflect that the reviewer checked our explanation.
3) Why we believe the handling was unfair
Even after clearly explaining that this is not a login system, the review communication continued with mechanical responses that did not address the clarification. This caused significant delays to our release timeline and appears to be unfair treatment compared with many existing App Store apps that use similar compliance verification flows.
4) What we are requesting from the Appeals Team
Please investigate and correct the misclassification of our real-name compliance verification as a “login service” under Guideline 4.8.
If the team still believes Guideline 4.8 applies, please provide:
The specific guideline rationale, and
The exact screen/step in our app that is being interpreted as “login.”
Please advise what specific materials you need to proceed efficiently (e.g., screen recording of the verification flow, step-by-step review instructions, configuration notes). We are ready to provide them immediately.
Sign in with Apple
RSS for tagDiscuss how to provide users the ability to sign in to your apps and websites using their Apple ID.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello,
We are building a new app that would be kinda extension of the other and we want to let our community share the same account in between.
We use Apple Sign in and we want Appel sign in system to give the same identity when people use apple relay. One of our app is alreadey released, can we still do it to share the same Apple login?
Could you tell me about account security and passkeys? Our service is considering implementing passkeys, and these questions are to understand how Apple protects accounts from third parties.
① Apple website states that two-factor authentication is mandatory for newly created Apple Accounts. When did this requirement come into effect? What are the conditions for users who do not have two-factor authentication enabled?
② Apple website mentions that a verification code may be required when signing into an Apple Account from a new device or browser. Is my understanding of the situations where a verification code is requested accurate, as listed below? Are there any other situations?
Completely signing out of the Apple Account on that device.
Erasing the device.
Needing to change the password for security reasons.
③ If a user is already using a passkey on an Apple device, and then upgrades to a new device, will additional authentication, such as entering a PIN code, be required to use the passkey on the new device?
We are experiencing an issue with Apple’s Private Email Relay service for Sign in with Apple users.
Our setup details are as follows:
• Domain: joinalyke.com
• Domain successfully added under “Sign in with Apple for Email Communication”
• SPF verified
• DKIM enabled (2048-bit Easy DKIM via AWS SES)
• Emails are being sent from S***@joinalyke.com
Amazon SES confirms that emails sent to users’ @privaterelay.appleid.com addresses are successfully delivered (Delivery events recorded in SES and no bounce reported).
However, users are not receiving the forwarded emails in their actual inboxes.
Since:
SES shows successful delivery,
SPF and DKIM are properly configured,
Domain is registered in the Apple Developer portal,
we suspect that the Private Email Relay service may be blocking or not forwarding these emails.
Could you please investigate whether:
Our domain or IP reputation is being blocked or filtered,
There are additional configuration requirements,
The relay service is rejecting emails after acceptance,
There are content-related filtering policies we should review.
We are happy to provide message IDs, timestamps, and sample relay email addresses if required.
Topic:
Privacy & Security
SubTopic:
Sign in with Apple
PLATFORM AND VERSION
iOS
Development environment: Xcode 26.2, macOS x
Run-time configuration: iOS The issue does not seem to be limited to a specific version.
DESCRIPTION OF PROBLEM
We are reaching out to request in-depth technical assistance regarding an intermittent issue with Sign in with Apple implementation in our application.
[Technical Status]
We have confirmed that our technical implementation is correct. All necessary code and Xcode Capabilities are properly configured, and the service is working perfectly for the vast majority of our users. However, a small subset of users is consistently encountering "Unknown" Error (Error Code 1000), which prevents them from logging in entirely.
[Identified Scenario]
Currently, the only reproducible case we have found involves Child Accounts (protected accounts) under Family Sharing, specifically when the user's age is set below the regional requirement for a standalone Apple ID. However, we are receiving reports from other users who do not seem to fall into this category.
[Requests for Clarification]
To resolve this issue and support our users, we would like to obtain clear answers to the following questions:
Root Cause: Why does Error 1000 occur specifically for a small number of users while the service works for most others?
Other Scenarios: Are there any known cases or conditions other than the "Child Account" age restriction that trigger this specific error?
Account-side Issues: If our code and configurations are verified to be correct, should we conclude that this is an issue specific to the individual's Apple ID/Account status?
If so, could you provide a troubleshooting guide or official recommendation that we can share with these users to help them resolve their account-related issues?
We are committed to providing a seamless authentication experience and would appreciate your expert insight into these edge cases.
Thank you for your support.
- (void) quickLogin:(uint)requestId withNonce:(NSString *)nonce andState:(NSString *)state
{
#if AUTHENTICATION_SERVICES_AVAILABLE
if (@available(iOS 13.0, tvOS 13.0, macOS 10.15, *))
{
ASAuthorizationAppleIDRequest *appleIDRequest = [[self appleIdProvider] createRequest];
[appleIDRequest setNonce:nonce];
[appleIDRequest setState:state];
ASAuthorizationPasswordRequest *keychainRequest = [[self passwordProvider] createRequest];
ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[appleIDRequest, keychainRequest]];
[self performAuthorizationRequestsForController:authorizationController withRequestId:requestId];
}
else
{
[self sendsLoginResponseInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
}
#else
[self sendsLoginResponseInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
#endif
}
- (void) loginWithAppleId:(uint)requestId withOptions:(AppleAuthManagerLoginOptions)options nonce:(NSString *)nonce andState:(NSString *)state
{
#if AUTHENTICATION_SERVICES_AVAILABLE
if (@available(iOS 13.0, tvOS 13.0, macOS 10.15, *))
{
ASAuthorizationAppleIDRequest *request = [[self appleIdProvider] createRequest];
NSMutableArray *scopes = [NSMutableArray array];
if (options & AppleAuthManagerIncludeName)
[scopes addObject:ASAuthorizationScopeFullName];
if (options & AppleAuthManagerIncludeEmail)
[scopes addObject:ASAuthorizationScopeEmail];
[request setRequestedScopes:[scopes copy]];
[request setNonce:nonce];
[request setState:state];
ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
[self performAuthorizationRequestsForController:authorizationController withRequestId:requestId];
}
else
{
[self sendsLoginResponseInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
}
#else
[self sendsLoginResponseInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
#endif
}
- (void) getCredentialStateForUser:(NSString *)userId withRequestId:(uint)requestId
{
#if AUTHENTICATION_SERVICES_AVAILABLE
if (@available(iOS 13.0, tvOS 13.0, macOS 10.15, *))
{
[[self appleIdProvider] getCredentialStateForUserID:userId completion:^(ASAuthorizationAppleIDProviderCredentialState credentialState, NSError * _Nullable error) {
NSNumber *credentialStateNumber = nil;
NSDictionary *errorDictionary = nil;
if (error)
errorDictionary = [AppleAuthSerializer dictionaryForNSError:error];
else
credentialStateNumber = @(credentialState);
NSDictionary *responseDictionary = [AppleAuthSerializer credentialResponseDictionaryForCredentialState:credentialStateNumber
errorDictionary:errorDictionary];
[self sendNativeMessageForDictionary:responseDictionary forRequestId:requestId];
}];
}
else
{
[self sendsCredentialStatusInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
}
#else
[self sendsCredentialStatusInternalErrorWithCode:-100
andMessage:@"Native AppleAuth is only available from iOS 13.0"
forRequestWithId:requestId];
#endif
}