2016-04-22 74 views
1

我使用CNContactPickerViewController提取聯繫人,而且似乎iOS不會自動詢問我的訪問權限。iOS聯繫人UI框架權限

我真的需要使用CNContactPickerViewController的權限嗎?還是需要手動請求權限?

如果我需要權限,如果我將此應用程序提交給App Store並且我沒有要求聯繫人權限,我的應用程序是否會被拒絕?

注意:在ContactsUI Framework documentation沒有說明。

回答

0

我想使用ContactsUI API不需要權限,因爲它在Contacts Framework Reference中聲明,權限只會顯示CNContactStore的調用(僅限第一次)。

用戶可以在每個應用程序的基礎上授予或拒絕訪問聯繫人數據。任何撥打CNContactStore的電話都會在用戶被要求授予或拒絕訪問時阻止應用程序。請注意,僅在第一次請求訪問時提示用戶;任何後續的CNContactStore調用都使用現有的權限。

來源

蘋果Contacts Framework Reference

0

檢查這個Apple example。總之,您需要檢查(開關櫃)ABAddressBookGetAuthorizationStatus(),如果值爲kABAuthorizationStatusAuthorized,則用戶已授予對其聯繫人的訪問權限。 如果授權狀態爲kABAuthorizationStatusNotDetermined,您甚至可以使用方法[CNContactStore requestAccessForEntityType:completionHandler:]請求地址簿訪問。

+0

謝謝!但是我使用'Contacts'和'ContactsUI'框架,因爲'AddressBook'框架已經被棄用了。我不認爲他們有類似的API。 – chrisamanse

+0

對不起,我總是使用這個代碼,所以我沒有仔細閱讀.. 簡而言之,當使用Contact&ContactUI框架時,您需要使用此方法檢查授權狀態:'CNContactStore.authorizationStatusForEntityType()'。然後你檢查枚舉值'CNAuthorizationStatus',你想''授權'。 – Ivan

+0

不用擔心。我剛剛在Apple文檔中發現了一個聲明,這可能表明ContactsUI Framework不需要權限:http://stackoverflow.com/a/36788160/4897074 – chrisamanse

0

當使用Contacts & ContactsUI框架時,您需要使用此方法檢查授權狀態:CNContactStore.authorizationStatusForEntityType()。然後你檢查枚舉值CNAuthorizationStatus,你想要.Authorized

如果狀態爲.Denied.NotDetermined您可以請求使用方法requestAccessForEntityType()訪問聯繫人,請參閱CNContactStore class for info。

3

使用CNContactPickerViewController時不需要權限。

的文檔CNContactPickerViewController狀態:

使用聯繫人選擇器視圖並不需要訪問用戶的聯繫人和用戶應用程序將不會出現提示「授予權限」的訪問。該應用只能訪問用戶的最終選擇。

相關問題