NFC In Mobile Commerce


Published on

NFC in Mobile Commerce -- Introduction, Use Cases and APIs

Published in: Technology, Business

NFC In Mobile Commerce

  1. 1. NFC IN MOBILE COMMERCE and Information Ubiquity Use Cases, Technologies, APIs C. Enrique Ortiz January, 2008 C. Enrique Ortiz Email: Phone: +1-512-635-4225 Skype: c.enrique.ortiz Website: Weblog: MobileMonday Austin:
  2. 2. A little bit about myself • Long time mobile Java developer • A regular writer and speaker on mobile technology and blogger, and contributor to Carnival of the Mobilists, Sun Mobility site, other • Founder of MobileMonday Austin • Founder and CTO at eZee inc, a mobile marketing and media platform and solutions company • Owner and Principal at Artemis Wireless Werks, a provider of mobile strategy and development services
  3. 3. Agenda •Information Ubiquity •Physical Interactions, Application Triggers and Use-cases •Background on NFC •NFC Code Example, and Pointers
  4. 4. Anything and Everything is Data Everything in our wallets is just data; the paper and plastic that we use for our driving license and ID cards, our credit and debit cards, our receipts, coupons, tickets and even our business cards. …and more importantly, anything that is data can be carried on a mobile phone. *Adapted from Mike Elgan, ComputerWorld, The Raw Feed
  5. 5. Information Ubiquity Physical Interactions, Application Triggers, Physical Browsing • Information everywhere • Addressable (and thus identifiable) information, or workflows for that matter • Think physical interactions, application triggers and physical browsing – A number to call, a URL, a short-code, barcodes, radio tags • On books, magazines, posters, soda cans, billboards – For advertisement, for authentication, for control, for quick action, access to information – Some interactions are more manual than others • The Mobile Handset is at the center of this ubiquity
  6. 6. Information Ubiquity Examples of Physical Interactions and Application Triggers Visual Tags Short Codes Proximity : Ticketing, payments, other Radio Tags
  7. 7. Information Ubiquity Interactive “Smart” Posters Physical Interactions: Interactive Posters provide the perfect means for service initiation (application trigger). A poster, which could be a label, an advertisement or a plaque at the store aisle or a billboard, displays information of Text “smart” to 2ezee interest to consumers… : …and how to interact with it.
  8. 8. Example of Physical Interactions Proximity (NFC)-based payments External reader connected to the POS NFC Mobile Handset with Security Element People will continue to use cash, and credit cards, and over time, the mobile phone Photo credit: Philips Arena. At Philips Arena in Atlanta, Georgia, USA, ticket holders with NFC-enabled cellular phones make contact-less payments at concession stands.
  9. 9. Mobile Commerce Concerns Worry about security 39% 40% Costs too much for airtime 22% 27% Don't trust that transaction will be 18% completed 24% My phone doesn't have wireless 13% shopping capability. 17% Takes too long 12% 16% Unaware of this option 12% 14% Complicated navigation 9% 10% Not enough information on the sites to 5% make an informed 8% Sites I want are not available 1% 3% Items I want are not available 1% Q4 2006 3% Q2 2006 Source: Telephia
  10. 10. Most likely short-term use-cases What’s your opinion and why? • Payments? • Interactive / “Smart” posters? • For Authentication? • For Home Control? • Marketing and Advertisement • Other?
  11. 11. Near Field Communication
  12. 12. What is NFC? • A short-range radio technology • Operates at 13.56 MHz • Transfers data at up to 424 KBits/second • Activates when two NFC-compatible devices are brought within ~four centimeters • Transmission range is so short, it is inherently “secure” • NFC is still early stages, very young
  13. 13. NFC Compared to other short range radio technologies Source: The NFC Forum
  14. 14. NFC Standards • ISO 14443 Type A and 14443 Type B standards + FeliCa – ISO 14443 is a four-part international standard for contact-less smart cards operating at 13.56 MHz in close proximity with a reader antenna • ISO 18092 – Defines communication modes for NFC Interface and Protocol
  15. 15. NFC Communication Modes (Not supported by JSR 257 v1.0) Secure Connection Source: The NFC Forum
  16. 16. Terminology • NDEF - NFC Data Exchange Format – Such as Smart Posters, URI Records • RTD - Record Type Definition – An NFC-specific record type and type name which may be carried in an NDEF record • NDEF message – Basic message construct defined by this specification. An NDEF message contains one or more NDEF records • NDEF record – Contains a payload described by a type, a length, and an optional identifier • NDEF payload – The application data carried within an NDEF record
  17. 17. Contactless API JSR 257 Background
  18. 18. Anatomy of a Contactless Java Application (MIDlet) • Java Runtime – Application, JSR 257 • RFID, NFC • Antenna • Secure Elements • External elements
  19. 19. External Elements • External Readers – POS readers, MasterCard PayPass, American Express Way, Visa – Ticketing systems • External Tags – NFC, RFID, Visual • External Smartcards
  20. 20. Secure Element (SE) • Internal vs. External Secure Elements – Smart Cards such as Java Cards • MIDlets can access internal SE via SATSA • MIDlets can access external SE via JSR 257 or SATSA • External readers access internal SE directly via RFID (Card Emulation mode)
  21. 21. Typical Elements of a JavaCard Application (mapped to NFC) Internal On Contact-less (NFC) Security phones the External Element External left-side could be an Reader Smartcard internal reader, the MIDlet MIDlet itself, or and external reader (via NFC Card Emulation Mode). The right-side, the “card”, could be an internal SE accessible via SATSA, or external card accessible via JSR 257. All communication using APDUs.
  22. 22. NFC Programming Using (JSR-257) Java Contactless Communication API • Discover and exchange data with contact-less targets – NDEF tags – RFID tags – External smart cards • Support for visual tags
  23. 23. Contactless Communication API Java Packages 1. javax.microedition.contactless (Mandatory) • target discovery and classes common to all targets 2. javax.microedition.contactless.ndef • communicate with tags (NDEF formatted data) 3. javax.microedition.contactless.rf • communicate with RFID (no NDEF formatted data) 4. • communication with external smart cards 5. javax.microedition.contactless.visual • reading and generating visual tags
  24. 24. API Relationships From JSR 257 Specification
  25. 25. The Connection Interfaces
  26. 26. General Flow
  27. 27. Contactless API JSR 257 Code Examples
  28. 28. Discovering and Listening for Supported Targets
  29. 29. Discovering and Listening for Supported Targets • Import, Implement Interface – public interface TargetListener – void targetDetected(TargetProperties[] properties) • Discover supported targets by calling: – DiscoveryManager.getSupportedTargetTypes(); • Add listeners for targets of interest: – dm.addTargetListener(listener, TargetType);
  30. 30. Discovering and Listening for Supported Targets public void registerTargetListeners(TargetListener targetListener) { // Discover supported types TargetType[] tp = DiscoveryManager.getSupportedTargetTypes(); try { // Register listener for each of the supported types for (int i=0; i<tp.length; i++) { if (tp[i].equals((TargetType.ISO14443_CARD))) { dm.addTargetListener( targetListener, TargetType.ISO14443_CARD); } else... : : } } } catch (Exception e) { // ... } }
  31. 31. Detecting and Connecting to Target • Method targetDetected is invoked by the platform, passing a TargetProperties • Get Target’s URL • Connect to Target • Exchange Data • Process incoming message according to message attributes • Close connection
  32. 32. Detecting and Connecting to Target public void targetDetected(TargetProperties[] prop) { try { // Select the first target TargetProperties target = prop[0]; // Get URL String url = target.getUrl(); // Open NDEFTagConnection to the target NDEFTagConnection conn = ( NDEFTagConnection); // Read Message NDEFMessage m = conn.readNDEF(); NDEFRecord[] r = m.getRecords(); // Process message / records, modify record for writing out : // Write message out, close connectin conn.writeNDEF(m); conn.close(); } catch (Exception e) { } }
  33. 33. Detecting and Connecting to Target (2) public void targetDetected(TargetProperties[] prop) { for (int i = 0; i < prop.length; i++) { // Get UID String uid = prop[i].getUid(); // Get Connection Classes Class[] classes = prop[i].getConnectionNames(); // Get Target Types TargetType[] types = prop[i].getTargetTypes(); // Connect to each Target String url = prop[i].getUrl(); try { // Open NDEFTagConnection to the target NDEFTagConnection conn = (NDEFTagConnection); : : } catch (IOException e) { // ... } }
  34. 34. Listening for NDEF-specific Targets (Read-only, no connection possible)
  35. 35. Listening for NDEF Targets (Read-only, no connection) • Import, Implement Interface – public interface NDEFRecordListener – void recordDetected(NDEFMessage ndefMessage) • Create Record Type, following naming rules • Add listener – dm.addNDEFRecordListener(listener, recordType)
  36. 36. Listening for NDEF Targets (Read-only, no connection) // Register NDEF_TAG target (smart poster) to discover try { NDEFRecordType spNrt = new NDEFRecordType( NDEFRecordType.NFC_FORUM_RTD, quot;urn:nfc:wkt:Spquot;); dm.addNDEFRecordListener(this, spNrt); } catch (IllegalStateException e) { : } catch (Exception e) { : } From the JSR 257 Specification: If the format is EMPTY or UNKNOWN the name must be null. The record type names of NFC_FORUM_RTD and EXTERNAL_RTD record types must follow the naming rules defined in the NFC Forum RTD specification. The record type name must only contain characters in the US_ASCII character set.
  37. 37. Processing NDEFMessages • Method recordDetected is invoked by the platform, passing a NDEFMessage • Get record and record type and other information from the message • Process the message according to message attributes
  38. 38. Processing NDEFMessages public void recordDetected(NDEFMessage ndefMessage) { // Get records and record types from NDEF Message NDEFRecordType[] rTypes = ndefMessage.getRecordTypes(); NDEFRecord[] records = ndefMessage.getRecords(); for (int i=0; i<records.length; i++) { // Handle data, based on type of NDEFMessage NDEFRecordType t = recordTypes[i]; NDEFRecord r = records[i]; byte[] id = r.getId(); long len = r.getPayloadLength(); byte[] p = r.getPayload(); // Process the record // ... } }
  39. 39. Get Card Emulation Activity Notifications Applications are notified, and don’t participate on the transaction per-se
  40. 40. Register for Emulation Activity Notifications • Import, Implement – public interface TransactionListener – void externalReaderDetected(byte slot) • Add listener – dm.addTransactionListener(this);
  41. 41. Register for Emulation Activity Notifications // Register Transaction Listener try { dm.addTransactionListener(this); } catch (IllegalStateException e) { ... } catch (Exception e) { ... }
  42. 42. Process Transaction Notifications public void externalReaderDetected(byte slot) { // Based on slot number above, using SATSA connect to // applet, query applet, update screen, etc. ... } SATSA and JavaCard is outside the scope of this presentation
  43. 43. Using PushRegistry to Launch NFC applications Automatically Automatic Application Launch is key to success (acceptance) of NFC apps
  44. 44. PushRegistry to Launch NFC application • Static vs. Dynamic Registrations – Static via JAD or Manifest files – MIDlet-Push-<n> – PushRegistry.registerConnection(...) – ConnectionURL, MIDletClassName, AllowedSender • Dynamic programmatically via PushRegistry API – listConnections(), registerConnection(), unregisterConnection() – Once activated MIDlet must register NFC target listeners to receive notifications • URL must follow proper naming, examples – Tag containing Smart Poster RTD is discovered: • ndef:rtd?name=urn:nfc:wkt:Sp – Tag containing an URL is discovered: • ndef:mime?name=text/x-uri – For SE transaction activity notifications: • secure-element:?aid=<aid_string>
  45. 45. Security Methods Protected by Permissions Love/Hate these things
  46. 46. Security Methods Protected by Permissions • DiscoveryManager.getInstance() • Write NDEFMessage message • Opening NDEFTagConnection • Opening PlainTagConnection • Opening ISO14443Connection • Opening VisualTagConnection
  47. 47. In Conclusion • Information Ubiquity, and Physical Interactions are two very important concepts – Short-codes, URLs, Visual tags, Radio tags • JSR 257 Contactless Communication API allows for new types of mobile applications, and new types of physical interactions based on NFC, RFID, Visual tags, and Smartcards • Get familiar with JavaCard programming, and SATSA, security elements and smartcards continue to be important
  48. 48. Links of Interest • Contactless API JSR 257 Specification • SATSA JSR 177 Specification • NFC Forum • Nokia 6131 NFC FAQ • Nokia 6131 NFC SDK • Mobile Java Articles at Enrique’s blog –
  49. 49. And it has begun… • Standards have been defined • Handsets will start to appear this year in the U.S. • Carriers are paying attention • Trials are happening • New Companies are being formed… • Is about convenience • People are taking notice…
  50. 50. Thank You C. Enrique Ortiz Email: Phone: 512-635-4225 Skype: c.enrique.ortiz Website: Weblog: MobileMonday Austin:
  51. 51. Backup Slides
  52. 52. Nokia 6131 NFC Java Handset Nokia 2nd (current) Generation NFC Handset, the 6131 NFC:
  53. 53. NFC Demo Video USING THE NOKIA 6131 NFC HANDSET