0

アプリで位置情報サービスを使用しています。ユーザーがスタートボタンをタップすると、バックグラウンドでも実行する必要があります。ユーザーがスタートボタンをタップせずにアプリを閉じると、位置情報サービスを停止する必要があります。アプリをロードするときに開始する必要があるため、スタートボタンをタップしたときにロケーションサーブを初期化することはオプションではありません。

私は appDelegate.m でこれを試しています:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
if([[NSUserDefaults standardUserDefaults] objectForKey:@"appRunning"] == nil) {
    [location stopUpdatingLocation];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
}
}

applicationWillResignActive と applicationDidEnterBackground の両方で。

appDelegate.h では次のようになります。

#import <UIKit/UIKit.h>
#import "MapKit/Mapkit.h"

@class MainViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate, MKMapViewDelegate, CLLocationManagerDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) MainViewController *mainViewController;
@property (strong, nonatomic) CLLocationManager *location;
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (nonatomic) BOOL disclaimerAccepted;

@end

ユーザーがスタートボタンをタップせずにアプリを閉じると、ロケーションサービスが停止する (そして矢印が消える) ことを実現したいと考えています。これはどのように行うことができますか?

ところで、NSLogステートメントがステートメンの外にある場合、両方のメソッドでフラグをNSlogできます

4

1 に答える 1

0
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [location stopUpdatingLocation];
}
于 2013-05-09T11:01:54.500 に答える