iOS 9 Beta 5-日历隐私访问警报没有显示在iPhone上,但显示在模拟器上



对于新的iOS 9 Beta 5和watch os 2固件,我遇到了一些非常奇怪的事情。

我正在尝试使用这段代码,如果用户还没有授予访问权限,这段代码应该会弹出一个警报,请求访问日历的权限。问题是,即使用户没有授予访问日历的权限,警报也不会出现:

if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
    NSLog(@"Monkey");
    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
    {
         NSLog(@"Banana");
         /*
         more code here
         */
    }
}

在代码中添加断点后,我推断出这一行是问题所在:

[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {

这行之后的任何内容都不会执行,因此警报永远不会显示。然而,如果我在模拟器上运行watchkit应用程序,而不是我自己的手表和iPhone,同样的线路也会起作用。尽管我对granted有一个if-else语句,但是这个语句不会执行因为{之后的任何东西都不会执行。这意味着日志将不显示Banana,只显示Monkey。当我在自己的设备上进行测试时,就会出现这种情况。在模拟器上,这两个都将显示,并且访问日历提醒也将出现。

同样值得注意的是,当iOS 9 Beta 3发布时,同样的代码在我自己的设备和模拟器上运行得非常好。大约一周前,当我把手机升级到iOS 9 Beta 5时,我就遇到了这个问题,所以我有理由相信这可能是某种bug。

我的问题解决了。显然我忘了对我的苹果手表进行软件升级。更新手表使隐私警报显示,现在我可以抓取手表上的日历事件。

最新更新