CMMotionActivityManager授权状态

时间:2016-02-12 00:06:44

标签: ios swift core-motion

我正试图找出一种方法来处理Motion活动的授权状态

这是我到目前为止所提出的:

manager = CMMotionActivityManager() 

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

    if(error != nil){
        if(error!.code != Int(CMErrorMotionActivityNotAuthorized.rawValue)){
            print("CMErrorMotionActivityNotAuthorized")
        }else if(error!.code != Int(CMErrorMotionActivityNotEntitled.rawValue)){
            print("CMErrorMotionActivityNotEntitled")
        }else if(error!.code != Int(CMErrorMotionActivityNotAvailable.rawValue)){
            print("CMErrorMotionActivityNotAvailable")
        }
    }
})

但有一个问题:

当我拒绝移动活动的应用程序权限时(通过settings),我得到CMErrorMotionActivityNotEntitled

(我相信我应该得到CMErrorMotionActivityNotAuthorized

任何想法为什么?或者至少是这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

也许你 获得CMErrorMotionActivityNotAuthorized。您永远不会知道您的代码,因为您的代码不会询问您获得的代码。它会询问您获取的代码:

    if(error!.code != Int(CMErrorMotionActivityNotAuthorized.rawValue)){
        print("CMErrorMotionActivityNotAuthorized")
    }else if(error!.code != Int(CMErrorMotionActivityNotEntitled.rawValue)){
        print("CMErrorMotionActivityNotEntitled")
    }else if(error!.code != Int(CMErrorMotionActivityNotAvailable.rawValue)){
        print("CMErrorMotionActivityNotAvailable")
    }

!=运算符表示不是。因此,您正在对代码不是的内容进行一系列检查。通过提出这个问题,很难看出如何获得任何有用的信息。询问代码可能更有意义,这将涉及使用==运算符。