ユーザーがiOSアプリで「デフォルトの場所を使用する」ことを拒否したかどうかを検出するにはどうすればよいですか?
選択に応じて、異なるビューコントローラを提示したいと思います。
ありがとう
ユーザーがiOSアプリで「デフォルトの場所を使用する」ことを拒否したかどうかを検出するにはどうすればよいですか?
選択に応じて、異なるビューコントローラを提示したいと思います。
ありがとう
そのためには、以下のデリゲートメソッドを実装する必要があります。
- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
if([error code]== kCLErrorDenied)
self.locationDenied = YES;
switch ([error code]) {
// "Don't Allow" on two successive app launches is the same as saying "never allow". The user
// can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
case kCLErrorDenied:
[appDelegate showAllowGPSLocationView];
default:
break;
}
self.locationDefined = NO;
}
AppDelegateでメソッド「showAllowGPSLocationView」を作成できます。そして、ユーザーにビューを表示します。GPS位置情報にアクセスする必要があります。
それがあなたの問題を解決することを願っています。
ハッピーコーディング!
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusDenied) {
// denied
}
else if (status == kCLAuthorizationStatusAuthorized) {
// allowed
}
}
デリゲートの実装CLLocationManagerDelegate
詳細な説明については、こちらを参照してください。
そのために、2つの方法で問題を解決する関数を作成しました。1つ目は位置情報サービスが有効になっているかどうかを確認し(デバイスの最初の位置情報設定)、2つ目はユーザーがアプリを承認したかどうかを確認します。
- (bool)locationAvailable
{
if (!([CLLocationManager locationServicesEnabled]) || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
return FALSE;
else
return TRUE;
}
以下のように試すことができます:
#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_2
if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized))
#else
if ([CLLocationManager locationServicesEnabled])
#endif