Skip to content
(WIP) - Finding there are some boiler plate setup stuff for working with Estimote's iOS SDK. To make life easier, created some ways to avoid all the boiler plate setup. Contributors needed!
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ESTCompanion
Example
.gitignore
LICENSE
README.md
example_ss.png

README.md

ESTCompanion

Unmaintained

This repo is now unmaintained. When I have time, I may bring this back to life by replacing it with a SWIFT solution I wrote instead. whenever I have time to make that code public-ready, I'll update. Til then - consider this code very out-dated and unmaintained. Thanks for your interest!

(WIP) - Finding there are some boiler plate setup stuff for working with Estimote's iOS SDK. To make life easier, created some ways to avoid all the boiler plate setup.

** NOTE You will find a version of the EstimoteSDK in both the Companion and the Example folders. It will eventually be moved to the parent folder. The main thing to remember is that this is only for development purposes. Do not depend on this having the latest/greatest version of their SDK. You should do that on your own, which you can find here.**

## Requirements [Estimote's iOS SDK](https://github.com/Estimote/iOS-SDK) - see their README for installation instructions

Note that you should be using the latest/greatest of this SDK as ESTCompanion should be assumed to run with it as well.

## Installation Pretty simple stuff:
  • Make sure to install the latest Estimote iOS SDK
  • Copy the ESTCompanion folder into your project - and its ready for use.
## Overview

Checkout the Example for a very simple usage example

  • No need for the ESTBeaconRegion property ( see details in sibling points below )
  • No need to create an instance of the ESTBeaconRegion unless you want to
  • Optionally Start Ranging Immediately as you init the ESTBeaconManager
  • Optionally set ourselves as the delegate, and also turn on some common properties during init ('NS_OPTIONS') while we are at it, etc. etc.
  • Primary happiness for the lazy people like me - reduces this down to an init, ESTBeaconManagerDelegate method, and then cleanup on destuct.

As to not turn this into a Billy Mays infomercial here i'll admit the downside is that there isnt much else yet either. Its a work in progress though and should grow pretty quickly from here on out.

## Categories There also exists a `Misc` folder within `Categories`. This just contains some UIColor/Tinting manipulation stuff. Feel free to mess around with it. Some of it came from another project of mine, a few pieces came also from other repos. ### ESTBeacon+Companion Adds the ability to set the identifier and color for a beacon. WIP. Will save to Defaults when it is all said and done. ### ESTBeaconManager+UUIDGroup This is a small category to just make setting up the ESTBeaconManager easier for when we want to start ranging for estimote beacons.

There are (quite a few) initialization points available for this guy too by means of NS_OPTIONS/NS_ENUM to keep things simple and yet expressive.

### ESTBeaconManager+AutoRegioning Category to allow setting up AutoRegioning that much easier. This category also imports `ESTBeaconManager+UUIDGroup` (above) by default to keep the category chain going for now. Will work this out to be more clean later. Just hacking it together right now...

Checkout the Example for a very simple usage example

### ESTCompanion+BeaconStore This category is simply a way to persist iBeacons found/altered during ranging to the `NSUserDefaults`. The catch 22 to this is that the [Estimote's iOS SDK](https://github.com/Estimote/iOS-SDK) already allows you to save that information to the actual iBeacons - which is not what this is attempting to solve/duplicate ( unless you actually want to that is... ). This is just a easy way to store more information about them.

This is just a generic first attempt at it - will refactor/expand on this as the use cases arise. The hope is to allow support to multiple stores ( NSUserDefaults, Core Data, remote, etc. ).

This Category is influenced by the iBeacon Article on Ray Wenderlich's site.

There are a few other categories that are available to be explored in the Misc. folder if interested.

## Classes ### ESTCompanion Simple Object at this point. There are bigger plans for it, but for now, has a easy to use way of obtaining the string value from a CLProximity =P

NSString *proximity = [ESTCompanion sharedInstance] stringFromProximity:beacon.proximity];

### ESTCompanionConstants Currently holds just a few constants for dealing with User Defaults, logging, and creating string constants.. ## Additional Information/Resources Here is a small compilation of good resources, information and repositories relating to iBeacons. ## Example Code The included example is nothing special. It is just a basic example showing how to use some of the features available. Currently, it only shows how ot use the `ESTBeaconManager+AutoRegioning` and `ESTBeacon+Companion` categories.

Here is a screenshot for the curious:

ScreenShot 1

## @todo's * Update the DetailViewController in the Example to reduce the number of imports needed. * This may also require some refactoring of the other imports and the order of those imports. * Establish a good, solid Object Structure and reduce the noise that kind of feels is starting to take shape already. This will be item #1 when main principals and ideas are realized and established. * Simplify checking for updates * May actually add an option to check for an update every `x` days, or on `z` day of the week. * ~~Update Example to show how to use the `BeaconStore` category~~ * Ability to define 3 beacons to work as triangulation points * Simplify managing the UUID/Minor/Major values * ~~Ability to change the "color" of a beacon ( 2 of mine were always showing up as teal - I'll update with my fix for this)~~ * ~~Replace the GroupUUIDDelegate with a block (or just add it as an option)~~ * Add block support to some other things * Add background routines for doing some work ( like updates and whatever ) with a single line. * etc. etc. that's enough as to not overwhelm myself for now. ## License See `LICENSE` included with this repo. Long story short - I'm a dev, you're a dev - we all make great stuff that works, but we also make shitty stuff that breaks...
You can’t perform that action at this time.