我的应用程序有问题-每当我启动应用程序时,即使不使用位置信息,状态栏中也会出现位置图标。
我的代码:
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[LocationManager manager] startLocation];
return YES;
}
LocationManager.m
@implementation LocationManager
- (id)init {
self = [super init];
if (self) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
}
return self;
}
+ (instancetype)manager {
static LocationManager *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[LocationManager alloc] init];
});
return instance;
}
- (void)startLocation {
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];
}
#pragma mark - CLLocatiomManager Delegate
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
...
}
在我允许位置服务使用我的位置后,每次启动应用程序时都会出现位置指示符(即使我从didFinishLaunchingWithOptions方法中删除了此行)。 但是,如果我在首次启动(安装应用程序)时删除了此行,则不会显示位置指示器,因此我仅在一行中使用位置服务。
我要在注释行时不显示位置指示符。
答案 0 :(得分:0)
基于您的Singleton课程。
Locationmanager将在呼叫时开始位置
[[LocationManager manager] startLocation];
因此,只有位置图标显示在状态栏上。 最好在需要位置时调用startLocation。
获取位置后必须致电
[self.locationManager stopUpdatingLocation];
答案 1 :(得分:-1)
我意识到这是因为OneSignal。 决定是:
[OneSignal setLocationShared:NO];