菜鸟教程小白 发表于 2022-12-13 05:44:39

iOS 8.1 CoreLocationManager requestWhenInUseAuthorization 没有提示 AlertView


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

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

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

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

<p>我的 ViewController.m</p>

<pre><code>#import &#34;ViewController.h&#34;

#import &lt;CoreLocation/CoreLocation.h&gt;

@interface ViewController () &lt;CLLocationManagerDelegate&gt;

@property (strong, nonatomic) CLLocationManager *locationManager;

@end

@implementation ViewController

- (void)viewDidLoad {
    ;

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

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

    if () {
      NSLog(@&#34;Pôde chamar o método&#34;); // It could call the method
      ;
    }

//    ;

}

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

#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    NSLog(@&#34;Atualizou Localização para: %@&#34;, ); // Updated the location to
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@&#34;Location Manager falhou com erro: %@&#34;, error); // Location manager failed with error
}

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    if (status == kCLAuthorizationStatusAuthorized) {
      ;
    }
}

@end
</code></pre>

<p>我的信息.plist</p>

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

    &lt;key&gt;NSLocationWhenInUseUsageDescription&lt;/key&gt;
    &lt;string&gt;&lt;/string&gt;


&lt;/dict&gt;
&lt;/plist&gt;
</code></pre>

<p>有人知道如何解决这个问题吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将 <code>NSLocationAlwaysUsageDescription</code> 和 <code>NSLocationWhenInUseUsageDescription</code> 添加到您的 <code>Info.plist</code>。然后,您可以为每个值提供 AlertView 文本。</p>

<p>位置管理器将查看这些字段中的文本以在 AlertView 中进行提示。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iOS 8.1 CoreLocationManager requestWhenInUseAuthorization 没有提示 AlertView,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28942516/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28942516/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS 8.1 CoreLocationManager requestWhenInUseAuthorization 没有提示 AlertView