Статус авторизации CMMotionActivityManager

Я пытаюсь найти способ обработки статусов авторизации для активности 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)

Любые идеи, почему? или, по крайней мере, как правильно это сделать?


person Zakaria Braksa    schedule 12.02.2016    source источник


Ответы (1)


Возможно, вы получаете 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")
    }

Оператор != означает, что нет. Итак, вы выполняете серию проверок того, чем код не является. Трудно понять, как можно получить какую-либо полезную информацию, задав этот вопрос. Возможно, было бы разумнее спросить, что такое код , что предполагает использование оператора ==.

person matt    schedule 12.02.2016
comment
Спасибо... вау, я действительно в шоке, что не заметил, что использовал !=... Как видно из print, я явно стремился к ==... Я действительно не знаю, что там произошло: ( - person Zakaria Braksa; 12.02.2016
comment
Было бы неплохо использовать оператор switch, и тогда проблема никогда бы не возникла. :) - person matt; 12.02.2016
comment
Полностью согласен ... (Я пытался что-то быстро взломать, чтобы сначала протестировать, а потом провести рефакторинг). Еще раз спасибо! - person Zakaria Braksa; 12.02.2016