IOS7 App Development Essentials(二)iBeacon
IOS7 App Development Essentials(2)iBeacon
1. Beacon Introduction
CLBeacon
RSSI(Received Signal Strength Indication) [-93, -113]
accuracy The accuracy of the proximity value, measured in meters from the beacon
proximity The relative distance to the beacon.
2. Building Steps
General ——> Linked Frameworks and Libraries
I should add these features before I begin.
CoreLocation.framework
CoreBluetooth.framework
Here is the interface in project EasyUIApp.
#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> #import <CoreBluetooth/CoreBluetooth.h>@interface EABeaconsViewController : UIViewController <CLLocationManagerDelegate, CBPeripheralManagerDelegate, UITableViewDataSource, UITableViewDelegate]]> @property (nonatomic,weak) IBOutletUISwitch *advertisingSwitch; @property (nonatomic,weak) IBOutletUISwitch *monitorSwitch; @property (nonatomic,weak) IBOutletUISwitch *rangingSwitch; @property (nonatomic,weak) IBOutletUITableView *beaconTableView; @end
The import Implementation are as follow:
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
//enter region - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{ } //exit region - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region{ }
//ranging beacon - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
Tips
1. Update the iOS Version
Check your phone model
http://support.apple.com/kb/ht3939
My phone model is A1428 at the back cover, it is GSM model.
Download the beta version
https://developer.apple.com/devcenter/ios/index.action#betadownloads
Both for Xcode and iOS
ios_7.1_beta_5__iphone_5_model_a1428__11d5145e.dmg
xcode_5.1_beta5.dmg
Press ‘Option’ and click on the ‘Restore IPhone'
2. Downgrade the iOS 7.1 beta to iOS 7.0.x
First of all, prepare and download the latest 7.0.x version from developer center.
iPhone5,1_7.0.6_11B651_Restore.ipsw
Hold the “Home” button and the “Power” button for 10 seconds, then release the “Power” button. The iTunes will show you that the iPhone is under Recovery Mode.
Hold the ‘alt’ ‘option’ button on my MAC book. Click on the ‘Restore IPhone’ on the iTunes. Select my lovely ipsw file.
3. Detect the App Foreground and Background
+ (void)load { [[NSNotificationCenterdefaultCenter] addObserver:self selector:@selector(handleAppLaunched) name:UIApplicationDidFinishLaunchingNotificationobject:nil]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(handleAppResigningActive) name:UIApplicationWillResignActiveNotificationobject:nil]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(handleAppBecomingActive) name:UIApplicationDidBecomeActiveNotificationobject:nil]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(handleAppEnteringBackground) name:UIApplicationDidEnterBackgroundNotificationobject:nil]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(handleAppEnteringForeground) name:UIApplicationWillEnterForegroundNotificationobject:nil]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(handleAppClosing) name:UIApplicationWillTerminateNotificationobject:nil]; } + (void)handleAppLaunched{ NSLog(@"I am handleAppLaunched....."); } + (void)handleAppResigningActive{ NSLog(@"I am handleAppResigningActive....."); } + (void)handleAppBecomingActive{ NSLog(@"I am handleAppBecomingActive....."); } + (void)handleAppEnteringBackground{ NSLog(@"I am handleAppEnteringBackground....."); } + (void)handleAppEnteringForeground{ NSLog(@"I am handleAppEnteringForeground....."); } + (void)handleAppClosing{ NSLog(@"I am handleAppClosing....."); }
Or I can change all the method from + class method to - instance method, and call the method in my startMethod or -(void)viewDidLoad.
References:
http://code-evolution.blogspot.com/2011/02/evolved-code-2-splendid-approach-for.html