iOS - è l'attività di movimento abilitata nelle impostazioni> Privacy> Attività di movimento

StackOverflow https://stackoverflow.com//questions/21005990

  •  20-12-2019
  •  | 
  •  

Domanda

Se un'app richiede l'accesso ai dati Motion Activity che richiede l'utente in installazione.Tuttavia se l'utente risponde accidentalmente "no", quindi l'app non funzionerà.

Sto cercando un modo per verificare se l'attività di movimento è abilitata, in modo che posso richiedere all'utente di abilitare se no.

Qualcuno può indicarmi nel giusto codice di direzione saggio per favore?


.

Seguendo le informazioni da DOC (grazie), sembra che Apple non fornisca un metodo diretto per verificare lo stato di Motion Activity in Privacy.Sono stato in grado di scoprirlo raccogliendo l'errore: -

[stepCounter queryStepCountStartingFrom:[NSDate date]
                                     to:[NSDate date]
                                toQueue:[NSOperationQueue mainQueue]
                            withHandler:^(NSInteger numberOfSteps, NSError *error) {
                                if (error != nil && error.code == CMErrorMotionActivityNotAuthorized) {
                                    // The app isn't authorized to use motion activity support.
}
.

È stato utile?

Soluzione

Nuovo in iOS 11, CMSENSORRecorder ha un metodo statico chiamato AuthorizationStatus per recuperarlo.

+ (CMAuthorizationStatus)authorizationStatus;

Altri suggerimenti

Apple ha un Progetto di esempio che mostra come verificare e richiedere l'accesso per tutte le varie autorizzazioni (inclusa l'attività di movimento) qui .Ti suggerisco di dare un'occhiata veloce a questo - è piuttosto semplice.

Nuovo in iOS 9, CMSensorRecorder ( doc link ) ha un metodo di classe per verificare se la tua app è autorizzata per il movimento e il fitness:

    .
  • switft class func isAuthorizedForRecording() -> Bool
  • Obiettivo-c + (BOOL)isAuthorizedForRecording

Che ne dici di questo?

- (void)checkMotionAuth {
    switch ([CMMotionActivityManager authorizationStatus])
    {
        case CMAuthorizationStatusNotDetermined:
        {
            CMMotionActivityManager *manager = [[CMMotionActivityManager alloc]init];
            [manager queryActivityStartingFromDate:[NSDate date]
                                            toDate:[NSDate date]
                                           toQueue:[NSOperationQueue mainQueue]
                                       withHandler:^(NSArray<CMMotionActivity *> * _Nullable activities, NSError * _Nullable error) {

                                           if ([CMMotionActivityManager authorizationStatus] == CMAuthorizationStatusAuthorized)
                                           {
                                               NSLog(@"Authorized");
                                           }
                                           else
                                           {
                                               NSLog(@"Denied");
                                           }
                                       }];
        }
            break;
        case CMAuthorizationStatusRestricted:
        case CMAuthorizationStatusDenied:
        {
            NSLog(@"Denied/Restricted");
        }
            break;
        case CMAuthorizationStatusAuthorized:
        {
            NSLog(@"Authorized");
        }
        default:
            break;
    }
 }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top