乐趣区

关于android:运动健康服务场景事件订阅让应用推送更懂用户

数据订阅是静止衰弱类利用中很常见的性能,用户订阅静止记录、衰弱记录等数据,当这些数据发生变化时,用户可能即时在 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

申请示例

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

申请体

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"
                        }
                    }
                ]
            }
        }
    ]
}

三、接管达标事件音讯告诉

HTTP 申请 ,请参见订阅事件告诉接口

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

申请示例

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

申请体

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 // 已达标
    }
    ]
}

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

HTTP 申请 ,请参见查问场景事件后果。

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

申请示例

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

响应体

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 // 未达标标记
    }]
    }
]

理解更多详情 >>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~

退出移动版