GithubHelp home page GithubHelp 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一下哦

dingdingpunchcarddemo's People

Contributors

elegantliar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dingdingpunchcarddemo's Issues

有个问题希望楼主改进下

有个问题希望楼主改进下,钉钉会检测当前GPS和附近基站是否匹配,不匹配就算虚拟定位,只模拟GPS不模拟基站要被算作弊的

xcode version

请问这个工程用的是哪个版本的
xcode啊?

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.