IPhone and Location(1)Documents User Location
1. Introduce Location and Map
Getting the User's Location
Region Monitoring
Geocoding Location Data
iBeacons Enhance the User's Experience of a Location
Heading Information Indicates the User's Current Orientation - magnetometer
1.1 Getting the User's Location
Core Location Framework
a. The significant-change location service provides a low-power way to get the current location and be notified.
b. The standard location service
c. Region monitoring, monitor boundary crossings for defined geographical regions and Bluetooth low energy beacon regions.
Linking to a Library or Framework
Select the Project-----> Select Targets -----> Build Phases-----> Link Binary With Libraries----> Click on +
#import <CoreLocation/CoreLocation.h>
Requiring the Presence of Location Services in Order to Run
Info.plist
UIRequiredDeviceCapabilities= array of strings
a. location-services string if you require location services in general.
b. gps string if your app requires the accuracy offered only by GPS hardware.
Getting the User's Current Location
The core location framework uses information obtained from the built-in cellular, Wi-Fi or GPS hardware to triangulate a location.
standard location service
significant-change location service
Gathering location data is power-intensive operation.
Power up the onboard radios and querying the available cell towers, Wi-Fi hotspots, or GPS satellites. Leaving the standard location service running for extended periods can drain the device's battery.
The significant-change location service reduces battery drain by monitoring only cell tower changes.
Determining Whether Location Services Are Available
a. The user can disable location Services in the App Settings
b. The user can deny location services for a specific app.
c. The device might be in Airplane mode and unable to power up the necessary hardware.
We call CLLocationManager.locationServicesEnabled to check that.
Starting the Standard Location Service
Create an instance of CLLocationManager, configure desiredAccuracy and distanceFilter.
Assign a delegate to the object and call the startUpdatingLocation.
To stop the delivery of location updates, call stopUpdatingLocation.
-(void)startStandardUpdates{
if(nil == locationManager)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 500; //meters
[locationManager startUpdatingLocation];
}
Starting the Significant-Change Location Service
create an instance of the CLLocationManager, assign a delegate to it, call the startMonitoringSignificantLocationChanges
-(void) startSignificantChangeUpdates{
if(nil == locationManager){
locationManager = [[CLLocationManager alloc]init];
}
locationManager.delegate = self;
[locationManager startMonitoringSignificantLocationChanges];
}
stopMonitoringSignificantLocationChanges to stop the service.
If we leave this service running and our app is suspended or terminated, the service automatically wakes up our app when new location data arrives.
At wake-up time, our app is put into the background and given a small amount of time(10 seconds) to process the location data. Our app is in the background and should do minimal work and avoid any tasks(such as querying the networks).If the time expires, our app may be terminated.
If we need more time, we need to request more time using the beginBackgroundTaskWithExpirationHandler, end the task by calling the endBackgroundTask
Receiving Location Data from a Service
locationManager:didUpdateLocations
Sometimes, location manager returns cached events, so we need to check the timestamp of any location events we receive.
-(void) locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations {
CLLocation* location = [locations lastObject];
NSDate* eventDate = location.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if(abs(howRecent) < 15.0){
NSLog(@"latitude %+.6f, longitude %+.6f\n", location.coordinate.latitude, location.coordinate.longitude);
}
}
Getting Location Events in the Background
Declare our app as needing background location services by including the UIBackgroundModes in Info.plist.
When an app is in the background and the location data is unlikely to change, in iOS 6.0 and later the location manager pauses the delivery of location updates to its delegate and powers down the hardware. After the user launches the app or when the user begins the activity again, the location manager resumes delivering location updates.
How to pause is decided by activityType, for example CLActivityTypeAutomotiveNavigation.
When the location manager pauses location updates, it calls the locationManagerDidPauseLocationUpdates
When the location manager resume location updates, it calls the locationManagerDidResumeLocationUpdates
If your paused, background app is terminated by the user or if it is terminated by the system to free up memory for the current foreground app, location updates will not resume automatically the next time the app is launched.
Deferring Location Updates While in the Background
deferredLocationUpdatesAvailable on CLLocationManager to see if the device support this.
-(void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations {
[self.hike addLocations:locations];
if(!self.defferingUpdates){
CLLocationDistance distance = self.hike.goal - self.hike.distance;
NSTimeInterval time = [self.nextAudible timeIntervalSinceNow];
[locationManager allowDeferredLocationUpdatesUntilTraveled:distance
timeout:time];
self.defferingUpdates = YES;
}
}
Tips for Conserving Battery Power
…snip...
References:
Location and Maps Guide
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009497-CH1-SW1
API book
https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CoreLocation_Framework/_index.html#//apple_ref/doc/uid/TP40007123
sample
https://developer.apple.com/library/ios/search/?q=location+sample
tips
http://www.cocoachina.com/special/fornew.html
https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/Articles/AddingaLibrarytoaTarget.html#//apple_ref/doc/uid/TP40010155-CH17
Guide
https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Getting%20Started
- 浏览: 2489384 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
发表评论
-
ionic UI(5)UI and Backend
2016-12-02 03:22 566ionic UI(5)UI and Backend 1 Pr ... -
Stanford Cource(2)Demo App Caculator
2014-06-24 01:29 865Stanford Cource(2)Demo App Ca ... -
Mono on MAC
2014-06-04 03:27 948Mono on MACJust fine the tool f ... -
IOS7 App Development Essentials(4)IPhone5, IPhone5s, IPhone5c
2014-04-11 03:59 943IOS7 App Development Essentia ... -
IOS7 App Development Essentials(3)NSUserDefaults
2014-04-11 02:58 971IOS7 App Development Essentia ... -
IPhone and Location(2)Documents Region Monitoring and Region Sample
2013-10-18 05:10 1700IPhone and Location(2)Documents ... -
Learn Objective C(6)Programming with Objective-C - Working with Blocks and Deali
2013-10-18 00:02 897Learn Objective C(6)Programming ... -
Learn Objective C(5)Programming with Objective-C - Working with Protocols and Va
2013-10-17 23:47 967Learn Objective C(5)Programming ... -
Learn Objective C(4)Programming with Objective-C - Encapsulating Data and Custom
2013-10-17 23:23 908Learn Objective C(4)Programming ... -
Learn Objective C(3)Programming with Objective-C - Defining Classes, Working wit
2013-10-17 23:09 992Learn Objective C(3)Programmi ... -
Learn Objective C(2)Learn Objective-C in Day 6 - 4 ~ 6
2013-10-17 00:30 926Learn Objective C(2)Learn Obj ... -
Learn Object C(1) Learn Objective-C in Day 6 - 1 ~ 3
2013-10-17 00:22 1077Learn Object C(1) Learn Objec ... -
APNS(4)Recall the Process and Learn Java APNS
2013-04-18 02:48 3430APNS(4)Recall the Process and L ... -
Build the iOS Things with J2Objc
2013-04-12 03:25 2434Build the iOS Things with J2Obj ... -
APNS(3)Write the Easy Client App
2013-01-15 07:23 1608APNS(3)Write the Easy Client Ap ... -
APNS(2)Try to Finish the first Example
2013-01-14 07:56 1502APNS(2)Try to Finish the first ... -
Stanford Cource(1)MVC and Object-C
2012-12-14 14:04 1267Stanford Cource(1)MVC and Objec ... -
Some VI Tips
2012-11-15 04:48 1063Some VI Tips Today, I need to c ... -
MAC Mini Setup
2012-09-25 18:45 1289MAC Mini Setup I am dealing wit ... -
Android Talker(1)MAC Environment
2012-09-01 00:16 1892Android Talker(1)MAC Environmen ...
相关推荐
A Learner’s Guide to Creating Objective-C Applications for the iPhone and iPad Book Description : Let’s say you have a killer app idea for iPhone and iPad. Where do you begin? Head First iPhone and...
This book is intended for IT staff members that will be charged with planning an iPhone and ipad implementation or pilot program, as well as those that will be charged with ultimately deploying and ...
iOS 10 SDK Development: Creating iPhone and iPad Apps with Swift by Chris Adamson English | 24 Mar. 2017 | ASIN: B071RRCK9R | 264 Pages | AZW3 | 5.24 MB All in on Swift! iOS 10 and Xcode 8 make it ...
Developing iOS 7 Apps for iPhone and iPad ppt (1-10) 最新 xcode 5的 斯坦福 ios 公开课 ppt
iPhone.2G.and.3G.User.Guide.2008
Application Settings and User Defaults Basic Data Persistence Drawing with Quatz and OpenGL Taps,Touches,and Gestures Where Am I?Finding Your Way with Core Location Whee!Accelerometer! iPhone Camera ...
Location-cleaned IOS14.8驱动包,亲测解压复制到drivers目录可用,你值得拥有。
Head First iPhone and iPad Development, 2nd Edition.pdf
Describe how to use iphone, just for user
and elaborates on the most important concepts in the iPhone user experience. Chapter 3, Types of Cocoa Touch Applications, presents a vocabulary for describing families of applications for the ...
Building iPhone and iPad Electronic Projects。关于iOS外围传感器编程
Learn iPhone and iPad cocos2d Game Development中文版全集
location-cleaned 定位ios15.0 最新驱动-iOS专用
the iPhone and iPad are “...some of the coolest, most powerful, and most technologically advanced tools ever made—period!” He is fascinated by the fact that, just under the appealing touch screen ...
Head First iPhone and iPad Development will help you get your first application up and running in no time. You'll not only learn how to design for Apple's devices, you'll also master the iPhone SDK ...
《Learn iPhone and iPad Cocos2D Game Development》翻译的章节。 来至cocoaChina论坛会员提供 个人觉得是一本不错的教程
How to design and implement an iPhone user interface Ways to enable and optimize web sites for iPhone and iPod touch. Tips for handling touch interactions and capturing JavaScript events Specific CSS ...
Covers the complete application development process, and highlights all the key device features including the camera, location awareness, and more Completely revised and redesigned with more than 100...
Barney walks you through the entire hybrid iPhone development process, from creating great user interfaces to compiling, deploying, and executing applications. Along the way, he introduces techniques...