每当我启动我的应用程序时,都会出现位置图标

时间:2018-08-22 06:15:29

标签: ios cllocationmanager

我的应用程序有问题-每当我启动应用程序时,即使不使用位置信息,状态栏中也会出现位置图标。

我的代码:

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方法中删除了此行)。 但是,如果我在首次启动(安装应用程序)时删除了此行,则不会显示位置指示器,因此我仅在一行中使用位置服务。

我要在注释行时不显示位置指示符。

2 个答案:

答案 0 :(得分:0)

基于您的Singleton课程。

Locationmanager将在呼叫时开始位置

[[LocationManager manager] startLocation];

因此,只有位置图标显示在状态栏上。 最好在需要位​​置时调用startLocation。

获取位置后必须致电

[self.locationManager stopUpdatingLocation];

答案 1 :(得分:-1)

我意识到这是因为OneSignal。 决定是:

[OneSignal setLocationShared:NO];