2

WWDC 2014 セッション 612 (45:14) では、Core Motion サービスの認証ステータスを確認する方法が強調されています。

- (void)checkAuthorization:(void (^)(BOOL authorized))authorizationCheckCompletedHandler {
    NSDate *now = [NSDate date];
    [_pedometer queryPedometerDataFromDate:now toDate:now withHandler:^(CMPedometerData *pedometerData, NSError *error) {
        // Because CMPedometer dispatches to an arbitrary queue, it's very important
        // to dispatch any handler block that modifies the UI back to the main queue.
        dispatch_async(dispatch_get_main_queue(), ^{
            authorizationCheckCompletedHandler(!error || error.code != CMErrorMotionActivityNotAuthorized);
        });
    }];
}

これは機能しますが、 への最初の呼び出しで-queryPedometerDataFromDate:toDate:withHandler:は、システム ダイアログを介してユーザーに承認を求めるプロンプトが表示されます。明らかなUX上の理由から、ユーザーに許可を求めることなくステータスを確認したいと思います。

私が達成しようとしていることは可能ですか、それとも API について間違った方法で考えているだけですか?

4

2 に答える 2

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

このメソッドを使用すると、アプリが Core Motion データへのアクセスを許可されていない場合に、ユーザーに通知できます。CMPedometerstepCounterというインスタンスを作成し、上記のメソッドを実行するだけです。

于 2015-08-28T18:22:20.037 に答える