有关计步神器App的实现

昨天刚刚开始用微信运动,对于狗哥等不霸占封面不罢休的行为表示非常不满,所以大清早起来写了一款应用程序,来发泄心中的愤懑,开个玩笑,仅供娱乐。

本示例程序运用 HealthKit 开发,原理是伪造步数,写入苹果自带的健康应用,再让微信读取,实现曲线救国。

最终的效果图如下:

1. HealthKit的实现

打开 HealthKit Capabilities ,才能在iOS的健康app中添加数据或者读取信息:

接下来写一个 HealthManager 类用来处理所有项目中涉及到和 HealthKit 相关的东西。Let healthKitStore:HKHealthStore= HKHealthStore() 由于苹果的隐私政策,先申请权限,这个变量的调用方法可以获取健康信息和读取信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 申请权限
func authorizeHealthKit(completion:((success:Bool, error:NSError!) -> Void)!)
{ //1
let healthKitTypesToWrite: Set = [
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount),
]
//2
if !HKHealthStore.isHealthDataAvailable() {
let error = NSError(domain:"com.hihex.healthkit", code: 2, userInfo:
[NSLocalizedDescriptionKey:"HealthKit isnot available in this Device"])
if completion != nil {
completion(success:false, error:error)
} return;
}
//3
healthKitStore.requestAuthorizationToShareTypes(healthKitTypesToWrite,readTypes: nil) { (success, error) -> Void in
if completion != nil {
completion(success:success,error:error)
}
}
}

写上需要申请的权限集合,因为 app 内读取自己写入的数据不需要读取的权限所以就不申请读取的权限。
检查设备是否能获取到健康的信息,因为有些机型如 iPad 等并不能支持 HealthKit 。
申请权限,因为传入的是一个块你可以根据处理的结果进行 UI 上的交互。
HealthKit支持的活动的类型有70多种,可以在 HKWorkoutActivityType 里查看,有兴趣可以自己看看。

效果如下:

然后就是保存运动样本,读取运动样本和UI设计了。

我已经把安装包上传到网络,下载地址:
计步器

当然做人要诚实,我又默默地把步数改了回去。

祝大家玩得开心。


以上