1

我终于越狱了我的 iPhone 4S (iOS 5.1.1)。我非常熟悉 linux/windows 编程 (c/c++) 和 shell 脚本。我不熟悉 XCode/Objective-C,也没有 mac。

我想要一种简单的方法来跟踪我自己的地理位置并将经度/纬度(?准确度?)每隔几分钟写入我 iPhone 上的文本文件。我不需要太多的准确性。蜂窝塔方法应该可以正常工作,所以我不会杀死我的电池寿命。

如果我能得到一个只吐出 lat/long 的命令行应用程序,那么我相信我可以通过一些 bash 包装脚本弄清楚需要做什么才能将其变成“后台守护进程”类型的应用程序。

我在 Cydia 中找不到执行此类操作的应用程序。有一些会自动更新您在社交网站上的位置,但我不想这样做。我只想要一个本地日志,以便我可以将其 scp 到我的家庭服务器以进行个人跟踪。(我经营一家小企业,有时需要向客户证明我在他们的位置多久了)

4

1 回答 1

-1

CoreLocation文档应该回答您的任何问题。但是要获取手机的当前位置:

// based on http://www.icodeblog.com/tag/corelocation/
@interface CFAAppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>

@property (strong, nonatomic) UIWindow *window;

//Add a location manager property to this app delegate
@property (strong, nonatomic) CLLocationManager *locationManager;

@end
@implementation CFAAppDelegate

@synthesize window = _window;
@synthesize locationManager=_locationManager;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    if(self.locationManager==nil){
        _locationManager=[[CLLocationManager alloc] init];
        //I'm using ARC with this project so no need to release

        _locationManager.delegate=self;
        _locationManager.purpose = @"We will try to tell you where you are if you get lost";
        _locationManager.desiredAccuracy=kCLLocationAccuracyBest; // other options exist, let's assume this one
        _locationManager.distanceFilter=500;
        self.locationManager=_locationManager;
    }

    return YES;
}
- (void)awakeFromNib {
  if([CLLocationManager locationServicesEnabled]){
        [self.locationManager startUpdatingLocation];
    }
}

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
   NSDate* eventDate = newLocation.timestamp;
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
    if (abs(howRecent) &lt; 15.0)
    {
            //Location seems pretty accurate, let's use it!
            NSLog(@"latitude %+.6f, longitude %+.6f\n",
                  newLocation.coordinate.latitude,
                  newLocation.coordinate.longitude);
    }

将其报告给数据存储是留给读者的练习。

于 2012-12-14T07:17:58.470 回答