iOS - è l'attività di movimento abilitata nelle impostazioni> Privacy> Attività di movimento
-
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.
}
. 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;
}
}
.