2016-12-15 101 views
0

我需要许可使用的是iOS的提醒,并为我这样做:功能执行IOS

switch EKEventStore.authorizationStatus(for: .reminder) { 
case .authorized:      
    print("Access granted") 
    //everything's normal here 
    //executing my function here 

case .denied: 
    print("Access denied") 
case .notDetermined:  
    print("not defined yet") 

    //No determined so asking for permission 
    self.eventStore.requestAccess(to: .reminder) { (granted, error) -> Void in 
     if granted == true { 
      print("permission granted") 

      //executing my function here after getting permissions but this piece of code executes after a long delay 
      //this piece of codes are executing after a while say 5-10 seconds 

     }else if error != nil{  
      print("ther's an error : \(error)") 
     }    
    } 

default: 
    print("Case Default") 
} 

时,应用程式会提示用户进行提醒和用户的权限以上解释授予我的下一个功能功能执行,但过了一段时间(5-10秒)

任何人都可以解释为什么会发生?

回答

1

requestAccess的完成没有在主线程上调用。把permissions granted代码里面调度异步:

DispatchQueue.main.async { 
    print("permission granted") 
} 
+0

嘿人感谢您的回应,感谢您的努力。 –

1

请求权限纯粹是一个Asynchornous进程,您不能立即执行该函数,因为无法从我们的代码中控制该函数。应用程序代码可以请求权限,并且在操作系统授予权限时,我们会获得委托人回调处理程序,并根据这些权限实际接收请求的权限。

也有可能您正在从主线程线程上没有运行的线程/程序块请求权限,并且执行该代码时会有不可见的延迟。您必须检查启动权限请求的代码。

+0

嘿男人谢谢你的回应,感谢你的努力。 –