2016-12-15 193 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

嘿男人謝謝你的迴應,感謝你的努力。 –