提示动作和健身数据的权限

leo*_*sas 7 objective-c ios core-motion appdelegate

我希望在应用程序启动后立即提示用户访问Motion&Fitness数据(CoreMotion)的权限.

现在我正在尝试对数据执行"虚拟"查询以提示对a的权限 application:didFinishLaunchingWithOptions

CMMotionActivityManager *motionActivityManager=[[CMMotionActivityManager alloc]init];
    [motionActivityManager startActivityUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMMotionActivity *activity) {
        NSLog(@"Dummy query to prompt permission from user");

    }];
Run Code Online (Sandbox Code Playgroud)

但是发生的事情是应用程序启动并且它挂在启动画面上 - 如果我按下主页按钮然后应用程序尝试关闭,然后弹出权限提示.

有谁想过如何做到这一点?

Som*_*mmm 5

我研究了运动管理器,并试图创建一个用于运动检测的库。由此,我知道执行以下代码时会弹出运动检测权限。

CMMotionActivityManager *motionActivityManager = [[CMMotionActivityManager alloc]init];
    [motionActivityManager startActivityUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMMotionActivity *activity) {
        NSLog(@"Motion...%@",activity);
    }];
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你。谢谢。


小智 1

有同样的问题。对我有用的修复方法是在第一个视图完全加载并调用其所有委托之后的某个位置启动运动管理器。

看来 startActivityUpdatesToQueue 方法会阻塞,直到以某种方式接受权限为止,但权限请求不会在屏幕上显示,直到第一个视图出现为止。因此,如果您在此时间之前放置此方法,它只会阻止应用程序完成启动,并且启动屏幕将继续。