<!--
{
  "documentType" : "article",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/determining-a-person-s-apple-music-capabilities",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Determining a person’s Apple Music capabilities"
}
-->

# Determining a person’s Apple Music capabilities

Determine which Apple Music capabilities are available on a customer’s device.

## Discussion

After you request the user’s permission to access their Apple Music library (see [Requesting Access to Apple Music Library](/documentation/StoreKit/requesting-access-to-apple-music-library)), you confirm that authorization and then identify Apple Music capabilities on the user’s device.

### Confirm Whether the User Authorized Access to Apple Music Library

Use [`SKCloudServiceController`](/documentation/StoreKit/SKCloudServiceController)’s [`authorizationStatus()`](/documentation/StoreKit/SKCloudServiceController/authorizationStatus()) to check whether the user has authorized access to Apple Music Library. If the authorization status is [`SKCloudServiceAuthorizationStatus.notDetermined`](/documentation/StoreKit/SKCloudServiceAuthorizationStatus/notDetermined), call [`SKCloudServiceController`](/documentation/StoreKit/SKCloudServiceController)’s [`requestAuthorization(_:)`](/documentation/StoreKit/SKCloudServiceController/requestAuthorization(_:)) to prompt the user for access.

```objc
 SKCloudServiceAuthorizationStatus status = ([SKCloudServiceController authorizationStatus] == SKCloudServiceAuthorizationStatusNotDetermined);
```

If the authorization status is [`SKCloudServiceAuthorizationStatus.authorized`](/documentation/StoreKit/SKCloudServiceAuthorizationStatus/authorized), your app can proceed to determine which Apple Music capabilities ([`musicCatalogPlayback`](/documentation/StoreKit/SKCloudServiceCapability/musicCatalogPlayback), [`musicCatalogSubscriptionEligible`](/documentation/StoreKit/SKCloudServiceCapability/musicCatalogSubscriptionEligible), or [`addToCloudMusicLibrary`](/documentation/StoreKit/SKCloudServiceCapability/addToCloudMusicLibrary)) are available on the user’s device.

```objc
if ([SKCloudServiceController authorizationStatus] == SKCloudServiceAuthorizationStatusAuthorized) {
   [self fetchCurrentAppleMusicCapabilities];
}
```

### Create a Cloud Service Controller and Its Handler to Fetch Capabilities

First, create an [`SKCloudServiceController`](/documentation/StoreKit/SKCloudServiceController) object:

```objc
SKCloudServiceController *controller = [[SKCloudServiceController alloc] init];
```

Then call its [`requestCapabilities(completionHandler:)`](/documentation/StoreKit/SKCloudServiceController/requestCapabilities(completionHandler:)) method to fetch the current Apple Music capabilities, as described in the sections that follow.

### Check for the Capability to Play Apple Music Content

If you want your app to play Apple Music content, check whether `capabilities` includes [`musicCatalogPlayback`](/documentation/StoreKit/SKCloudServiceCapability/musicCatalogPlayback):

```objc
[controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError *error){
    if (error != nil) {
        // Handle error.
    } else if (capabilities & SKCloudServiceCapabilityMusicCatalogPlayback) {
         // Allows playback of songs in the Apple Music catalog.
    }
}];
```

### Check for the Subscription-Eligible Capability

A user is eligible for an Apple Music subscription offer when `capabilities` doesn’t include [`musicCatalogPlayback`](/documentation/StoreKit/SKCloudServiceCapability/musicCatalogPlayback) but contains [`musicCatalogSubscriptionEligible`](/documentation/StoreKit/SKCloudServiceCapability/musicCatalogSubscriptionEligible). If you want your app to present the user with an offer to subscribe to Apple Music, check `capabilities` for these features:

```objc
[controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError *error){
    if (error != nil) {
        // Handle error.
    } else if ((capabilities & SKCloudServiceCapabilityMusicCatalogSubscriptionEligible) && (!(capabilities & SKCloudServiceCapabilityMusicCatalogPlayback))) {
         // Allows subscription to the Apple Music catalog.
    }
}];
```

You can present the offer using [`SKCloudServiceSetupViewController`](/documentation/StoreKit/SKCloudServiceSetupViewController).

### Check for the Capability to Add Songs to the User’s iCloud Music Library

If you want your app to add tracks to the user’s iCloud music library, check whether `capabilities` includes [`addToCloudMusicLibrary`](/documentation/StoreKit/SKCloudServiceCapability/addToCloudMusicLibrary):

```objc
[controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError *error){
    if (error != nil) {
        // Handle error.
    } else if (capabilities & SKCloudServiceCapabilityAddToCloudMusicLibrary) {
         // Allows songs to be added to the user’s iCloud music library.
    }
}];
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)