An iBeacon Manager library was created to simplify your interactions with iBeacons.

Overview

JMCiBeaconManager

iBeacon is a name of technology that is enabling new location awareness possibilities for apps. "Leveraging Bluetooth Low Energy (BLE), a device with iBeacon technology can be used to establish a region around an object. This allows an iOS device to determine when it has entered or left the region, along with an estimation of proximity to a beacon."
🔶

An iBeacon Manager library was created to simplify your interactions with iBeacons. In essence it serves several roles:

  1. Checking the iBeacon permission matrix
  2. Registering & listening for nearby beacons
  3. Detecting nearby beacons
  4. Visualizing nearby beacons in a radar look like custom made user interface.

Version License Platform

alt tag alt tag

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Installation

CocoaPods

JMCiBeaconManager is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "JMCiBeaconManager"

Manually

  1. Download and drop /JMCiBeaconManagerfolder in your project.
  2. Congratulations!

Usage

import JMCiBeaconManager

let beaconManager = JMCBeaconManager()

let kontaktIOBeacon = iBeacon(minor: nil, major: nil, proximityId: "f7826da6-4fa2-4e98-8024-bc5b71e0893e")
let estimoteBeacon = iBeacon(minor: nil, major: nil, proximityId: "B9407F30-F5F8-466E-AFF9-25556B57FE6D")

beaconManager.registerBeacons([kontaktIOBeacon, estimoteBeacon])

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(beaconsRanged(_:)), name: iBeaconNotifications.BeaconProximity.rawValue, object: nil)

beaconManager.startMonitoring({ 
            
    }) { (messages) in
        print("Error Messages \(messages)")
}

/**Called when the beacons are ranged*/
func beaconsRanged(notification:NSNotification){
    if let visibleIbeacons = notification.object as? [iBeacon]{
        for beacon in visibleIbeacons{
            /// Do something with the iBeacon
        }
    }
}  

Add the key NSLocationAlwaysUsageDescription to your project info.plist file.

alt tag

Authors

Janusz Chudzynski, [email protected]

Felipe N. Brito, [email protected]

Contribute

We would love for you to contribute to JMCiBeaconManager, check the LICENSE file for more info.

Requirements

  • iOS 8.0+
  • Xcode 7.3

License

JMCiBeaconManager is available under the BSD license. See the LICENSE file for more info.

You might also like...
An extensible iOS and OS X animation library, useful for physics-based interactions.
An extensible iOS and OS X animation library, useful for physics-based interactions.

Pop is an extensible animation engine for iOS, tvOS, and OS X. In addition to basic static animations, it supports spring and decay dynamic animations

A library of custom iOS View Controller Animations and Interactions.
A library of custom iOS View Controller Animations and Interactions.

RZTransitions is a library to help make iOS7 custom View Controller transitions slick and simple. Installation CocoaPods (Recommended) Add the followi

LibAuthentication will simplify your code when if you want to use FaceID/TouchID in your tweaks.

LibAuthentication will simplify your code when if you want to use FaceID/TouchID in your tweaks.

A SwiftUI system components and interactions demo app
A SwiftUI system components and interactions demo app

SwiftUI Kit A SwiftUI system components and interactions demo app based on iOS 14, macOS Big Sur, watchOS 7, and tvOS 14. Use the SwiftUI Kit app to s

A SwiftUI card view, made great for setup interactions.
A SwiftUI card view, made great for setup interactions.

SlideOverCard A SwiftUI card design, similar to the one used by Apple in HomeKit, AirPods, Apple Card and AirTag setup, NFC scanning, Wi-Fi password s

Elegant Web3js functionality in Swift. Native ABI parsing and smart contract interactions on Ethereum network.
Elegant Web3js functionality in Swift. Native ABI parsing and smart contract interactions on Ethereum network.

You can ask for help in our Discord Channel web3swift Swift implementation of web3.js functionality ⚡ Interaction with remote node via JSON RPC 💭 Sma

Simplify your iOS/Mac analytics

ARAnalytics v4 ARAnalytics is to iOS what Analytical is to ruby, or Analytics.js is to javascript. ARAnalytics is an analytics abstraction library off

TLIndexPathTools is a small set of classes that can greatly simplify your table and collection views.

TLIndexPathTools TLIndexPathTools is a small set of classes that can greatly simplify your table and collection views. Here are some of the awesome th

A library to simplify iOS animations in Swift.

