CTCellularPlanStatus.getTokenWithCompletion Returns Nil Token and Nil Error When Multiple SIM Profiles Are Configured but Only One Subscription Is Active

Problem:

CTCellularPlanStatus.getTokenWithCompletion Returns Nil Token and Nil Error When Multiple SIM Profiles Are Configured but Only One Subscription Is Active

Environment:

  • Device: iPhone 15 Pro
  • iOS: 27.0
  • Capability: com.apple.developer.upi-device-validation
  • Frameworks: CoreTelephony, MessageUI
  • Reproduced in both production app and standalone Objective-C sample app

Issue: After successful UPI verification SMS submission, setUPIVerificationCodeSendCompletion returns YES, but CTCellularPlanStatus.getTokenWithCompletion returns:

Token = nil
Error = nil

Code:

[messageController setUPIVerificationCodeSendCompletion:^(BOOL result) {
    if (result) {
        [CTCellularPlanStatus getTokenWithCompletion:^(NSString *token, NSError *error) {
            NSLog(@"Token = %@", token);
            NSLog(@"Error = %@", error);
        }];
    }
}];

Observed Behavior:

The behavior appears to depend on the SIM profile configuration:

Scenario 1

Device has only a single SIM profile configured:

  • Physical SIM only, or
  • eSIM only

Result: Token is returned successfully.

Scenario 2

Device has both Physical SIM and eSIM profiles configured and both are active.

Result: Token is returned successfully.

Scenario 3

The device is configured with both a Physical SIM profile and an eSIM profile; however, only one subscription is active:

  • Physical SIM active, eSIM disabled, or
  • eSIM active while the Physical SIM is removed or unavailable (displayed as "No SIM" in Settings)

Observed Result:

Token = nil
Error = nil

Summary of Observed Behavior

Token retrieval succeeds in the following configurations:

  • Device provisioned with a single SIM profile (Physical SIM only or eSIM only).
  • Device provisioned with both Physical SIM and eSIM profiles, with both subscriptions active.

Token retrieval consistently fails in the following configuration:

  • Device provisioned with both Physical SIM and eSIM profiles, but only one subscription is active.

This behavior appears reproducible and suggests a potential issue related to subscriber resolution when a dual-SIM device contains multiple SIM profiles but only a single active subscription. The API does not provide an error indicating why token generation or retrieval failed.

CTCellularPlanStatus.getTokenWithCompletion Returns Nil Token and Nil Error When Multiple SIM Profiles Are Configured but Only One Subscription Is Active
 
 
Q