2016-04-22 18 views
1

Ich hole Kontakte mit CNContactPickerViewController, und es scheint, dass iOS mich nicht automatisch nach Zugriffsberechtigungen fragt.iOS KontakteUI Framework Permissions

Benötige ich wirklich Berechtigungen für die Verwendung von CNContactPickerViewController oder muss ich manuell nach Berechtigungen fragen?

Wenn ich hierfür Berechtigungen benötige, wird meine App abgelehnt, wenn ich diese App an den App Store übergebe und nicht nach den Zugriffsrechten für Kontakte frage?

Hinweis: In der ContactsUI Framework documentation ist nichts angegeben.

Antwort

0

Ich denke, dass die Verwendung von ContactsUI-API keine Berechtigungen benötigt, da es in Contacts Framework Reference angibt, dass Berechtigungen (nur das erste Mal) nur bei Aufrufen von CNContactStore angezeigt werden.

Benutzer können den Zugriff auf Kontaktdaten pro Anwendung gewähren oder verweigern. Jeder Anruf an CNContactStore wird die Anwendung blockieren, während der Benutzer aufgefordert wird, den Zugriff zu gewähren oder zu verweigern. Beachten Sie, dass der Benutzer nur beim erstmaligen Zugriff aufgefordert wird. Alle nachfolgenden CNContactStore Aufrufe verwenden die vorhandenen Berechtigungen.

Quelle:

Apple Contacts Framework Reference

0

prüfen diese Apple example. Kurz gesagt, Sie müssen für ABAddressBookGetAuthorizationStatus() (switch-case) überprüfen, und wenn der Wert kABAuthorizationStatusAuthorized ist, hat der Benutzer Zugriff auf ihre Kontakte gewährt. Wenn der Autorisierungsstatus kABAuthorizationStatusNotDetermined lautet, können Sie sogar den Adressbuchzugriff mit der Methode [CNContactStore requestAccessForEntityType:completionHandler:] anfordern.

+0

Vielen Dank! Aber ich benutze 'Contacts' und' ContactsUI' Frameworks, da 'AddressBook' Framework bereits veraltet ist. Und ich glaube nicht, dass sie eine ähnliche API haben. – chrisamanse

+0

Entschuldigung, ich habe diesen Code immer benutzt, also habe ich nicht sorgfältig gelesen. Kurz gesagt, wenn Sie Contact & ContactUI Frameworks verwenden, müssen Sie den Autorisierungsstatus mit dieser Methode überprüfen: 'CNContactStore.authorizationStatusForEntityType()'. Und dann checkst du nach dem Enum-Wert 'CNAuthorizationStatus', du willst' .Authorized'. – Ivan

+0

Keine Sorgen. Ich habe gerade eine Aussage in Apple Docs gefunden, die darauf hinweisen kann, dass ContactsUI Framework keine Berechtigung benötigt: http://StackOverflow.com/a/36788160/4897074 – chrisamanse

0

Bei Verwendung von Contacts & ContactsUI Frameworks müssen Sie den Autorisierungsstatus mit dieser Methode überprüfen: CNContactStore.authorizationStatusForEntityType(). Und dann überprüfen Sie auf enum Wert CNAuthorizationStatus, Sie wollen .Authorized.

Wenn Status .Denied oder .NotDetermined Sie Zugriff auf Kontakte mit der Methode anfordern können requestAccessForEntityType() finden CNContactStore Klasse für Info.

3

Die Genehmigung ist nicht erforderlich, wenn CNContactPickerViewController verwendet wird.

Die Dokumentation für CNContactPickerViewController Zustände:

Die App Kontakt Picker Ansicht verwenden, müssen keinen Zugriff auf die Kontakte des Benutzers und der Benutzer wird für „grant permission“ Zugriff nicht gefragt. Die App hat nur Zugriff auf die endgültige Auswahl des Nutzers.