2017-12-04 9 views
0

最新のiOSバージョンのiPhoneについては、常にiPhone上であなたの位置を追跡するための「いつも」は得られません。私はアプリの中で、そして決して得られない。しかし、この機能は以前のすべてのバージョンで正常に動作しているようです。私が以下のXCodeで行ったこと以外の提案は素晴らしいだろう。私はこれらの2行を切り替えIonic 3 - ios 11 - 常にGPSの場所を尋ねます

if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){ 
    [self.locationManager requestAlwaysAuthorization]; 
} else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { 
    [self.locationManager requestWhenInUseAuthorization]; 
} else { 
    NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription key is defined in the Info.plist file."); 
} 

お知らせ:plistファイル内

CDVLocation.m

if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){ 
      [self.locationManager requestWhenInUseAuthorization]; 
     } else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { 
      [self.locationManager requestAlwaysAuthorization]; 
     } else { 
      NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription key is defined in the Info.plist file."); 
     } 

<key>NSLocationAlwaysUsageDescription</key> 
    <string>This app requires constant access to your location in order to track your position, even when the screen is off.</string> 

答えて

1

コードは反転論理を持って、それがこのする必要があります:

[self.locationManager requestAlwaysAuthorization]; 
[self.locationManager requestWhenInUseAuthorization]; 

マスターsource codeを参照できます。

また、iOS 11の場合、requesting always permissionの場合は、NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescriptionキーをinfo plistに含める必要があります。

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> 
    <string>When always is requested in iOS 11</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
    <string>When "when in use" is requested in iOS 11</string> 

あなたは、アプリケーションのInfo.plistファイル内NSLocationWhenInUseUsageDescriptionとNSLocationAlwaysAndWhenInUseUsageDescriptionキーを含める必要があります。 (あなたのアプリがiOS 10以前のバージョンをサポートしている場合は、NSLocationAlwaysUsageDescriptionキーも必要です)。これらのキーが存在しない場合、承認リクエストはすぐに失敗します。

+0

このアップデートでは、残念ながらまだ動作しません。 – userlkjsflkdsvm

+0

@userlkjsflkdsvm詳細は、私の答えを更新しました。ビデオは[here](https://stackoverflow.com/a/46847825/5099014)にリンクされています。 –

+0

パーフェクト!感謝します! – userlkjsflkdsvm

関連する問題