美文网首页IOS开发者心得iOS开发攻城狮的集散地iOS
手把手教你修改iOS版QQ的运动步数

手把手教你修改iOS版QQ的运动步数

作者: idage | 来源:发表于2016-06-21 20:21 被阅读14386次

现在很多软件都加上了运动模块,比如QQ和微信,而且还有排行榜,可以和好友比较谁的运动步数多,任何东西只要添加了比较功能,就变得不一样了。今天教大家用代码去修改QQ上的运动步数,修改完效果是这样的:


屏幕快照 2016-06-21 下午5.02.56.png
本帖子是抱着学习的心态来看待这个功能的,如果不喜欢请略过。
1准备工作

你需要一个iOS程序员所需要的设备:一个mac系统的电脑、一个Xcode、一个开发者账号(用开发者账号这是因为要使用HealthKIt框架,就必须开启授权)、还有一个苹果手机.

2新建项目

既然你都有开发者账号了,这我就只介绍重要的东西了,像怎么新建项目就不说了。
1.添加HealthKit.famework库。
2.开启授权,将Healthkit开关打开.如图:

786E95C6-E1E0-4272-BFBF-D19FBF4CE9AB.png

打开开关后会自动下载一个文件是后缀是:.entitlement的文件,如上图文件目录。

3 上代码

1引入头文件

#import <HealthKit/HealthKit.h>

2初始化 HKHealthStore
HKHealthStore —— 关键类(使用HealthKit框架必须创建该类)

 self.healthStore = [[HKHealthStore alloc] init];

3发出具体的请求许可,这里我们只需要写入步数就可以。
创建步数类型

HKQuantityType *stepCountType = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
 NSSet *writeDataTypes = [NSSet setWithObjects:stepCountType,  nil];

发出具体的请求许可

[self.healthStore requestAuthorizationToShareTypes:writeDataTypes readTypes:readDataTypes completion:^(BOOL success, NSError *error) {
            
            if (!success) {
              //失败了
                return;
            }
         
        }];

程序运行到这就回弹出健康的那个提示界面了,选择允许选项。

4 设置步数并且保存

//数据看类型为步数.
    HKQuantityType *quantityTypeIdentifier = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
    
    //表示步数的数据单位的数量
    HKQuantity *quantity = [HKQuantity quantityWithUnit:[HKUnit countUnit] doubleValue:100];
    
    //数量样本.
    HKQuantitySample *temperatureSample = [HKQuantitySample quantitySampleWithType:quantityTypeIdentifier quantity:quantity startDate:[NSDate date] endDate:[NSDate date] metadata:nil];
    
    //保存
    [self.healthStore saveObject:temperatureSample withCompletion:^(BOOL success, NSError *error) {
        if (success) {
            //保存成功
        }else {
            //保存失败
        }
    }];

那个100就是增加的步数了。
然后打开手机里的健康应用,你会发现步数增加了。再打开QQ里的运动,步数也增加了。理论上来说只要软件的步数是从健康应用里获取的就都可以改变,不只是QQ哦!!!!!

github下载地址
赶快去试试吧

感谢观看,欢迎评论和批评

相关文章

网友评论

  • 863c73f31933:楼上,我这边根据你说的做了之后QQ上无法同步呢?
  • 有梦想的咸鱼宁:厉害的我的程序员
  • HoyaWhite:会玩啊。。。。。。。 :smirk:
  • East_Coast:健康应用数据变了,微信步数没有变
  • 奋斗的蜗牛:学习了
  • 冰三尺:readDataTypes 这个字段哪来的?
    zhouhao_180:@倩影阑珊 我也想问来着
  • jiaxw32:iOS 10,运行完之后,健康应用数据变了,QQ跟微信里步数都没有变
  • 64176309d1e8:发出请求许可的时候失败了 提示 Failed to open database
  • iOS开发工程师Echo:健康应用的步数加上去了,但是微信上面的步数确没有加上去啊 还是原来实际的步数.... :scream:
  • narutocheen:手机黑屏了
  • Mr_疯不觉:。。。我写入步数以后,成功了,但是步数并没有改变……
  • 薛定谔的熊:系统健康应用点击步数图表,再点击添加数据源也可以增加步数呀,不用楼主这么麻烦吧
    StephenCurry300:@薛定谔的熊 不过好像不能同步到QQ啊……
  • Mr_疯不觉:ios10下,需要向info.plist里面加入声明,否则会崩溃
    idage:@夏末微凉丶n :+1: 没有研究iOS10
  • 52a49ce3c50a:不错,可以拿来装逼
  • 垃圾___垃圾:哈哈,成功了,然而并没什么卵用--- :smile:
    灵猴:@驿路梨花开 为啥我这还是不行?运行起来就是白屏那个界面
    随风凋零的梦:要第二天显示吧
    idage:@驿路梨花开 发个朋友圈也好啊:sunglasses:
  • 漂泊海上的大土豆:亲测微信步数 自己这边看没变化 但是在朋友那边已经是第一,不清楚为什么自己这边微信为什么没刷新
    idage:@漂泊海上的大土豆 虽然都是从健康里获取数据,但还是会做些次处理的,比如qq如果大于10万会显示为99999步,微信没试
  • 街灯下de橱窗:哈哈,好玩,一会儿试试
  • 垚子:mark
  • 十一岁的加重:根本没用效果,qq微信只认手机自己生成的步数,不会认你用代码增加的步数
    十一岁的加重:@idage QQ要过些时间才有效果,微信没有效果
    idage:@十一岁的加重 截图的十万步
    idage:@十一岁的加重 我截图的10步你认为我p的图?:smile:

本文标题:手把手教你修改iOS版QQ的运动步数

本文链接:https://www.haomeiwen.com/subject/xjegdttx.html