Depuis la mise à jour vers iOS 6, j'ai remarqué que mon code pour ajouter un contact au carnet d'adresses de l'iPhone ne fonctionne plus. Je pense qu'il s'agit d'un problème lié à l'autorisation, car Apple nécessite désormais l'autorisation de l'utilisateur avant d'accéder aux contacts (résolution de ce problème).
Je m'attendais à ce que l'application demande automatiquement l'autorisation d'accéder aux contacts, comme dans la capture d'écran ci-dessous, mais ce n'est pas le cas. Essayer d'ajouter le contact échoue simplement avec ABAddressBookErrorDomain error 1
.
Dois-je lancer par programme la boîte de dialogue de demande d'accès aux contacts? Comment cela se fait-il?
granted
paramètre dans le bloc d'achèvement.Cela a fait le tour parfait pour moi!
Sur iOS6, Apple introduit un nouveau contrôle de la confidentialité, l'utilisateur peut contrôler l'accès aux contacts et au calendrier par chaque application. Donc, du côté du code, vous devez ajouter un moyen de demander l'autorisation. Sous iOS5 ou avant, nous pouvons toujours appeler
pour obtenir le carnet d'adresses sans aucun problème, mais sous iOS6, si vous n'avez pas la permission, cet appel renverra simplement un pointeur vide. C'est pourquoi nous devons changer la méthode pour obtenir ABAddressBookRef.
Dans le code, le sémaphore est utilisé pour bloquer jusqu'à la réponse, tandis qu'ABAddressBookRequestAccessWithCompletion demandera l'autorisation si l'application ne l'a pas demandé auparavant. Sinon, il suivra simplement les paramètres dans Paramètres-Confidentialité-Contact.
SOURCE: http://programmerjoe.blogspot.com/2012/10/ios6-permissions-contacts.html
la source
if (ABAddressBookRequestAccessWithCompletion != NULL)
vérification, pour contrôler s'il faut entrer dans laABAddressBookGetAuthorizationStatus()
section du code de Kyle a bien fonctionné pour moi avec iOS 5 et 6.Pour le cadre de contacts:
la source
la source
On a eu quelques problèmes avec Yunas code sur iOS6.1 dans Xcode5. Avec quelques petites adaptations, cela a fonctionné pour moi.
Le problème était que ARC dans iOS 6, ne permet pas
dispatch_release(sema);
Voici le code de travail. Remarque: j'utilisem_addressbook
au lieu deaddressbook
comme ABAddressBookRef!ViewController.m
la source
la source
Si quelqu'un a un problème avec le carnet d'adresses dans iOS5, utilisez
Au lieu de
la source
Pour ajouter une description à l'alerte, utilisez InfoPlist.strings.
NSContactsUsageDescription = "TESTING!";
la source
Swift 3. N'oubliez pas d'importer les contacts
la source
Selon la récente documentation de développement Apple iOS, Apple insiste pour utiliser Contact en plus du carnet d'adresses .
Le code ci-dessus objectif c aide à trouver l'autorisation d'accès aux contacts météorologiques est accordée ou non.
la source
Avec iOS 6, vous devez demander une autorisation comme celle-ci
la source
Pour obtenir le carnet d'adresses dans iOS
la source
Ce code montre comment définir l'autorisation et comment obtenir tous les contacts du téléphone et afficher les contacts dans la liste avec l'étiquette d'étiquette
la source