123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //
- // Copyright © 2020 osy. All rights reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- #import "UTMLocationManager.h"
- #import "UTMLogging.h"
- @import CoreLocation;
- @interface UTMLocationManager () <CLLocationManagerDelegate>
- @property (nonatomic) CLLocationManager *locationManager;
- @end
- @implementation UTMLocationManager
- + (instancetype)sharedInstance {
- static id sharedInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedInstance = [[self alloc] init];
- UTMLocationManager *instance = sharedInstance;
- instance.locationManager = [[CLLocationManager alloc] init];
- instance.locationManager.delegate = instance;
- instance.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
- instance.locationManager.pausesLocationUpdatesAutomatically = NO;
- });
- return sharedInstance;
- }
- - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
- }
- - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
- UTMLog(@"Location manager failed with: %@", error);
- }
- - (void)locationManagerDidChangeAuthorization:(CLLocationManager *)manager {
- if (manager.authorizationStatus == kCLAuthorizationStatusDenied) {
- UTMLog(@"Location services are disabled in settings.");
- } else {
- [self startUpdatingLocation];
- }
- }
- - (void)startUpdatingLocation {
- [self.locationManager requestAlwaysAuthorization];
- self.locationManager.allowsBackgroundLocationUpdates = YES;
- [self.locationManager startUpdatingLocation];
- }
- @end
|