Seit dem Update auf iOS 6 ist mir aufgefallen, dass mein Code zum Hinzufügen eines Kontakts zum Adressbuch des iPhones nicht mehr funktioniert. Ich glaube, dies ist ein Problem im Zusammenhang mit Berechtigungen, da Apple jetzt Benutzerberechtigungen benötigt, bevor auf Kontakte zugegriffen werden kann (Behebung dieses Problems) Problems).
Ich habe erwartet, dass die App automatisch um Erlaubnis bittet, auf Kontakte zuzugreifen, wie im folgenden Screenshot, aber das tut sie nicht. Der Versuch, den Kontakt hinzuzufügen, schlägt mit einfach fehlABAddressBookErrorDomain error 1
.
Muss ich den Zugriff auf den Kontaktanforderungsdialog programmgesteuert starten? Wie geht das?
granted
Parameter im Abschlussblock überprüfen .Das war der perfekte Trick für mich!
Unter iOS6 führt Apple eine neue Datenschutzkontrolle ein. Der Benutzer kann den Zugriff auf Kontakt und Kalender für jede App steuern. Auf der Codeseite müssen Sie also eine Möglichkeit hinzufügen, um die Berechtigung anzufordern. In iOS5 oder früher können wir immer anrufen
Um das Adressbuch ohne Probleme zu erhalten, aber in iOS6, wenn Sie keine Berechtigung haben, gibt dieser Aufruf nur einen leeren Zeiger zurück. Deshalb müssen wir die Methode ändern, um ABAddressBookRef zu erhalten.
Im Code wird das Semaphor zum Blockieren bis zur Antwort verwendet, während ABAddressBookRequestAccessWithCompletion um Erlaubnis bittet, wenn die App zuvor nicht gefragt hat. Andernfalls folgen Sie einfach den Einstellungen in Einstellungen-Datenschutz-Kontakt.
QUELLE: http://programmerjoe.blogspot.com/2012/10/ios6-permissions-contacts.html
quelle
if (ABAddressBookRequestAccessWithCompletion != NULL)
überprüft hat, ob er in denABAddressBookGetAuthorizationStatus()
Abschnitt von Kyles Code gehen soll. Das hat bei iOS 5 und 6 gut funktioniert.Für den Kontaktrahmen:
quelle
quelle
Hatte einige Probleme mit Yunas- Code unter iOS6.1 in Xcode5. Mit ein paar kleinen Anpassungen hat es bei mir funktioniert.
Das Problem war, dass ARC in iOS 6 dies nicht zulässt.
dispatch_release(sema);
Hier ist der Arbeitscode. Hinweis: Ich verwendem_addressbook
stattaddressbook
als ABAddressBookRef!ViewController.m
quelle
quelle
Wenn jemand ein Problem mit dem Adressbuch in iOS5 hat, verwenden Sie
Anstelle von
quelle
Zum Hinzufügen einer Beschreibung zur Warnung verwenden Sie InfoPlist.strings.
NSContactsUsageDescription = "TESTING!";
quelle
Swift 3. Vergessen Sie nicht, Kontakte zu importieren
quelle
Laut der jüngsten Apple-Entwicklungsdokumentation für iOS besteht Apple darauf, neben AddressBook auch Contact zu verwenden .
Der oben genannte Ziel-C-Code hilft beim Auffinden, ob die Berechtigung zum Zugriff auf Wetterkontakte erteilt wurde oder nicht.
quelle
Unter iOS 6 müssen Sie um Erlaubnis bitten
quelle
Adressbuch in ios bekommen
quelle
Dieser Code zeigt, wie Sie die Berechtigung festlegen und alle Kontakte vom Telefon abrufen und die Kontakte in der Liste mit dem Label-Tag anzeigen
quelle