【问题标题】:Get geolocation data from jailbroken iphone shell script从越狱的 iphone shell 脚本中获取地理位置数据
【发布时间】:2012-12-14 05:05:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone ios ios5 geolocation jailbreak


    【解决方案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);
        }
    

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

    【讨论】:

    • 他将部署在越狱设备上。对于 shell 脚本,也许使用 python Cocoa-touch 绑定更方便。
    • 这是一个通用的解决方案,应该也适用于像我这样的非越狱设备。
    • 不幸的是,问题基本上是在寻求一种无需在 Objective-C 中进行编码的方法,所以我怀疑这对他有多大帮助。
    • 我将研究 python coca-touch 库。 Objective-C 没有帮助(除非有解释它的 shell,但我对此表示怀疑)。
    • 仅供参考,OfflineMap 是关于如何使用 PyObjC 和 Cocoa Binding 进行编程的一个很好的例子。 code.google.com/p/iphoneofflinemap
    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多