数据订阅是运动健康应用中非常常见的功能。用户订阅运动记录、健康记录等数据。当这些数据发生变化时,用户可以在应用程序上即时收到推送通知。比如某用户最近在健身,给自己定下了每天走10000步,每周3次的目标;定期数据订阅可以将每天的步数推送给用户,但用户需要做两次才能知道自己是否完成了本周的目标。场景事件订阅可以弥补这个不足。场景事件订阅不仅仅是针对某一数据类型,而是关注由一种或多种数据类型组合而成的场景。仍以上述场景为例。一周任意3天走10000步是一个场景。只有当用户达到场景目标时,他才会收到来自应用程序的推送通知。华为运动健康服务(HealthKit)不仅支持数据事件订阅,新版本还增加了订阅场景事件的能力,让运动健康数据订阅更易为用户所理解。开发者应该如何实现这个能力?下面是详细的集成步骤。集成方式1.注册订阅者使用联盟卡申请??HealthKit服务时,选择已经创建的产品,勾选是否可以注册订阅通知。可以选择HTTP订阅方式,填写回调通知地址,通过测试连通性检查回调地址是否连通。目前仅支持企业开发者在Healthkit卡片中开启订阅功能。如果你的使用场景满足以下条件,也可以选择设备端订阅方式,填写应用包名和Action:使用设备端订阅方式订阅事件类型为场景目标事件,使用apk与apk之间的信息通知,详细准备步骤参见扩展能力服务开发指南。2、注册订阅记录HTTP请求,请参考新建/更新订阅记录接口POSThttps://health-api.cloud.huawei.com/healthkit/v1/subscriptions请求示例:POSThttps://health-api.cloud。huawei.com/healthkit/v1/subscriptions请求正文:POSThttps://health-api.cloud.huawei.com/healthkit/v1/subscriptionsContent-Type:application/jsonAuthorization:Bearer***x-client-id:***x-version:***x-caller-trace-id:***{“subscriberId”:“08666998-78f6-46b9-8620-faa06cdbac2b”,“eventTypes”:[{“type”:“SCENARIO_GOAL_EVENT”,"subType":"ACHIEVE","eventType":"SCENARIO_GOAL_EVENT$ACHIEVE","goalInfo":{"createTime":1654660859105,"startDay":20220608,//目标开始计算的日期。注意一定要晚于目标创建日期"recurrence":{"unit":1,//周期单位:天"count":30,//整个周期为30天"expectedAchievedCount":28},"goals":[{"goalType":1,"metricGoal":{"value":10000,//将成就值设置为10000步"fieldName":"steps","dataType":"com.huawei.continuous.steps.total"}}]}}]}3.接收HTTP请求,通知达标事件消息。具体参见订阅事件通知接口POSThttps://www.example.com/healthkit/notifications请求示例POSThttps://www.example.com/healthkit/notifications请求体POSThttps://lfhealthdev.hwcloudtest.cn/测试/healthkit/notificationsContent-Type:application/jsonx-notification-signature:***[{"appId":"101524371","subscriptionId":"3a82f885-97bf-47f8-84d1-21e558fe6e99","periodIndex":0,"periodStartDay":20220608,"periodEndDay":20220608,"goalAchieve":[{"goalType":1,"metricGoal":{"value":10000.0,"fieldName":"steps","dataType":"com.huawei.continuous.steps.total"},"achievedFlag":true//Achieved}]}4.如果需要查询某个场景的事件订阅记录,单个中对应的目标成就值期间,可以使用如下接口查询(非必要步骤)HTTP请求,参见查询场景事件结果。GEThttps://health-api.cloud.huawei.com/healthkit/v1/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord请求示例GEThttps://health-api.cloud.huawei.com/healthkit/v1/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord响应体HTTP/1.1200OKContent-type:application/json;charset=utf-8[{"openId":"MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY","appId":"101524371",“subscriptionId”:“3a82f885-97bf-47f8-84d1-21e558fe6e99”,“periodIndex”:0,“periodStartDay”:20220608,“periodEndDay”:20220608,“goalAchieve”:[{“goalType”:1,“metricGoal”:{"value":10000.0,//目标值集合"fieldName":"steps","dataType":"com.huawei.continuous.steps.total"},"achievedResult":"20023",//实际值"achievedFlag":true//已达标标记}]},{"openId":"MDFAMTAxNTI0MzcxQGQ0Y2M3N2UxZTVmNjcxNWFkMWQ5Y2JjYjlmZDZiaNTY3QDVhNmNkY2FiaMTFhYzc4NDk4NDI0MzJiaNjg0MzViaYmUyMGEzZjZkNzUzYWVjM2Q5ZTgwYWM5NTgzNmY","appId“:“101524371”,“subscriptionId”:“3a82f885-97bf-47f8-84d1-21e558fe6e99”,“periodIndex”:1,“periodStartDay”:20220609,“periodEndDay”:20220609,“goalAchieve”:[{“goalType”1,"metricGoal":{"value":10000.0,//设置目标值"fieldName":"steps","dataType":"com.huawei.continuous.steps.total"},"achievedResult":"9800",//实际值;achievedFlag":false//未实现标记}]}]更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:关注GitHub和Gitee了解HMSCore第一时间技术资讯~
