ebook img

Program the Internet of Things with Swift for iOS: Learn how to program apps for the Internet of Things PDF

509 Pages·2015·14.22 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Program the Internet of Things with Swift for iOS: Learn how to program apps for the Internet of Things

B BOOKS FOR PROFESSIONALS BY PROFESSIONALS® a k i r · T o Program The Internet of Things with Swift for iOS Related Titles rri e n t This book is a detailed tutorial that will teach you how to build apps using Apple’s native APIs e · for the Internet of Things, including the Apple Watch, HomeKit, and Apple Pay. Program The C Internet of Things with Swift for iOS is the second book by Ahmed Bakir (author of Beginning iOS h e Media App Development) and his team at devAtelier LLC, who have been involved in developing s l over 20 mobile projects. e r Written like a code review, this book presents a detailed “how” and “why” for each topic, P explaining Apple-specifi c design patterns as they come up and pulling lessons from other r o popular apps. To help you getting up and running quickly, each chapter is framed within a g working project, allowing you to use the sample code directly in your apps. r a m The Internet of Things is not limited to Apple devices alone, so this book also explains how to interface with popular third-party hardware devices, such as the Fitbit and Raspberry Pi, and T Program h generic interfaces, like Restful API’s and HTTPS. e With Program The Internet of Things with Swift for iOS as your guide, you’ll learn how to: I n The Internet of Things t • use HealthKit to log and retrieve fi tness information in your apps e • use Core Motion to access the iPhone’s built-in motion sensors r n • build an interactive watch app e • take advantage of the advanced sensors on the Apple Watch t Swift iOS • communicate with Bluetooth LE devices, with iBeacons, and with a Raspberry Pi o with for • use Keychain Services to encrypt data within your apps f • use Touch ID to add fi ngerprint-based authentication to your apps T • use Apple Pay to accept payments within your apps h i The Internet of Things is waiting — be a part of it! n g Learn how to program apps for the s w Internet of Things i t h — S w Ahmed Bakir i ft Manny de la Torriente US $49.99 f o ISBN 978-1-4842-1195-3 Shelve in: r Gheorghe Chesler 54999 Mobile Computing i O User level: S Intermediate 9781484211953 SOURCE CODE ONLINE www.apress.com www.it-ebooks.info Program The Internet of Things with Swift for iOS Ahmed Bakir Gheorghe Chesler Manny de la Torriente www.it-ebooks.info Program the Internet of Things with Swift for iOS Copyright © 2016 by Ahmed Bakir, Gheorghe Chesler, and Manny de la Torriente This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Law of the Publisher’s location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under the respective Copyright Law. ISBN-13 (pbk): 978-1-4842-1195-3 ISBN-13 (electronic): 978-1-4842-1194-6 Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director: Welmoed Spahr Lead Editor: Michelle Lowman Technical Reviewer: Charles Cruz Editorial Board: Steve Anglin, Louise Corrigan, Jonathan Gennick, Robert Hutchinson, Michelle Lowman, James Markham, Susan McDermott, Matthew Moodie, Jeffrey Pepper, Douglas Pundick, Ben Renow-Clarke, Gwenan Spearing Coordinating Editor: Mark Powers Copy Editor: Lori Jacobs Compositor: SPi Global Indexer: SPi Global Artist: SPi Global Cover Designer: Anna Ishchenko Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales. Any source code or other supplementary materials referenced by the author in this text is available to readers at www.apress.com/9781484211953. For detailed information about how to locate your book’s source code, go to www.apress.com/source-code/. Readers can also access source code at SpringerLink in the Supplementary Material section for each chapter. www.it-ebooks.info Contents at a Glance About the Authors ����������������������������������������������������������������������������������������������������xv About the Technical Reviewer �������������������������������������������������������������������������������xvii Introduction ������������������������������������������������������������������������������������������������������������xix ■ Chapter 1: Building Your First Internet of Things App �������������������������������������������1 ■ Chapter 2: Getting Started with Swift ������������������������������������������������������������������33 ■ Chapter 3: Accessing Health Information Using HealthKit ����������������������������������59 ■ Chapter 4: Using Core Motion to Save Motion Data ���������������������������������������������99 ■ Chapter 5: Integrating Third-Party Fitness Trackers and Data Using the Fitbit API ��������������������������������������������������������������������������������������������119 ■ Chapter 6: Building Your First watchOS App �����������������������������������������������������169 ■ Chapter 7: Building an Interactive watchOS App ����������������������������������������������201 ■ Chapter 8: Building a Stand-Alone watchOS App ����������������������������������������������225 ■ Chapter 9: Connecting to a Bluetooth LE Device �����������������������������������������������247 ■ Chapter 10: Building Location Awareness with iBeacons ���������������������������������295 ■ Chapter 11: Home Automation Using HomeKit ��������������������������������������������������343 iii www.it-ebooks.info iv Contents at a Glance ■ Chapter 12: Building an App That Interacts with a Raspberry Pi ����������������������397 ■ Chapter 13: Using Keychain Services to Secure Data ���������������������������������������427 ■ Chapter 14: Using Touch ID for Local Authentication ����������������������������������������443 ■ Chapter 15: Using Apple Pay to Accept Payments ���������������������������������������������457 Index ���������������������������������������������������������������������������������������������������������������������485 www.it-ebooks.info Contents About the Authors ����������������������������������������������������������������������������������������������������xv About the Technical Reviewer �������������������������������������������������������������������������������xvii Introduction ������������������������������������������������������������������������������������������������������������xix ■ Chapter 1: Building Your First Internet of Things App �������������������������������������������1 Ahmed Bakir ���������������������������������������������������������������������������������������������������������������������1 Setting up the Project �������������������������������������������������������������������������������������������������������2 Building the User Interface �����������������������������������������������������������������������������������������������7 Creating the Table View Controller ����������������������������������������������������������������������������������������������������������8 Creating the Map View Controller ���������������������������������������������������������������������������������������������������������18 Requesting Location Permission ������������������������������������������������������������������������������������22 Accessing the User’s Location ���������������������������������������������������������������������������������������26 Displaying the User’s Location ���������������������������������������������������������������������������������������28 Populating the Table View ���������������������������������������������������������������������������������������������������������������������28 Populating the Map�������������������������������������������������������������������������������������������������������������������������������30 Summary ������������������������������������������������������������������������������������������������������������������������32 v www.it-ebooks.info vi Contents ■ Chapter 2: Getting Started with Swift ������������������������������������������������������������������33 Ahmed Bakir �������������������������������������������������������������������������������������������������������������������33 Why Use Swift? ��������������������������������������������������������������������������������������������������������������34 Basic Swift Syntax ���������������������������������������������������������������������������������������������������������35 Calling Methods (Hello World) ���������������������������������������������������������������������������������������������������������������35 Defining Variables ���������������������������������������������������������������������������������������������������������������������������������36 Compound Data Types ��������������������������������������������������������������������������������������������������������������������������37 Conditional Logic ����������������������������������������������������������������������������������������������������������������������������������38 Enumerated Types ��������������������������������������������������������������������������������������������������������������������������������39 Loops ����������������������������������������������������������������������������������������������������������������������������������������������������40 Object-Oriented Programming in Swift ��������������������������������������������������������������������������41 Building a Class ������������������������������������������������������������������������������������������������������������������������������������41 Protocols �����������������������������������������������������������������������������������������������������������������������������������������������42 Method Signatures �������������������������������������������������������������������������������������������������������������������������������43 Accessing Properties and Methods ������������������������������������������������������������������������������������������������������44 Instantiating Objects �����������������������������������������������������������������������������������������������������������������������������45 Strings ��������������������������������������������������������������������������������������������������������������������������������������������������46 Formatting Strings ��������������������������������������������������������������������������������������������������������������������������������46 Collections ��������������������������������������������������������������������������������������������������������������������������������������������47 Casting ��������������������������������������������������������������������������������������������������������������������������������������������������50 Swift-Specific Language Features ���������������������������������������������������������������������������������50 Optionals �����������������������������������������������������������������������������������������������������������������������������������������������50 Try-Catch Blocks �����������������������������������������������������������������������������������������������������������������������������������52 Mixing Objective-C and Swift in Projects �����������������������������������������������������������������������54 Calling Swift from Objective-C �������������������������������������������������������������������������������������������������������������56 Summary ������������������������������������������������������������������������������������������������������������������������57 ■ Chapter 3: Accessing Health Information Using HealthKit ����������������������������������59 Ahmed Bakir �������������������������������������������������������������������������������������������������������������������59 Introduction ��������������������������������������������������������������������������������������������������������������������59 www.it-ebooks.info Contents vii Getting Started ���������������������������������������������������������������������������������������������������������������61 Setting Up the User Interface ���������������������������������������������������������������������������������������������������������������61 Setting Up the Project for HealthKit ������������������������������������������������������������������������������������������������������79 Prompting the User for HealthKit Permission �����������������������������������������������������������������83 Retrieving Data from HealthKit �������������������������������������������������������������������������������������������������������������88 Displaying Results in a Table View �������������������������������������������������������������������������������������������������������92 Fetching Background Updates��������������������������������������������������������������������������������������������������������������95 Summary ������������������������������������������������������������������������������������������������������������������������97 ■ Chapter 4: Using Core Motion to Save Motion Data ���������������������������������������������99 Ahmed Bakir �������������������������������������������������������������������������������������������������������������������99 Introduction ��������������������������������������������������������������������������������������������������������������������99 Using Core Motion to Access Motion Hardware �����������������������������������������������������������100 Requesting User Permission for Motion Activity ���������������������������������������������������������������������������������100 Querying for Step Count �����������������������������������������������������������������������������������������������103 Detecting Live Updates to Step Count ������������������������������������������������������������������������������������������������106 Detecting Activity Type������������������������������������������������������������������������������������������������������������������������108 Saving Data to HealthKit�����������������������������������������������������������������������������������������������110 Summary ����������������������������������������������������������������������������������������������������������������������117 ■ Chapter 5: Integrating Third-Party Fitness Trackers and Data Using the Fitbit API ��������������������������������������������������������������������������������������������119 Gheorghe Chesler ���������������������������������������������������������������������������������������������������������119 Introduction to the Fitbit API �����������������������������������������������������������������������������������������119 The RESTful API ����������������������������������������������������������������������������������������������������������������������������������120 Fitbit RESTful API Implementation Details ������������������������������������������������������������������������������������������122 Setting Up a Local Playground with Apache ���������������������������������������������������������������������������������������123 The OAuth1�0a Authentication Model �������������������������������������������������������������������������������������������������125 The Fitbit OAuth Implementation ��������������������������������������������������������������������������������������������������������126 Fitbit API Call Rate Limits��������������������������������������������������������������������������������������������������������������������127 Making async Calls �����������������������������������������������������������������������������������������������������������������������������128 Using callbacks as Parameters ����������������������������������������������������������������������������������������������������������128 www.it-ebooks.info viii Contents Setting up a Fitbit-compatible iOS Project �������������������������������������������������������������������130 The View Controller�����������������������������������������������������������������������������������������������������������������������������130 The Logger Library �����������������������������������������������������������������������������������������������������������������������������133 Setting up a Basic Set of Crypto Functions ����������������������������������������������������������������������������������������133 The API Client Library �������������������������������������������������������������������������������������������������������������������������137 The OAuth Library �������������������������������������������������������������������������������������������������������������������������������151 Testing What We Have so Far��������������������������������������������������������������������������������������������������������������157 Making requests to the Fitbit API ���������������������������������������������������������������������������������159 Retrieving the User Profile ������������������������������������������������������������������������������������������������������������������161 Retrieving and Setting Data in the API ������������������������������������������������������������������������������������������������163 OAuth versions: Working in both worlds ���������������������������������������������������������������������������������������������167 Summary ����������������������������������������������������������������������������������������������������������������������168 ■ Chapter 6: Building Your First watchOS App �����������������������������������������������������169 Ahmed Bakir �����������������������������������������������������������������������������������������������������������������169 Introduction ������������������������������������������������������������������������������������������������������������������169 watchOS Apps vs� iOS Apps �����������������������������������������������������������������������������������������170 Setting Up Your Project �������������������������������������������������������������������������������������������������172 Debugging your watchOS App ������������������������������������������������������������������������������������������������������������176 Adding a Table to your watchOS App ����������������������������������������������������������������������������176 Defining the Table �������������������������������������������������������������������������������������������������������������������������������181 Fetching Data from your iOS App��������������������������������������������������������������������������������������������������������187 Building a Detail Page with a Custom Layout���������������������������������������������������������������190 Presenting the Detail Interface Controller ������������������������������������������������������������������������������������������196 Summary ����������������������������������������������������������������������������������������������������������������������199 ■ Chapter 7: Building an Interactive watchOS App ����������������������������������������������201 Ahmed Bakir �����������������������������������������������������������������������������������������������������������������201 Introduction ������������������������������������������������������������������������������������������������������������������201 Using Force Touch to Present Menus ���������������������������������������������������������������������������202 Resetting the Location List �����������������������������������������������������������������������������������������������������������������206 Presenting a Detail View Controller ����������������������������������������������������������������������������������������������������207 Simulating Force Touch ����������������������������������������������������������������������������������������������������������������������209 www.it-ebooks.info Contents ix Adding Buttons to an Interface Controller ��������������������������������������������������������������������210 Passing Information Between Interface Controllers �����������������������������������������������������213 Using a Delegate to Pass Information on Dismissal ���������������������������������������������������������������������������215 How to Add Notes Using Text Input�������������������������������������������������������������������������������217 Sending Data Back to the Parent iOS App ������������������������������������������������������������������������������������������219 Summary ����������������������������������������������������������������������������������������������������������������������223 ■ Chapter 8: Building a Stand-Alone watchOS App ����������������������������������������������225 Ahmed Bakir �����������������������������������������������������������������������������������������������������������������225 Using Core Location to Request Current Location ��������������������������������������������������������226 Reverse Geocoding an Address ����������������������������������������������������������������������������������������������������������229 Using NSTimer to Create Reminders ����������������������������������������������������������������������������233 Making Network Calls from Your watchOS App ������������������������������������������������������������238 Handling a JSON Response ����������������������������������������������������������������������������������������������������������������243 Summary ����������������������������������������������������������������������������������������������������������������������245 ■ Chapter 9: Connecting to a Bluetooth LE Device �����������������������������������������������247 Manny de la Torriente ���������������������������������������������������������������������������������������������������247 Introduction to the Apple Bluetooth stack ��������������������������������������������������������������������247 Key Terms and Concepts ��������������������������������������������������������������������������������������������������������������������248 Core Bluetooth Objects �����������������������������������������������������������������������������������������������������������������������249 Building Your First Bluetooth LE Application ����������������������������������������������������������������250 Backlog ������������������������������������������������������������������������������������������������������������������������251 Base Application and Home Scene �����������������������������������������������������������������������������������������������������251 Central Role Scene �����������������������������������������������������������������������������������������������������������������������������252 Peripheral Role Scene ������������������������������������������������������������������������������������������������������������������������253 Editable Text ���������������������������������������������������������������������������������������������������������������������������������������255 Setting Up the Project ��������������������������������������������������������������������������������������������������256 Building the Interface ���������������������������������������������������������������������������������������������������256 Using a Central Manager ����������������������������������������������������������������������������������������������264 www.it-ebooks.info

Description:
Program the Internet of Things with Swift and iOS is a detailed tutorial that will teach you how to build apps using Apple's native APIs for the Internet of Things, including the Apple Watch, HomeKit, and Apple Pay. This is the second book by Ahmed Bakir (author of Beginning iOS Media App Developmen
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.