6

の認証ステータスを取得したいCMMotionActivityManager。カレンダーや場所などの他のサービスについては、これらのクラスのユーザー承認ステータスを提供する API のプロパティがあります。CMMotionActivityManagerクラスの承認ステータスを取得するにはどうすればよいですか?

4

4 に答える 4

4

これが私がやっている方法です:

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")
        }

})
于 2016-02-12T02:05:38.313 に答える
3

Swift 3.0 用に Zakaria の回答を少し調整する必要があり、また新しいエラーによって問題が発生したため、コードを取得するためにそれを 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()
  }) 
}
于 2017-12-21T01:31:25.190 に答える