起因
月底接到通知,晚餐補助由簽到改成釘釘打卡。
作爲一名技術人員,不甘於寂寞的研究了一發釘釘遠程打卡..
源於我的正(dan)直(xiao),我並未在實際工作中使用,僅作爲研究實現了一發
工具
- 一臺mac (虛擬器)
- Xcode
- 一臺iPhone
關於座標
這裏普及一下座標系統: 目前我們經常接觸的無非就是原始座標,火星座標,二次加密座標。
- 原始座標:手機上獲取到的是原始的GPS座標 —— WGS-84。
- 火星座標:我大天朝自己加了飄逸搞的一套加密座標,中國國測局(和GFW一樣的傻屌組織)—— GCJ-02:谷歌、高德。
- 百度加密座標:在火星座標的基礎上再次飄逸後的加密座標 —— BD-09:百度。
在遙遠的東方,有一個天朝。 天朝有一個測繪局,發明了一種把美國衛星的GPS的地球座標,進行偏移的算法,計算後,得出了一個火星座標。 爲了讓火星座標能正確的顯示,又給每部導航軟件加入了這個算法,可以在大家的地圖上還原位置。並且給每部導航收費。美其名國家安全。而且這個算法看上去很牛B的樣子,還不可逆。 所以,只有這個國家的人都在用錯誤的座標。正宗的掩耳盜鈴。 民用衛星精度都已經讓你出身冷汗了,何況軍用衛星。打仗估值也不會用中國的電子地圖吧。 只可惜各種LBS應用,都是個麻煩事哦。
還好黃天不負有心人,終於經過大家的模擬,計算,基本還原了飄逸算法。
原理
做過地圖定位相關App的童鞋都應該瞭解Xcode - 工具欄 - Debug - Simulate Location
它的作用是用於虛擬定位,以便於不用親臨其地模擬到達某個座標。
同時釘釘打卡定位打卡的原理,是基於你是否到達了以公司地理座標爲圓心的某個圓。在此範圍內,員工可進行打卡。
我們需要做的是使用百度、高德或者谷歌地圖獲取到打卡位置的GPS座標,然後使用算法轉換成iPhone所需要的座標WGS-84。
然後在Simulate Location使用這個打卡座標模擬打卡。
實現步驟 (使用高德定位爲例)
- 使用高德獲取公司(以天安門所在點爲例)所在點的地理座標
- 修改start.gpx中的對應經緯度
<wpt lat="39.908692" lon="116.397477">
-
連接真機,運行項目,Xcode - 工具欄 - Debug - Simulate Location,點擊start,如下圖所示
-
打開釘釘,遠程打卡you get ~
整個遠程打卡的流程到此就結束了,當開啓模擬定位之後,你會發現所有APP的定位均換成了這個定位,不用擔心,當結束項目之後稍等一下就會回到準確的定位。
補充說明以下幾點
1.如果沒有結束工程就拔掉數據線,定位會一直是模擬定位,可能需要重啓手機恢復一下
2.WiFi打卡需要修改一下所用WiFi的WiFi名和公司WiFi名一致
3.關於座標段落的文獻引用於其他作者
demo地址
有不明白的在評論中回覆即可,對你有幫助的話麻煩star一下哦