Updated for Swift 4.2 Requires Xcode 10 and Swift 4.2. Installation Drop in the Spring folder to your Xcode project (make sure to enable "Copy items i

CompositionalLayoutDSL, library to simplify the creation of UICollectionViewCompositionalLayout. It wraps the UIKit API and makes the code shorter and easier to read.
CompositionalLayoutDSL, library to simplify the creation of UICollectionViewCompositionalLayout. It wraps the UIKit API and makes the code shorter and easier to read.

CompositionalLayoutDSL CompositionalLayoutDSL is a Swift library. It makes easier to create compositional layout for collection view. Requirements Doc

🥷 High-performance polyline simplification library - port of simplify.js
🥷 High-performance polyline simplification library - port of simplify.js

High-performance polyline simplification library SwiftSimplify is a tiny high-performance Swift polyline simplification library ported from Javascript

A simple order manager, created in order to try Realm database
A simple order manager, created in order to try Realm database

Overview A simple order manager, created in order to get acquainted with the features and limitations of the local Realm database. The project is writ

Promises simplify asynchronous programming, freeing you up to focus on the more important things
Promises simplify asynchronous programming, freeing you up to focus on the more important things

Promises simplify asynchronous programming, freeing you up to focus on the more important things. They are easy to learn, easy to master and result in

Mockingbird was designed to simplify software testing, by easily mocking any system using HTTP/HTTPS
Mockingbird was designed to simplify software testing, by easily mocking any system using HTTP/HTTPS

Mockingbird Mockingbird was designed to simplify software testing, by easily mocking any system using HTTP/HTTPS, allowing a team to test and develop

An UITextField subclass to simplify country code's picking. Swift 5.0
An UITextField subclass to simplify country code's picking. Swift 5.0

Preview Installation NKVPhonePicker is available through CocoaPods. To install it, simply add the following line to your Podfile: pod 'NKVPhonePicker'

A set of UIKit helpers that simplify the usage of UIKit view's and controller's in SwiftUI.

A set of UIKit helpers that simplify the usage of UIKit view's and controller's in SwiftUI. Many of these helpers are useful even in a pure UIKit project.

A collection of operators and utilities that simplify iOS layout code.

Anchorage A lightweight collection of intuitive operators and utilities that simplify Auto Layout code. Anchorage is built directly on top of the NSLa

KolodaView is a class designed to simplify the implementation of Tinder like cards on iOS.
KolodaView is a class designed to simplify the implementation of Tinder like cards on iOS.

KolodaView Check this article on our blog. Purpose KolodaView is a class designed to simplify the implementation of Tinder like cards on iOS. It adds

LineSimplifier - Polyline simplification. Port of simplify.js

LineSimplifier LineSimplifier is a small Swift Package to simplify lines. A line

Comments
  • Objective-c

    Objective-c

    Which is the name of your previous library in objective-c? Is there any graphical presentation in objective-c like the radar you have in swift?

    Any way.... thank you ...waiting an answer!

    George Gerardis

    opened by geogerar 1
  • JMCBeaconManagerDelegate

    JMCBeaconManagerDelegate

    Instead of this:

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(beaconsRanged(_:)), name: iBeaconNotifications.BeaconProximity.rawValue, object: nil)
    

    We can have a delegate, so we can do this:

    class MyClass {
    
    func myFunc() {
        let beaconManager = JMCBeaconManager()
        beaconManager.delegate = self
    }
    extension MyClass: JMCBeaconManagerDelegate {
    
        /**Called when the beacons are ranged*/
        func beaconsRanged(notification:NSNotification) {
            if let visibleIbeacons = notification.object as? [iBeacon]{
                for beacon in visibleIbeacons{
                    /// Do something with the iBeacon
                }
            }
        }  
    }
    

    What do you guys think? If approved, I can make the changes 😄

    opened by lfarah 1
  • Manual Installation

    Manual Installation

    CocoaPods and Carthage are awesome tools and make our life really easier, but there are some devs who still don't know how to use them.

    It would be cool to add the Manual installation guide in your README.md. You can take a look at my iOS Readme Template to see how you can do it.

    opened by lfarah 0
Releases(1.0.7)
Owner
Izotx
Mobile, web, and wearable developer, author of two books about mobile programming. Recipient of Apple scholarship. Open to project opportunities.
Izotx
Replicates detecting and broadcasting iBeacons in the background

Vicinity Vicinity replicates iBeacons and supports broadcasting and detecting low-energy bluetooth devices in the background. It is built with CoreBlu

Instrument 380 Aug 10, 2022
Proxitee iOS SDK to enable iOS apps to use the Proxitee platform with iBeacon and GeoFencing

Proxitee iOS SDK Introduction The Proxitee iOS SDK allows you to enable your iOS devices to use the Proxitee platform with iBeacons and GeoFences, for

Proxitee 16 Jun 4, 2022
iBeacons + CoreBluetooth

OWUProximityManager Detect and connect to nearby devices with iBeacons and CoreBluetooth. Sample Project To simulate functionality, select Client on o

David Ohayon 363 Dec 24, 2022
Replicates detecting and broadcasting iBeacons in the background

Vicinity Vicinity replicates iBeacons and supports broadcasting and detecting low-energy bluetooth devices in the background. It is built with CoreBlu

Instrument 380 Aug 10, 2022
Proxitee iOS SDK to enable iOS apps to use the Proxitee platform with iBeacon and GeoFencing

Proxitee iOS SDK Introduction The Proxitee iOS SDK allows you to enable your iOS devices to use the Proxitee platform with iBeacons and GeoFences, for

Proxitee 16 Jun 4, 2022
Wi-attack: Cross-technology Impersonation Attack against iBeacon Services

Wi-attack: Cross-technology Impersonation Attack against iBeacon Services

Naxin 3 Nov 30, 2021
Detect-a-Beacon - An educational application using Apple iBeacon technology to detect beacons

Detect-a-Beacon An educational application using Apple iBeacon technology to det

NIKOLAY NIKITIN 1 Aug 9, 2022
iOS iBeacon Project in Swift Language

iBeacon iOS iBeacon Project in Swift Language A simple project to create an iBeacon broadcaster for iOS8 devices. The app takes either a UUID string,

PassKit 221 Jun 29, 2022
Elegant library to manage the interactions between view and model in Swift

An assistant to manage the interactions between view and model ModelAssistant is a mediator between the view and model. This framework is tailored to

Seyed Samad Gholamzadeh 28 Jan 29, 2022
JustPeek is an iOS Library that adds support for Force Touch-like Peek and Pop interactions on devices that do not natively support this kind of interaction.

JustPeek Warning: This library is not supported anymore by Just Eat. JustPeek is an iOS Library that adds support for Force Touch-like Peek and Pop in

Just Eat 68 Apr 4, 2021