Learning iBeacon
()
About this ebook
Starting with an introduction to iBeacon, you will learn all about simple beacon detection. You will learn how to use Apple's CoreBluetooth, CoreLocation, and PassKit libraries, and how to broadcast different values through the power of transmission power.
You will learn how to allow your apps to detect beacons, determine their distance, and even turn your iPhone or iPad into a Bluetooth iBeacon by building a simple treasure-hunting app. We will also be discussing two of the most popular beacons (Estimote and ROXIMITY). Don't worry if you haven't got any beacons; this book includes a companion app that lets your Mac or MacBook act as a beacon to allow you to jump straight into learning this incredible technology.
By the end of this book, you will have learned how to build apps that interact with the world around them using Bluetooth beacons.
Related to Learning iBeacon
Related ebooks
Raspberry Pi 3 Projects for Java Programmers Rating: 0 out of 5 stars0 ratingsAndroid High Performance Programming Rating: 0 out of 5 stars0 ratingsMastering Android Wear Application Development Rating: 0 out of 5 stars0 ratingsAndroid Things Projects Rating: 0 out of 5 stars0 ratingsRaspberry Pi Android Projects Rating: 0 out of 5 stars0 ratingsAndroid Studio Cookbook Rating: 4 out of 5 stars4/5Raspberry Pi LED Blueprints Rating: 0 out of 5 stars0 ratingsAsynchronous Android Programming - Second Edition Rating: 0 out of 5 stars0 ratingsAndroid Application Programming with OpenCV Rating: 3 out of 5 stars3/5OpenCV for Secret Agents Rating: 0 out of 5 stars0 ratingsLearning Dart Rating: 0 out of 5 stars0 ratingsMastering BeagleBone Robotics Rating: 5 out of 5 stars5/5Getting Started with Raspberry Pi Zero Rating: 5 out of 5 stars5/5Computer Science on your Mobile Rating: 0 out of 5 stars0 ratingsLearning BeagleBone Rating: 0 out of 5 stars0 ratingsThe Android Game Developer's Handbook Rating: 0 out of 5 stars0 ratingsProgramming in GW-BASIC Rating: 4 out of 5 stars4/5Intel Galileo Networking Cookbook Rating: 0 out of 5 stars0 ratingsVCSELs for Cesium-Based Miniaturized Atomic Clocks Rating: 0 out of 5 stars0 ratingsRaspberry Pi Sensors Rating: 0 out of 5 stars0 ratingsAutomotive Internetworking Rating: 0 out of 5 stars0 ratingsMastering Android Game Development Rating: 0 out of 5 stars0 ratingsMicroPython A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsBluetooth Low Energy LE Complete Self-Assessment Guide Rating: 0 out of 5 stars0 ratingsSwift 2 Design Patterns Rating: 0 out of 5 stars0 ratingsUSB Complete: The Developer's Guide Rating: 4 out of 5 stars4/5Learning Raspbian Rating: 5 out of 5 stars5/5Raspberry Pi Computer Architecture Essentials Rating: 0 out of 5 stars0 ratingsWhat-is-robot?-book-on-robot-illustrated Rating: 0 out of 5 stars0 ratings
Programming For You
Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Java for Beginners: A Crash Course to Learn Java Programming in 1 Week Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5SQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Learn SQL in 24 Hours Rating: 5 out of 5 stars5/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Learn JavaScript in 24 Hours Rating: 3 out of 5 stars3/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Python Machine Learning By Example Rating: 4 out of 5 stars4/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5TensorFlow in 1 Day: Make your own Neural Network Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Photoshop For Beginners: Learn Adobe Photoshop cs5 Basics With Tutorials Rating: 0 out of 5 stars0 ratingsModern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsPython QuickStart Guide: The Simplified Beginner's Guide to Python Programming Using Hands-On Projects and Real-World Applications Rating: 0 out of 5 stars0 ratingsHTML in 30 Pages Rating: 5 out of 5 stars5/5Programming Arduino: Getting Started with Sketches Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Mastering Windows PowerShell Scripting Rating: 4 out of 5 stars4/5Python Essentials Rating: 5 out of 5 stars5/5
Reviews for Learning iBeacon
0 ratings0 reviews
Book preview
Learning iBeacon - Craig Gilchrist
Table of Contents
Learning iBeacon
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Welcome to iBeacon
Introducing iBeacon
Hey, 'sup
Understanding a range using RSSI
Compatible devices
Commercial applications of iBeacon
So many vendors, so little time
Estimote
Estimote beacons – pros
Estimote beacons – cons
ROXIMITY
ROXIMITY beacons – pros
ROXIMITY beacons – cons
RedBearLab
RedBear Beacon B1 – pros
RedBear Beacon B1 – cons
Other vendor options
The companion OS X application and website
Using the companion app
Hello world
Let's get started
Adding the Core Location framework
Adding a permission message
Configuring the CLLocationManagerDelegate method
Adding a CLLocationManager instance
Preparing UUID
Start monitoring
Line by line
Testing our code
Summary
2. Detecting Beacons – Showing an Advert
Uses of the UUID/major/minor broadcasting triplet
UUID – Universally Unique Identifier
Major
Minor
An example of a use case
Understanding Core Location
The CLBeaconRegion class
The CLLocationManager class
Creating a CLLocationManager class
Defining a CLLocationManager class line by line
locationManager:didEnterRegion
locationManager:didExitRegion
locationManager:didRangeBeacons:inRegion
locationManager:didChangeAuthorizationStatus
Understanding iBeacon permissions
Location permissions in iOS 8
Enabling the location after denying it
Building the tutorial app
Creating the app
Adding CLOfferViewController
Setting location permission settings
Adding some controls
Setting up our root view controller
Configuring our location manager
Wiring up CLLocationManagerDelegate
Showing the advert
Dismissing the offer
Summary
3. Broadcasting Advertisements – Sending Offers
Introducing the Core Bluetooth framework
Understanding centrals and peripherals
The Core Bluetooth framework, centrals, and peripherals
The CBCentral class
The CBPeripheral class
The CBPeripheralManager class
Obtaining broadcast values from CLBeaconRegion
Measured power (TXPower)
Let's get started
Adding frameworks
Setting up our controls
Creating our views
Wiring up the storyboard
Setting up our view controller
Adding our switch logic
Summary
4. Ranging Beacons – Hunting for Treasure
There be treasure nearby
Understanding distance
Our application
Getting started with building our app
Drawing our initial views
Adding frameworks and project settings
Adding images
Building the root view controller
Building the treasure view controller
Finally, wire it up
Building the hunter view controller
Hunter view controller states
Imports and public properties
Private properties
Loading the view
Entering and exiting the region
Changing the state
Tidying up
Being extra conscientious
Completing the code
Summary
5. Detecting Beacons in the Background – Location Dating
Real-life use cases
An example use case for retail loyalty
An example use case for airline assistance
Handing over responsibility
The CLBeaconRegion options
Passbook integration
Our tutorial app
The scenario
Viewing anatomy
The code
Creating the application
Creating the view
Configuring the app delegate
No ranging in the background
Entering and exiting regions
Clearing out badges
Ranging beacons
Implementing our view controller
Initializing the view
Receiving beacon distance
Choosing a gender
Adding a passbook pass
Testing your application
Testing the beacons
Testing the passbook pass
Summary
6. Leaving Regions – Don't Forget Your Stuff
Raspberry Pi
Ninja Blocks
Nest
Phillips Hue
Belkin WeMo
iBeacon and home automation
Beacon stickers
Our tutorial
Ranging beacons in the background
Tracking locations using background modes
Cheating the system
Building our app
Beginning the app with a database schema
Using a little helper
Master view controller implementation
Configuring the view controller
Fetching data from the Core Data framework
Configuring the table cell
Notifying the user
Inserting new objects
Ranging beacons
Detailed view controller implementation
Configuring the view
Getting and setting properties
Validating input
Finishing off UI
Adding NSLocationAlwaysUsageDescription
Enabling the background mode
Testing your app
Summary
7. Vendor SDKs – Buying and Configuring Beacons
Estimote motes and SDK
ROXIMITY implementation
Choosing the best platform for your requirements
AltBeacon – the open beacon specification
Using Estimote API 2.1
Security
Estimote SDK classes
ESTBeacon
ESTBeaconDelegate
ESTBeaconManager
ESTBeaconManagerDelegate
Let's get building
Adding EstimoteSDK
Adding API access
The helper class
Configuring the master view controller
Configuring our beacon manager
Configuring the detail view controller
Configuring the view
Connecting and disconnecting from beacons
Saving the changes
Creating the view
Testing your application
Summary
8. Advanced Tutorial – iBeacon Museum
Our exhibitions
The museum map
Our app structure
The permission view
The atrium view
The exhibit view
The supporting website
Tracking our user's journey
Our app design
Building the application
Creating the project
Initializing the views
Adding the CoreLocation functionality
Determining the first view
Configuring our permission view
Adding controls
Configuring the exhibit view
Adding controls to the exhibit view
Adding content methods
Ranging beacons
Configuring our atrium view
Adding atrium view controls
Time to test
Summary
9. iBeacon Security – Understanding the Risks
Beacon spoofing
Defending against beacon spoofing
Rotating UUIDs
Beacon hacking
Dispelling security myths
Overcoming users' fears with good UX
Summary
Index
Learning iBeacon
Learning iBeacon
Copyright © 2014 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: November 2014
Production reference: 1181114
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78439-712-8
www.packtpub.com
Credits
Author
Craig Gilchrist
Reviewers
Ankush Agrawal
Long Tran
Tian Zhang
Commissioning Editor
Kunal Parikh
Acquisition Editor
Reshma Raman
Content Development Editor
Manasi Pandire
Technical Editor
Mrunmayee Patil
Copy Editors
Janbal Dharmaraj
Sayanee Mukherjee
Project Coordinator
Leena Purkait
Proofreaders
Simran Bhogal
Maria Gould
Ameesha Green
Paul Hindle
Indexer
Monica Ajmera Mehta
Graphics
Abhinash Sahu
Production Coordinator
Nilesh R. Mohite
Cover Work
Nilesh R. Mohite
About the Author
Craig Gilchrist is the Digital Director at Eden Agency (http://createdineden.com/), a small but mighty digital agency that is at the forefront of proximity marketing. His team is one of the first to release commercial iBeacon-powered apps in the world and currently boast over 1.5 million app downloads in multiple fields and have a perfectly balanced technical and creative team.
Craig is based in North Yorkshire, England, and has been developing commercial software since graduating from the University of Teesside in 2004 with a BSc in Software Engineering and has been building apps for iOS since 2009.
Craig is an avid reader and is always at the forefront of commercial technological developments. Other than mobile app development and digital marketing, Craig also has a keen interest in developing rich media, including gaming, children's interactive media, and a very keen interest in Unity and virtual reality with Oculus Rift.
First, I'd like to thank my baby boy, Teddy, for being my raison d'être. I know you don't know it yet, but I never knew what life meant before you arrived. As you grow and blossom, I hope I'm as inspiring to you as you are to me, I'm already so proud of you son.
I would also like to thank my wife, Ria, for being a beacon of support throughout the writing of this book. Your new mummy voice is the stern voice I need to kick me into shape. You're beautiful, patient, and majestic. You're my fairy tale and my happily ever after.
Finally, I'd like to thank my team at Eden Agency (@createdineden) who I'm proud to call my friends, for being so creative, innovative, and generally awesome, and for keeping me on my toes. May we continue to build exquisite solutions for long.
About the Reviewers
Ankush Agrawal is a third year undergraduate student studying Computer Science and Business at the University of California, San Diego. He is a self-taught iOS developer who also has a passion for Bluetooth low energy. He has utilized BLE in various forms for award-winning hackathon projects and is eagerly working to discover its full potential. He has interned at The Boeing Company for the past two summers and is now seeking opportunities in Silicon Valley.
Long Tran is a student at the University of California, San Diego (class of 2016), where he studies Computer Science and Business. He loves challenging himself outside school by interning at Fortune 500 companies and exploring new technology trends. He has put iBeacon to good uses in his most recent iOS side projects. After graduation, Long plans to work at an established company with a start-up culture, where he hopes to learn a thing or two to start his own business.
Tian Zhang is a freelancer working in the field of iOS development, Bluetooth low energy, and home automation.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
The iBeacon technology is the most disruptive technology in the field of interaction design. Formally, iBeacon is simply a protocol defined by Apple and built on top of Bluetooth 4.0. Creatively, iBeacon is your passport to apps that truly interact with the world around them.
Imagine your shopping list becoming an interactive map of the supermarket, your phone turning the porch lights on as you drive down the street, or ordering your meal at your favorite table in your favorite restaurant without ever speaking with a waiter. All this and more is made possible with iBeacon.
Taking a practical and pragmatic approach, this book will introduce you to the concepts and applications of iBeacon technology for providing proximity-based solutions to iOS devices. We cover everything from prototyping simple scenarios to building a fully-functional interactive museum app, all using Xcode and Apple's Core Location and Core Bluetooth frameworks.
This book is designed to cover easy-to-follow examples to introduce the core features of iBeacon technology solutions, from discovering beacons and using your iOS device as a beacon, to some more powerful tutorials that closely match real-world examples.
Everything in this book can be applied to your own developments, but is done in a way which breaks down each element of the technology and the supporting iOS SDKs. Soon, you will be armed with all the tools and to produce interactive proximity-powered solutions with ease.
Finally, this book comes with an OS X app that lets you use your Mac as an iBeacon so that you can get to grips with the technology without having to buy any beacons.
What this book covers
Chapter 1, Welcome to iBeacon, introduces you to the technology and the incredible opportunities it offers us as developers. We'll cover the technological advancements that have made iBeacon possible and we'll discuss some of the options which you have to get your hands on for some real beacons. Finally, we'll create the age-old Hello World application and start detecting beacons easily.
Chapter 2, Detecting Beacons – Showing an Advert, introduces you to beacon detection in more detail. We'll show you how to differentiate between beacons using the values that they broadcast and we'll introduce the concept of regions and some of the CoreLocation classes used to represent regions and location. We will also cover the user permissions needed to monitor beacons before building a tutorial using our new-found knowledge to build an app that shows different offers as you