2014-01-08 72 views
12

如果應用程序需要訪問Motion Activity數據,它會在安裝時詢問用戶。但是,如果用戶意外地回答「否」,那麼該應用程序將無法工作。iOS - 在設置>隱私>動作活動中啓用動作活動

我正在尋找一種方法來檢查運動活動是否啓用,以便我可以提示用戶啓用,如果沒有。

有人能指出我的代碼明智嗎?


繼從文件的信息(謝謝),看來蘋果公司不提供直接的方法來檢查隱私的Motion Activity狀態。我能夠通過對誤差撿找出: -

[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. 
} 

回答

10

蘋果有sample project,顯示瞭如何檢查和所有不同的權限(包括運動動作)here請求訪問。我建議你快速瀏覽一下 - 這非常簡單。

+0

嗨 - 我只是看了看這個,它使用[CMMotionActivityManager isActivityAvailable。我剛剛嘗試過,無論它是否已啓用,它總是返回TRUE!非常奇怪,如他們所說,如果這返回他們狀態無法使用。他們似乎沒有提供'檢查',而只是最初的啓用電話。但如果它被禁用,它不會重新請求! – MrNeilM

+2

'[CMMotionActivityManager isActivityAvailable]'返回設備是否支持動作數據的布爾值,而不是用戶是否允許應用程序使用它。也就是說,沒有辦法重新申請許可。您只能看到您是否有權限,如果沒有,請提醒用戶進入「設置」應用並自行啓用。 – Doc

+0

該設置可以在隱私部分下的設置應用程序中找到。選擇權限,然後您可以啓用/禁用相應應用程序的權限。 – Doc

4

全新的iOS 9,CMSensorRecorderdoc link)有一個類的方法來檢查,如果您的應用程序被授權爲運動&健身:

  • Switft​​
  • Objective-C的+ (BOOL)isAuthorizedForRecording
+0

但是,這並不表示用戶是否已經啓用了運動和健身追蹤權限 – Nate

+0

這是一個可以接受的答案 –

+0

這回答了一個問題:「如何檢查我的應用程序是否有權訪問Motion&Fitness數據?「 - 」沒有被問到。「 問題是如何檢查移動活動跟蹤是否在設備的iOS設置中啓用(全局)。正確答案是「沒有辦法做到這一點」,這是該作者自己的評論。 –

1

CMSSensorRecorder是iOS 11的新成員,它有一個名爲authorizationStatus的靜態方法來檢索它。

+ (CMAuthorizationStatus)authorizationStatus;