static NSSet HealthTypesToRead()
        {
            var quantityTypesToRead = QuantityTypesToRead.Select(q => HKObjectType.GetQuantityType(q));

            var characteristicTypesToRead = CharacteristicTypesToRead.Select(c => HKObjectType.GetCharacteristicType(c));

            var allHealthTypesToRead = new List <object>();

            allHealthTypesToRead.AddRange(quantityTypesToRead);
            allHealthTypesToRead.AddRange(characteristicTypesToRead);

            return(new NSSet(allHealthTypesToRead.ToArray()));
        }
        public void SetUpPermissions()
        {
            var distanceQuantityType          = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.DistanceWalkingRunning);
            var stepsQuantityType             = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.StepCount);
            var flightsQuantityType           = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.FlightsClimbed);
            var heightQuantityType            = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.Height);
            var heartRateQuantityType         = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.HeartRate);
            var nikeFuelQuantityType          = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.NikeFuel);
            var dateOfBirthCharacteristicType = HKObjectType.GetCharacteristicType(HKCharacteristicTypeIdentifierKey.DateOfBirth);
            var sexCharacteristicType         = HKObjectType.GetCharacteristicType(HKCharacteristicTypeIdentifierKey.BiologicalSex);
            var bloodTypeCharacteristicType   = HKObjectType.GetCharacteristicType(HKCharacteristicTypeIdentifierKey.BloodType);

            if (m_healthKitStore == null)
            {
                HealthKitStore = new HKHealthStore();
                m_healthKitStore.RequestAuthorizationToShare(new NSSet(new [] { distanceQuantityType, stepsQuantityType, flightsQuantityType, heartRateQuantityType }), new NSSet(new [] { (NSObject)distanceQuantityType, (NSObject)stepsQuantityType, (NSObject)flightsQuantityType, (NSObject)heightQuantityType, (NSObject)dateOfBirthCharacteristicType, (NSObject)sexCharacteristicType, (NSObject)bloodTypeCharacteristicType, (NSObject)nikeFuelQuantityType, (NSObject)bloodTypeCharacteristicType, (NSObject)heartRateQuantityType }), (success, error) => {
                    Console.WriteLine("Authorized:" + success);
                    if (error != null)
                    {
                        Console.WriteLine("Authorization error: " + error);
                    }
                });
            }
        }
        public void Refresh()
        {
            var quantityTypesToRead = QuantityTypesToRead.Select(q => new { Key = q, QuantityType = HKObjectType.GetQuantityType(q) });

            foreach (var quantityTypeToRead in quantityTypesToRead)
            {
                RefreshQuantityValue(quantityTypeToRead.Key, quantityTypeToRead.QuantityType);
            }

            var characteristicTypesToRead = CharacteristicTypesToRead.Select(c => new { Key = c, CharacteristicType = HKObjectType.GetCharacteristicType(c) });

            foreach (var characteristicTypeToRead in characteristicTypesToRead)
            {
                RefreshCharacteristicValue(characteristicTypeToRead.Key, characteristicTypeToRead.CharacteristicType);
            }
        }