【问题标题】:Location icon appears every time I launch my app每次启动我的应用程序时都会出现位置图标
【发布时间】:2018-08-22 06:15:29
【问题描述】:

我的应用出现问题 - 每次启动应用时,状态栏中都会出现位置图标,即使我不使用位置也是如此。

我的代码:

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 方法中删除了这一行)。 但是如果我在第一次启动(安装应用程序)时删除此行,则位置指示器不会出现,所以它只是我使用位置服务的一行。

我希望当该行被注释时位置指示器不出现。

【问题讨论】:

  • @franiis 我的意思是,如果我评论这一行,指标仍然会出现
  • 你在info.plist中要求什么功能?
  • @franiis 隐私 - 始终位置和使用时使用说明、隐私 - 始终位置使用说明、隐私 - 位置使用说明、隐私 - 使用时位置使用说明。我都写了,有问题吗?我会尝试删除多余的
  • @franiis 我只留下了“Privacy-Location When In Use Usage Description”,但问题依然存在

标签: ios cllocationmanager


【解决方案1】:

基于你的 Singleton 类。

Locationmanager 将在调用时开始定位

[[LocationManager manager] startLocation];

所以,状态栏上只显示了那个位置图标。 更好的是,您可以在需要位置时调用 startLocation。

获取位置后必须调用

[self.locationManager stopUpdatingLocation];

【讨论】:

  • 但即使我评论这一行 [[LocationManager manager] startLocation];首次启动后,指示灯仍然出现并在 5 秒后消失
  • 是的,您的定位服务已被调用。因此,当您的应用程序进入后台或终止状态时,必须停止更新位置。操作系统将在几秒钟后消失位置图标
【解决方案2】:

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

[OneSignal setLocationShared:NO];

【讨论】:

  • 好的,但您从未在问题中提及 OneSignal,因此提出的问题无法回答。
最近更新 更多