示例#1
0
        public AuthorizationManager(AppleMusicManager appleMusicManager)
        {
            AppleMusicManager        = appleMusicManager;
            CloudServiceController   = new SKCloudServiceController();
            CloudServiceCapabilities = new SKCloudServiceCapability();

            /*
             * It is important that your application listens to the
             * `CloudServiceCapabilitiesDidChangeNotification` and
             * `StorefrontCountryCodeDidChangeNotification` notifications
             * so that your application can update its state and
             * functionality when these values change if needed.
             */
            var notificationCenter = NSNotificationCenter.DefaultCenter;

            CloudServiceCapabilitiesDidChangeNotificationToken = notificationCenter.AddObserver(SKCloudServiceController.CloudServiceCapabilitiesDidChangeNotification,
                                                                                                async(obj) => await RequestCloudServiceCapabilitiesAsync());

            if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                StorefrontCountryCodeDidChangeNotificationToken = notificationCenter.AddObserver(SKCloudServiceController.StorefrontCountryCodeDidChangeNotification,
                                                                                                 async(obj) => await RequestStorefrontCountryCodeAsync());
            }

            /*
             * If the application has already been authorized in a
             * previous run or manually by the user then it can
             * request the current set of `SKCloudServiceCapability`
             * and Storefront Identifier.
             */

            if (SKCloudServiceController.AuthorizationStatus == SKCloudServiceAuthorizationStatus.Authorized)
            {
                Task.Factory.StartNew(async() => {
                    await RequestCloudServiceCapabilitiesAsync();

                    // Retrieve the Music User Token for use in the application
                    // if it was stored from a previous run.
                    if (NSUserDefaults.StandardUserDefaults.StringForKey(UserTokenUserDefaultsKey) is string token)
                    {
                        UserToken = token;
                        await RequestStorefrontCountryCodeAsync();
                    }
                    else                       // The token was not stored previously then request one.
                    {
                        await RequestUserTokenAsync();
                    }
                });
            }
        }
        string GetStringValue(SKCloudServiceCapability capability)
        {
            switch (capability)
            {
            case SKCloudServiceCapability.MusicCatalogPlayback:
                return("Music Catalog Playback");

            case SKCloudServiceCapability.MusicCatalogSubscriptionEligible:
                return("Music Catalog Subscription Eligible");

            case SKCloudServiceCapability.AddToCloudMusicLibrary:
                return("Add To Cloud Music Library");

            default:
                return(string.Empty);
            }
        }