iOS 11 Core NFC - un exemple de code?
Je viens d'installer la première iOS beta 11 pour un iPhone 7, et j'aimerais essayer le NFC. Il n'y a rien à ce sujet dans les paramètres. Je me demande si il y a un exemple de code montrant comment lire une étiquette. Quelqu'un peut-il montrer comment utiliser le Core NFC SDK, dans un fragment de code?
source d'informationauteur Blisterpeanuts
Vous devez vous connecter pour publier un commentaire.
Dans le site des Développeurs Apple, créer un nouvel ID d'Application et assurez-vous que
NFC Tag Reading
est activé.Ajouter les lignes suivantes dans votre .fichier plist:
et de ces, les droits du fichier:
Il devrait ressembler à quelque chose comme cela dans les fichiers correspondants:
Également Core NFC peut être activé via l'onglet Fonctionnalités dans Xcode.
Objective-c
Importation
CoreNFC
et définissez le délégué:
Dans le viewDidLoad:
Dans le délégué de rappel:
Vous devez également ajouter le
didInvalidateWithError
délégué de rappel ou vous ne serez pas conforme avec le protocole:Vous pouvez arrêter le lecteur:
Swift 3/4
Importation
CoreNFC
et définissez le délégué:
Dans le viewDidLoad:
Dans le délégué de rappel:
Vous pouvez arrêter le lecteur:
Utilisation
Après le lancement de la vue, vous devez immédiatement voir l'iOS lecteur NFC boîte de dialogue comme suit:
Une fois cette boîte de dialogue apparaît, vous avez environ une seconde à la place de l'iPhone près de la NFC balise que vous souhaitez lire. Sinon, le champ est désactivé (ce qui semble être un bug sur Apple final). J'ai souvent besoin d'annuler et de recommencer pour obtenir des mesures homogènes. Plus de détails ici.
Pour résoudre ce problème, vous devez ajouter
com.apple.developer.nfc.readersession.formats
clé dans vos droits au fichier. La clé doit être associé avec le tableau de permis nfs types.À titre d'exemple, vous pouvez ajouter ce dans vous droits.
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
</array>
Il a travaillé pour moi.
Mis à jour pour la deuxième Xcode beta.
Ajouter le NFC de votre application à partir du Centre de développement. Les identificateurs -> Id d'Application -> activer "Tag NFC de la Lecture".
Si votre projet n'a pas le droit fichier, Xcode en créer un pour vous simplement en activant puis par la suite de la désactivation de toute capacité et de l'intérieur de Xcode -> les Objectifs du Projet -> les Capacités. Vous trouverez un nouveau [Nom].les droits de fichier dans votre navigateur de projets. Cliquez-droit sur ce fichier et sélectionnez "Ouvrir en tant qu' -> Code Source". Entrez les informations suivantes entrée manuellement entre
<dict></dict>
:Dès que Xcode 9 permet d'activer le NFC Tag de la Lecture de Capacités de sélection de cette étape devient obsolète, parce que tout ce que vous avez à faire est de lui permettre de là. Le courant (première) version Bêta ne prend pas en charge cette.
Vous devez également entrer une description de l'utilisation de la confidentialité avertissement iOS va afficher à l'utilisateur. (En ce moment (bêta 1) cet avertissement s'affiche lorsque l'appareil est prêt à numériser et montre un système natif de dialogue qui comprennent ce message. Toutefois, cela semble être unploished.) Ouvrez votre cible Info.plist et commencez à taper "vie privée" et vous pouvez faire défiler vers le bas pour "vie privée" - NFC Description de l'Utilisation" pour le sélectionner en appuyant sur retour. Entrez un véritable explication à votre utilisateur dans la colonne de droite.
Maintenant, vous devriez être en mesure d'importer CoreNFC, dans Swift:
Ensuite sur la tête de Apple la documentation.
Important: Si le compilateur renvoie une erreur avecBeta 2 n'ont pas ce problème plus. Toutefois, le matériel réel de la forme de l'iPhone 7/p est toujours nécessaire pour l'essai réel.No such module 'CoreNFC'
vérifiez si vous avez sélectionné une réelle iOS 11 dispositif de construire, pas un simulateur. Il doit aussi être l'iPhone 7 ou 7 plus. Cela pourrait changer dans une prochaine version, mais les tests NFC ne seront pleinement de travail avec du matériel réel. (cp. Core Bluetooth où vous pouvez exécuter sur Simulateur, mais pas de tester les capacités réelles.)Juste pour enrichir les réponses précédentes, il est important de garder à l'esprit ces considérations spécifiquement de la
NFCNDEFReaderSession
classe:com.apple.developer.nfc.readersession.formats
" droit dans votre processus. En plus de votre applicationInfo.plist
doit contenir un non-vide, une description de l'utilisation de la chaîne.les balises qui contiennent un valide message NDEF. NFC Forum type de Balise de 1 à 5
c'est NDEF mis en forme sont pris en charge. Un système modal de l'INTERFACE utilisateur sera présent
une fois
-beginSession
est appelé à informer le début de la session; l'L'INTERFACE utilisateur de la feuille est automatiquement fermée lorsque la session est annulée
soit par l'utilisateur ou par téléphone
-invalidateSession
.-beginSession
est appelé;-readerSession:didInvalidateWithError:
sera de retourNFCReaderSessionInvalidationErrorSessionTimeout
d'erreur lorsque la limite de temps est atteinte.-readerSession:didInvalidateWithError:
sera de retourNFCReaderSessionInvalidationErrorSystemIsBusy
lorsqu'un nouveau lecteur de session est initiée par-beginSession
quand il y a un lecteur actif session.-readerSession:didInvalidateWithError:
sera de retourNFCReaderSessionInvalidationErrorUserCanceled
lorsque l'utilisateur clique sur le bouton sur l'INTERFACE utilisateur.-readerSession:didInvalidateWithError:
sera de retourNFCReaderSessionInvalidationErrorSessionTerminatedUnexpectedly
lorsque le client demande entre dans le contexte de l'état.-readerSession:didInvalidateWithError:
sera de retourNFCReaderErrorUnsupportedFeature
quandVous devez vous assurer que la description de l'utilisation qui est en place et également ajouter de la capacité de l'application à l'intérieur de l'Apple Developer Center.
J'ai un tutoriel basé sur mon expérience (Swift 4). Il est disponible ici: Core NFC Tutoriel
J'ai ajouté Core NFC pour un projet en utilisant les ressources de ces réponses. Une autre chose qui n'était pas de noter toutefois que même si vous ajoutez de la capacité manuellement par le biais des droits, Xcode ne semble pas regarder le fichier, sauf si vous avez une capacité activée. Ceci est probablement dû à Xcode 9 Beta 1 de ne pas avoir de Core NFC comme une capacité commutateur pour beaucoup de personnes de l'échantillon de projets. Donc, juste être sûr de faire tourner au moins une autre possibilité si vous voyez toujours des questions! J'ai été voir une interruption inattendue de l'erreur de retourner immédiatement jusqu'à ce que j'ai fait cela.
Je laisse cela comme un commentaire, comme il appartient, mais n'ont pas assez de réputation encore à faire. Pensé que c'était assez important à noter.
mes deux cents:
1) sous xcode 9.0 (beta 4 9M189t ) si Vous avez déjà ajouté des capacités,
pas besoin d'ajouter manuellement:
c'est fait automatiquement
2) pas de plantage si vous n'utilisez pas l'iPhone 7 OU vous êtes dans le simulateur:
Vous allez être appelé à:
il va montrer:
"Fonctionnalité n'est pas prise en charge"
3) à ne pas manquer:
donc:
4) si l'utilisateur annule, vous obtiendrez:
"Session est annulée par l'utilisateur annulation"
dans didInvalidateWithError de rappel.