年轻人的第一个swift:ios 模拟定位打卡

起因

由于最近马上过节了,而我也被这节日的气氛所支配,所以今天完成了未打卡三连成就。公司现在规定每个月只有两次未正常打卡的机会,超过了会有相应的惩罚机制。我感觉自己工作时长接近十个小时,但是因为忘记打卡被处罚的话心里多少有点不爽,所以就想是不是可以补救一下。- -!

模拟定位

很早之前就听说Xcode 提供了模拟定位,方便开发者调试,所以我想这个应该是个切入点,问了一个懂这个大佬,也得到了肯定的答案。
所以主体思路是通过Xcode 模拟定位,然后借助这个模拟定位功能,定位到公司附近,然后钉钉打卡。不过网上找到的方法大多数都不是swift 的,我自己摸索了一个小时找到了具体方案,其实非常的简单。

方法

  1. 首先,通过高德/百度地图/腾讯地图获取公司附近经纬度,不过需要注意的是iOS原生坐标为世界标准地理坐标(WGS-84), 百度地图的坐标为BD-09,高德为中国国测局地理坐标(GCJ-02),需要将位置转换为iOS 坐标下的。
    坐标转换有比较简单的方法,GitHub上找到一个coordTransform_py(忽略我是一个GIS专业学生 - -!),对应转换:

    1
    2
    3
    from coordTransform_utils import  *
    lon, lat = 120.177239,30.216698
    w_lon, w_lat = gcj02_to_wgs84(lon, lat)
  2. Xcode 新建一个项目,项目内新建一个gpx 文件,文件内容里添加对应的经纬度:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0"?>
    <gpx version="1.1" creator="Xcode">

    <!--
    Provide one or more waypoints containing a latitude/longitude pair. If you provide one
    waypoint, Xcode will simulate that specific location. If you provide multiple waypoints,
    Xcode will simulate a route visiting each waypoint.
    -->
    <wpt lat="39.99200300843388" lon="116.46688673941635">
    <name>Cupertino</name>

    <!--
    Optionally provide a time element for each waypoint. Xcode will interpolate movement
    at a rate of speed based on the time elapsed between each waypoint. If you do not provide
    a time element, then Xcode will use a fixed rate of speed.

    Waypoints must be sorted by time in ascending order.
    -->
    <time>2014-09-24T14:55:37Z</time>
    </wpt>

    </gpx>
  3. 手机与电脑连接,然后让程序在手机上运行起来,同时保持手机定位打开状态,此时就可以通过模拟位置来修改手机的当前定位了。最终打卡成功。

总结

本文是由于未正常打卡紧缺,我尝试补救的一次探索,由于是第一次接触Xcode ,感觉有点兴奋。不过希望看到这里的你不要用这个方法来做坏事。

关于头图

打卡成功

Knowledge Distillation (3) : 看样本下菜的FastBERT
样本不均衡之难易不均衡