1 - Création d'une application Single View
Indiquer le bundle identifier : com.yourdomain.test-nfc
1.1 - Création d'un App ID
Se connecter au site https://developer.apple.com, cliquer sur "Certificates, IDs, and Profiles", puis dans la colonne de gauche cliquer sur "identifier".
Cliquer sur + pour ajouter un nouvel ID.
Sélectionner App IDs.
Remplir le formulaire comme suit :
Register an App ID :
- plateform : iOS, tvOS, watchOS
- description : test nfc
- Bundle ID [x] Explicit : com.yourdomain.test-nfc
- Capabilities : [x] NFC Tag Reading
Cliquer sur "Continue", puis sur "Register".
1.2 - Création d'un profil de provisionnement
Se connecter au site https://developer.apple.com, cliquer sur "Certificates, IDs, and Profiles", puis dans la colonne de gauche cliquer sur "Profiles".
Cliquer sur + pour ajouter un nouveau Profile.
Remplir le formulaire comme suit :
Register a New Provisioning Profile :
Development : iOS App Development
Cliquer sur Continue.
Generate a Provisioning Profile :
App ID: Sélectionner l'App ID crée.
Cliquer sur Continue.
Select Certificates : sélectionner le certificat de développement.
Select Devices : Sélectionner l'iphone sur lequel on souhaite déployer.
Cliquer sur Continue
Provisioning Profile Name : test nfc
Attention : Pas de majuscule dans le nom de profile
Cliquer sur Generate, puis sur Download.
Ajout du profil dans le projet XCode :
Dans les propriétés de l'application, décocher "Automatically manage signing" dans le volet signing.
Dans les volets signing (Debug) et (Release), sélectionner le provisioning profile que l'on viens de télécharger.
Dans l'onglet Capabilities, activer "Near Field Communication Tag Reading".
1.3 - Ajout d'une clé dans le fichier info.plist
Ajout la clé / valeur suivante :
Privacy - NFC Scan Usage Description : Message in a card
2 - Création d'un ControllerNavigationView
Dans le storyboard, sélectionner le controllerView par défaut et dans la barre de menu Editor > Embed In > NavigationController.
3 - Mise en place du layout
Dans le storyboard, sélectionner le ViewController, ajouter un label et un bouton.
Lier le label et le bouton dans le view controller :
@IBOutlet weak var messageLabel: UILabel!
@IBAction func scanPressed(_ sender: Any) {
}
4 - Implémentation de Core NFC
Dans le ViewController implémenter de façon suivante :
import UIKit
import CoreNFC
class ViewController: UIViewController, NFCNDEFReaderSessionDelegate {
@IBOutlet weak var messageLabel: UILabel!
var nfcSession: NFCNDEFReaderSession?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func scanPressed(_ sender: Any) {
nfcSession = NFCNDEFReaderSession.init(delegate: self, queue: nil, invalidateAfterFirstRead: true)
nfcSession?.begin()
}
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
print("The session was invalidated: \(error.localizedDescription)")
}
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
// Parse the card's information
}
}
Important : Le deux premiers caractères du message NEDF indiquent le type MIME.
Source : https://www.appcoda.com/corenfc-introduction/