• 运动健康服务场景事件订阅,让应用推送“更懂用户”


    数据订阅是运动健康类应用中很常见的功能,用户订阅运动记录、健康记录等数据,当这些数据发生变化时,用户能够即时在App上接收到推送通知。

    例如某位用户最近正在锻炼身体,为自己设定了每天走1万步,每周达成3次的目标;常规的数据订阅可以做到每天给用户推送当天步数,但用户需要自己进行二次计算才能得知自己是否完成了本周目标。

    而场景事件订阅可以弥补这个缺点。场景事件订阅不仅仅是针对某一种数据类型,而是偏重由一种或者多种数据类型组合起来的场景。还是以上面这个情景为例,一周内有任意3天走到1万步就是一个场景,若用户达成了场景目标,才会收到应用的推送提醒。

    华为运动健康服务(Health Kit)不仅支持数据事件订阅,新版本还增加了场景事件订阅能力,让运动健康数据订阅更懂用户。那开发者该如何实现该能力呢?以下是详细的集成步骤。

    集成方法

    一、注册成为订阅者

    在联盟卡片申请Health Kit服务时,选择已经创建的产品,勾选注册订阅通知能力。可选择HTTP订阅方式,填写回调通知地址,并通过测试连通性来检查回调地址是否连通。目前只支持企业开发者在Healthkit卡片中开启订阅功能。

    如果你的使用场景满足如下条件,也可以选择端侧订阅方式,填写应用包名与Action:

    1. 使用端侧订阅方式

    2. 订阅事件类型是场景目标事件

    3. 使用apk与apk间信息通知

    详细准备步骤可参考扩展能力服务开发指南

    二、注册订阅记录

    HTTP请求,请参见新增/更新订阅记录接口

    POST
    https://health-api.cloud.huawei.com/healthkit/v1/subscriptions
    • 1

    请求示例

    POST
    https://health-api.cloud.huawei.com/healthkit/v1/subscriptions
    • 1

    请求体

    POST
    https://health-api.cloud.huawei.com/healthkit/v1/subscriptions
    Content-Type: application/json
    Authorization: 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"
                            }
                        }
                    ]
                }
            }
        ]
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    三、接收达标事件消息通知

    HTTP请求,请参见订阅事件通知接口

    POST
    https://www.example.com/healthkit/notifications
    • 1

    请求示例

    POST
    https://www.example.com/healthkit/notifications
    • 1

    请求体

    POST
    https://lfhealthdev.hwcloudtest.cn/test/healthkit/notifications
    Content-Type: application/json
    x-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 //已达标
        }
        ]
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    四、若需要查询某个场景事件订阅记录,对应的单周期内的目标达成结果值,可使用如下接口查询。(非必要步骤)

    HTTP请求,请参见查询场景事件结果

    GET
    https://health-api.cloud.huawei.com/healthkit/v1/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord
    • 1

    请求示例

    GET
    https://health-api.cloud.huawei.com/healthkit/v1/subscriptions/3a82f885-97bf-47f8-84d1-21e558fe6e99/achievedRecord
    • 1

    响应体

    HTTP/1.1 200 OK
    Content-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 // 未达标标记
        }]
        }
    ]
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    了解更多详情>>

    访问华为开发者联盟官网
    获取开发指导文档
    华为移动服务开源仓库地址:GitHubGitee

    关注我们,第一时间了解 HMS Core 最新技术资讯~

  • 相关阅读:
    20230925工作心得
    美团面试——餐饮系统开发
    数据结构算法合集——链表篇
    基于低代码平台的PLM系统,实现科学业务管理
    Mysql 8.0 安装
    计算机毕业设计Java校园招聘系统设计(系统+源码+mysql数据库+lw文档)
    数据存储(二)WebStorage 之 IndexedDB
    苹果电脑好用的剪切板管理工具 Paste激活中文版最新
    [JS入门到进阶] 手写裁剪图片的工具,并部署。一键裁剪掘金文章封面
    Hadoop3教程(三十四):(生产调优篇)MapReduce生产经验汇总
  • 原文地址:https://blog.csdn.net/HUAWEI_HMSCore/article/details/126279291