• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 8.1 CoreLocationManager requestWhenInUseAuthorization 没有提示 AlertView

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:44:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试在我的 iOS 应用上使用用户位置。该应用适用于 iOS 7,但不适用于 iOS 8。

我都试过了。看了一堆教程,我知道在 iOS 8 中我们需要调用 requestWhenInUseAuthorization 方法并将 NSLocationWhenInUseUsageDescription 键添加到 Info.plist 中。

但它仍然无法正常工作,它没有征求用户的许可,我正在真实设备中进行测试(运行 iOS 8.1.x 的 iPhone 5c)。我多次尝试重新安装该应用程序。

这些是我为测试这个东西而创建的一个非常非常小的项目的代码。

我的 ViewController.m

#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>

@interface ViewController () <CLLocationManagerDelegate>

@property (strong, nonatomic) CLLocationManager *locationManager;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;

    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locationManager.distanceFilter = kCLHeadingFilterNone;

    if ([self.locationManager respondsToSelectorselector(requestWhenInUseAuthorization)]) {
        NSLog(@"ôde chamar o método"); // It could call the method
        [self.locationManager requestWhenInUseAuthorization];
    }

//    [self.locationManager startUpdatingLocation];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - CLLocationManagerDelegate

- (void)locationManagerCLLocationManager *)manager didUpdateLocationsNSArray *)locations {
    NSLog(@"Atualizou Localização para: %@", [locations lastObject]); // Updated the location to
}

- (void)locationManagerCLLocationManager *)manager didFailWithErrorNSError *)error {
    NSLog(@"Location Manager falhou com erro: %@", error); // Location manager failed with error
}

- (void)locationManagerCLLocationManager *)manager didChangeAuthorizationStatusCLAuthorizationStatus)status {
    if (status == kCLAuthorizationStatusAuthorized) {
        [self.locationManager startUpdatingLocation];
    }
}

@end

我的信息.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>wallace.$(PRODUCT_NAME:rfc1034identifier)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string></string>


</dict>
</plist>

有人知道如何解决这个问题吗?



Best Answer-推荐答案


NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription 添加到您的 Info.plist。然后,您可以为每个值提供 AlertView 文本。

位置管理器将查看这些字段中的文本以在 AlertView 中进行提示。

关于iOS 8.1 CoreLocationManager requestWhenInUseAuthorization 没有提示 AlertView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942516/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap