7

バージョン6に更新iOS SDKしました。その後、アプリをコンパイルしましたが(で正常に動作しますiOS 4 & iOS 5)、位置情報サービスが機能しなくなりました。更新を受信して​​おらず、上部のdelegate場所の矢印が表示されていません...通常の方法でサービスを開始しています。

[locationManager startUpdatingLocation];

私のプロジェクトは非ARCです。

何が起こっている?これは私を夢中にさせています...

前もって感謝します。

4

8 に答える 8

6

pausesLocationUpdatesAutomaticallyLocation Managerのプロパティを に設定するだけNOです。これは、アプリケーションがバックグラウンドで実行されているときに位置情報の更新を無効にする IOS 6 の新機能です。このプロパティのデフォルト値は ですYES

于 2012-10-08T12:20:51.360 に答える
6

プロジェクトの .plist ファイルに CFBundleDisplayName があることを確認してください。そのキーを追加すると、それが修正されました。

于 2012-09-26T15:25:37.490 に答える
4

これは iOS6 での変更です。

場所が更新されたときに通知されるようにするには、locationManager:didUpdateToLocation:fromLocation の代わりに locationManager: didUpdateLocations:を実装する必要があります。

startUpdatingLocationに関するドキュメントも読む必要があります。

于 2012-09-20T23:38:21.880 に答える
1

私の場合、別のクラスの下にロケーション マネージャーがあり、メイン コントローラーからこのクラスを呼び出していました。これは機能せず、didUpdateLocations が呼び出されませんでした。

//
//  LocationServices.h
// 

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@interface LocationServices : NSObject <CLLocationManagerDelegate> {
    CLLocationManager *locationManager;

}

@property (nonatomic, retain) CLLocationManager *locationManager;

- (void)startLocationServices;

@end



//  LocationServices.m
#import "LocationServices.h"

@implementation LocationServices 
@synthesize locationManager, currentLocation;

- (void)startLocationServices {
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.pausesLocationUpdatesAutomatically = NO;
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

    if ([CLLocationManager locationServicesEnabled]) {
        [locationManager startUpdatingLocation];

    } else {
        NSLog(@"Location services is not enabled");
    }
}

////////////////////////////////////////////////
- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations {
    CLLocation* location = [locations lastObject];
    NSLog(@"Updated: latitude %+.6f, longitude %+.6f\n",
          location.coordinate.latitude,
          location.coordinate.longitude);
}
@end

// Main controller
- (void)viewDidLoad {   
    [super viewDidLoad];

.....

LocationServices *locationSerices = [[LocationServices alloc]init];
[locationSerices startLocationServices];
......
}

上記のコードは機能しません。なんで?わかりません...単純なことをしようとして多くの時間を費やすと、簡単に興味を失う可能性があります。iOS は非常に複雑で使いにくいプログラミング環境です。1 つのことを行うには多くの方法がありますが、機能するのは 1 つだけです。問題を引き起こさずに組み合わせることはできません。あなたは本に従ってすべてをしなければなりません、さもなければあなたは何も得られません. あなたが何か間違ったことをしたというヒントさえありません...イライラします...

代わりに、メインコントローラーで locationManager:(CLLocationManager *)manager didUpdateLocations: を実装すると、すべて正常に機能しました

于 2013-01-21T01:23:18.693 に答える
0

この問題はIOS6.1Beta2で解決されたようです-http://www.youtube.com/watch?v= aFZR0eMUV74

于 2012-11-16T19:19:09.143 に答える
0

CFBundleDisplayName を設定すると、問題が解決しました。同じ場所の更新が呼び出されることはありませんでした。info.plist パラメーターを設定するだけで機能し始めます。

于 2013-02-27T02:29:24.533 に答える
0

plistファイル、クリーン、リビルド、新しいターゲット、構成などですべてを試しましたが、何も機能しませんでした。しかし、最終的には修正しました。新しい Xcode 4.5 プロジェクトを最初から作成し、再構成し、ファイルごとに、フレームワークごとに手動で追加する必要がありました。私の古い XCode プロジェクトには、最後の XCode と内部的に互換性のないものがあったようです。これをここに書いているのは、誰かの次の 10 時間の作業を節約できるかもしれないからです。

于 2013-02-28T12:09:54.137 に答える
-4

ここで私は単純すぎますか?プライバシーの下では、ロケーションは以前の問題と同じように見えます。

于 2012-09-22T18:12:14.830 に答える