Developing NFC Apps

1,008 views

Published on

I presented this deck at the NFC Forum on March 21st 2014. The NFC Forum is the standards body that manages the NFC Standards and Specifications. This deck describes the 5 most common use cases of NFC and how developers can access them on BlackBerry 10

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,008
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Developing NFC Apps

  1. 1. 125 March 2014 NFC Forum, Developers Showcase March 21st, 2014 DEVELOPING NFC APPS for BLACKBERRY Larry McDonough, Principal Evangelist @LMCDUNNA
  2. 2. 225 March 2014 CONTENTS • Development on BlackBerry • BlackBerry NFC Support • 5 most common use cases • NFC Demos • Q & A
  3. 3. 325 March 2014 First, Some Stats… • A mobile device management leader with global enterprise customer base exceeding 80,000 • 30,000+ BES 10 commercial & test servers installed • 250,000+ BBM Channels globally since launch • 40+ Million newly registered Android/iOS BBM users in first 60 days • 665+ carriers and distribution partners offering BlackBerry products and services in more than 175 countries around the world
  4. 4. 425 March 2014 High Level Architecture BlackBerry Platform & Services (BlackBerry Enterprise Service 10, Push, Payments, BBM, Invocation Framework, Share Framework, Maps, …) Native C++ & Cascades UI BlackBerry 10 OS HTML5 & WebWorks Android Runtime Support for NFC in the Android Runtime is coming in 10.3
  5. 5. 525 March 2014 Strong & Growing Ecosystem C/C++ Native SDK Wide choice of programming languages Java Android Runtime C++/Qt Cascades Broad range of app dev libraries and personal appsManaging corporate... HTML5 BlackBerry WebWorks™
  6. 6. 625 March 2014 Top Partners
  7. 7. 725 March 2014 BlackBerry World • In over 170 Markets • Free to register • Free to submit upgrade • 70/30 revenue share • Credit card, PayPal, Carrier Billing • 5+ Billion apps downloaded
  8. 8. 825 March 2014 http://developer.blackberry.com • Tools, samples, documentation, Forums… • HTML5 / WebWorks • C, C++, Native SDK • Cascades UI Framework • Android • Frameworks Partners: • Appcelerator, Cordova, dojo, jQuery Mobile, Marmalade, Qt, Sencha Touch, Unity
  9. 9. 925 March 2014 BlackBerry NFC Support
  10. 10. 1025 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards • APIs & Built-in Apps Support
  11. 11. 1125 March 2014 About NFC Tags Memory Cards that store data Have a contactless interface Read by a device termed “the Reader” App takes action in response to the message
  12. 12. 1225 March 2014 About NFC Tags 4 standard NFC Forum tag types Message format is standard (NDEF) Standard message types include Smart Poster, Text, URI Custom types (“external”) allowed Various tag capacities
  13. 13. 1325 March 2014 About Tag Circuitry
  14. 14. 1425 March 2014 Field Detection and Power
  15. 15. 1525 March 2014 Demo 1 – NFC Business Card • No coding or client app necessary • Uses standard URL message format • Leverages browser to take user to my eBusiness Card site • Backend server code helps me track who I met, who downloaded my vcard, etc. Front Back w/QR Code For iOS users w/NFC Tag For real smartphone users
  16. 16. 1625 March 2014 After scanning tag, developers can: • Add my vcard to their address book which includes usual stuff plus: • LinkedIn URL, • Twitter handle, • Slide Share link, • BlackBerry Dev Blog link, • My Blogger link, etc. • Request a device, Register as a vendor, and visit BlackBerry dev site Demo 1 – NFC Business Card
  17. 17. 1725 March 2014 Demo 2 – NFC Fun Run Have a nice cup of tea Stop timer Run! Start timer
  18. 18. 1825 March 2014 Register with Invocation Framework <invoke-target id="com.example.NfcRaceTime"> <type>APPLICATION</type> <filter> <action>bb.action.OPEN</action> <mime-type>application/vnd.rim.nfc.ndef</mime-type> <property var=“uris” value=“ndef://4/my.rim.com/myrecordtype”/> </filter> </invoke-target>
  19. 19. 1925 March 2014 Client action C++ and Qt bb::system::InvokeManager* _invokeManager = new bb::system::InvokeManager(); void App::receivedInvokeRequest( const bb::system::InvokeRequest& request) { QByteArray data = request.data(); QtMobilitySubset::QNdefMessage ndefMessage = QtMobilitySubset::QNdefMessage::fromByteArray(data); handleNdefRequest(ndefMessage); }
  20. 20. 2025 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards • APIs & Built-in Apps Support
  21. 21. 2125 March 2014 Transfer data from one device to another • Share information just by touching Any kind of data • Photos, music files, address book contacts are typical examples For larger items let NFC negotiate a Bluetooth connection • No need for the usual BT pairing process • Simple! What is Peer to Peer NFC?
  22. 22. 2225 March 2014 What is Peer to Peer NFC? Bask in the admiration! NFC ( and maybe Bluetooth) Magic Touch devices! Select object to share
  23. 23. 2325 March 2014 Share from QML InvokeActionItem { id: sharedNdefData query { mimeType: "application/vnd.rim.nfc.ndef" invokeActionId: "bb.action.SHARE" } } onShowing: { // make NDEF message as byte array in C++ sharedNdefData.data = _ndefFactory.getNdefVcardMessage(sendVcard.ndefFirstName, sendVcard.ndefLastName, sendVcard.ndefAddress, sendVcard.ndefEmail, sendVcard.ndefMobile); }
  24. 24. 2425 March 2014 Share from C++ NfcShareManager *_nfcShareManager = new NfcShareManager(); ... void NfcSharing::fileShareContentChanged(QString paths) { NfcShareFilesContent request; QList<QUrl> urls; ... // Construct a list of local file URLs from file paths ... request.setFileUrls(urls); // share mode File means Bluetooth connection handover _nfcShareManager->setShareMode(bb::system::NfcShareMode::File); NfcShareSetContentError::Type rc = _nfcShareManager->setShareContent(request); }
  25. 25. 2525 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards
  26. 26. 2625 March 2014 What are we Emulating? Almaden Valley Health Club Larry McDonough Member Since: 2/11/2005 Membership & Loyalty Cards Credit Cards ID Cards We are emulating Smart Cards
  27. 27. 2725 March 2014 What are Smart cards? A small computer Processor, OS, file system Can run special apps called ‘applets’ Secure Embedded in a plastic card Contacts and/or contactless interface Almaden Valley Health Club Larry McDonough Member Since: 2/11/2005
  28. 28. 2825 March 2014 Smart Cards & Readers Almaden Valley Health Club Larry McDonough Member Since: 2/11/2005 Power Communications Smart Card Reader With contact-based slot and contactless interface (NFC)
  29. 29. 2925 March 2014 General Architecture
  30. 30. 3025 March 2014 BlackBerry Architecture
  31. 31. 3125 March 2014 Card Emulation In Use Admire your purchase Optionally be notified of transaction Reader communicates directly with SE Touch handset to a reader
  32. 32. 3225 March 2014 Interact with Secure Element ... rc = nfc_se_session_open_logical_channel(hSESession, the_aid, sizeof(the_aid), fcpResponseType, &seChannel, &openResponseLen); ... rc = nfc_se_channel_transmit_apdu( seChannel, the_apdu, apdu_size, &exchangeResponseLen ); ... rc = nfc_se_channel_get_transmit_data(seChannel, result, &nReceiveAPDUBufferSize)); ...
  33. 33. 3325 March 2014 Transaction Notification ... <invoke-target id="com.example.NfcTool.tl"> <entry-point>1</entry-point> <type>APPLICATION</type> <filter> <action>bb.action.NOTIFY</action> <mime-type>application/vnd.bb.nfc_transaction</mime-type> <property var="uris“ value="aid://SIM/6e.66.63.74.65.73.74.30.31/"/> </filter> </invoke-target> ...
  34. 34. 3425 March 2014 MNOs Financial Institutions Retail Transport Secure Provisioning (e.g. TSM) Secure Transactions (e.g. EMV) Secure Payments (NFC) NFC Payments EcoSystem
  35. 35. 3525 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards • APIs & Built-in Apps Support
  36. 36. 3625 March 2014 What is Virtual Target Emulation? Smile at new allocation of loyalty points! Application completes transaction Reader communicates with BlackBerry 10 App Touch handset to a reader
  37. 37. 3725 March 2014 Fool that Reader! • Virtual target emulation makes your smartphone seem just like an NFC tag or card • The reader cannot tell them apart • Of course you cannot set the UID of the emulated target – that is not under your control
  38. 38. 3825 March 2014 Emulating an NDEF Tag ... nfc_ndef_record_t *ndefRecord = makeCustomRecord(QString("my.rim.com"), QString("myrecordtype"), tagData); rc = nfc_create_ndef_message(&_emulateNdefMessage); rc = nfc_add_ndef_record(_emulateNdefMessage, ndefRecord); rc = nfc_start_ndef_tag_emulation(_emulateNdefMessage); ...
  39. 39. 3925 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards • APIs & Built-in Apps Support
  40. 40. 4025 March 2014 What is it? Read data from physical (plastic) contactless cards • Right into your application Reduce manual data entry • e.g., credit card number Make card usage tracking more convenient • e.g., view card use history or balance on BlackBerry 10 smart phone
  41. 41. 4125 March 2014 What can you do with it? 1. Card details required 2. User presents contactless card 3. App reads details from card and completes form
  42. 42. 4225 March 2014 How do you do this? Exactly *how* depends on the card type • A credit card is not the same as an ID card • Transit cards are not all the same Exchange APDUs with the card • Response APDUs will contain the data you want • You have to send the right command APDUs though Touch card to BlackBerry to fill in form • Details for credit cards are defined in the EMV specifications
  43. 43. 4325 March 2014 How do you do this? User delighted with result of your thoughtful feature APDU ‘conversation’ with card yields data BlackBerry 10 App acts as reader Touch handset to a card
  44. 44. 4425 March 2014 Code Example ... rc = nfc_register_tag_readerwriter(TAG_TYPE_ISO_14443_4); ... nfc_tag_transceive(target, TAG_TYPE_ISO_14443_4, the_apdu, apdu_size, response, MAX_RESPONSE_SIZE, &rlength); ...
  45. 45. 4525 March 2014 Amsterdam Travel Pass Review your last two transactions APDU ‘conversation’ with Transit Card BlackBerry 10 App acts as reader Touch handset to Transit Card
  46. 46. 4625 March 2014 NFC APIs APIs R/W API NDEF Write/Read (Invocation Framework) ISO14-4 ISO14-3 ISO14-3 Raw ISO15-3 P2P API NDEF send/receive (Invocation Framework) ISO18 VCE API ISO14-4 UICC CE API SIM Access Transaction NTF
  47. 47. 4725 March 2014 NFC Apps Support (Built in) SmartTags Contacts Browser Gallery (Pictures, Video, Music Player) DocToGo File Manager Calendar Adobe Reader Email BBM AppWorld Call Apps supporting NFC (implicit, explicit) out-of-the-box:
  48. 48. 4825 March 2014 CONTENTS • What is NFC? (skipped for this audience!) • NFC Tags • Peer to Peer • Card Emulation • Virtual Target (Host Card) Emulation • Reading Contactless Cards • APIs & Built-in Apps Support
  49. 49. 4925 March 2014 NFC Developer Resources • http://tinyurl.com/cqfzf7yArticles • https://github.com/blackberry/Cascades-Community-SamplesCode • Martin Woolley @mdwrim • John Murray @jcmrim • Rob P Williams @robbieDubya Contacts
  50. 50. 5025 March 2014 Questions & Answers • http://tinyurl.com/cqfzf7yArticles • https://github.com/blackberry/Cascades-Community-SamplesCode • Martin Woolley @mdwrim • John Murray @jcmrim • Rob P Williams @robbieDubya Contacts Larry McDonough @lmcdunna
  51. 51. 5125 March 2014 Thank You
  52. 52. 5225 March 2014 Native C/C++/Qt Application Developers High Level Architecture Web Application Developers Community and Content Developers UI Framework Platform, device and cloud APIs BlackBerry 10 OS Memory Mgmt Security Graphics BlackBerry Cascades HTML5, CSS, JavaScript Sensors …. Gaming Platforms Android Runtime Web Frameworks Multi- threading

×