Coder Social home page Coder Social logo

dingdingpunchcarddemo's Introduction

起因

月底接到通知,晚餐补助由签到改成钉钉打卡。

作为一名技术人员,不甘于寂寞的研究了一发钉钉远程打卡..

源于我的正(dan)直(xiao),我并未在实际工作中使用,仅作为研究实现了一发

素材0.gif

工具

  • 一台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使用这个打卡坐标模拟打卡。

实现步骤 (使用高德定位为例)

  1. 使用高德获取公司(以***所在点为例)所在点的地理坐标 素材1.jpeg

  2. 116.397477,39.908692为高德获取到***的坐标,使用飘逸算法进行坐标转换

  3. 步骤2中的飘逸算法,在我给出的demo中已给出iOS版本的转换方式 如下图所示 素材2.jpeg

素材3.jpeg

  1. 修改start.gpx中的对应经纬度 <wpt lat="39.908692" lon="116.397477">

素材4.jpeg

  1. 连接真机,运行项目,Xcode - 工具栏 - Debug - Simulate Location,点击start,如下图所示 素材5.png

  2. 打开钉钉,远程打卡you get ~ 素材6.jpeg


整个远程打卡的流程到此就结束了,当开启模拟定位之后,你会发现所有APP的定位均换成了这个定位,不用担心,当结束项目之后稍等一下就会回到准确的定位。

补充说明以下几点 1.如果没有结束工程就拔掉数据线,定位会一直是模拟定位,可能需要重启手机恢复一下 2.WiFi打卡需要修改一下所用WiFi的WiFi名和公司WiFi名一致 3.关于坐标段落的文献引用于其他作者

有不明白的在评论中回复即可,对你有帮助的话麻烦star一下哦

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.