2014-04-29 46 views
2

我想獲得CMMotionActivityManager的授權狀態。對於日曆和位置等其他服務,我們在API中擁有一些屬性,這些屬性爲我們提供了這些類的用戶授權狀態。我如何獲得CMMotionActivityManager課程的授權狀態?CMMotionactivitymanager authorizationstatus

+0

的可能重複的[iOS的 - 是在設置>隱私>運動活動啓用運動活動(http://stackoverflow.com/questions/21005990/ios-is-motion-activity-enabled-in-settings -privacy-motion-activity) –

回答

9

CMMotionActivityManager目前不提供像其他框架一樣直接檢查授權狀態的方法。

iOS - is Motion Activity Enabled in Settings > Privacy > Motion Activity

然而,正如上面的問題提意見,如果你嘗試使用

queryActivityStartingFromDate:toDate:toQueue:withHandler 

查詢和用戶沒有授權的應用程序時,處理器(CMMotionActivityQueryHandler)將返回該錯誤。

CMErrorMotionActivityNotAuthorized 
3

這裏是我如何做它:

manager = CMMotionActivityManager() 

let today = NSDate() 

manager.queryActivityStartingFromDate(today, toDate: today, toQueue: NSOperationQueue.mainQueue(), 
    withHandler: { (activities: [CMMotionActivity]?, error: NSError?) -> Void in 

     if let error = error where error.code == Int(CMErrorMotionActivityNotAuthorized.rawValue){ 
      print("NotAuthorized") 
     }else { 
      print("Authorized") 
     } 

}) 
+2

好的孩子們,請記住添加manager.stopActivityUpdates()到處理程序。 :) – CodeReaper

+0

好趕上!謝謝 –

1

我不得不調整扎卡利亞的回答有點爲雨燕3.0,也是新誤的問題,所以我不得不將其轉換回NSError獲取代碼,但這是我的功能現在的樣子。謝謝!

func triggerActivityPermissionRequest() { 
    let manager = CMMotionActivityManager() 
    let today = Date() 

    manager.queryActivityStarting(from: today, to: today, to: OperationQueue.main, withHandler: { (activities: [CMMotionActivity]?, error: Error?) ->() in 
    if error != nil { 
     let errorCode = (error! as NSError).code 
     if errorCode == Int(CMErrorMotionActivityNotAuthorized.rawValue) { 
     print("NotAuthorized") 
     } 
    } else { 
    print("Authorized") 
    } 
    manager.stopActivityUpdates() 
    }) 
} 
相關問題