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