HarmonyOS卡片刷新服务,信息实时更新一目了然

如今衣食住行娱乐影音等App占据了大多数人的手机,一部手机可以满足日常大多需求,但对需要经常查看或进行简单操作的场景来说,总需要用户点开App操作未免过于繁琐。

针对该问题, HarmonyOS SDK为用户提供了Form Kit(卡片开发服务),您可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的,用户无需打开App,根据引导将卡片添加到桌面,即可随时随地查看服务的重要信息和动态变化。

面对需要实时更新信息的App卡片,Push Kit (推送服务)向开发者提供了卡片刷新服务。应用通过集成Push Kit后获取Push Token,基于Push Kit的系统级通道,便可以在合适场景向用户即时推送卡片内容,从而提升用户的感知度和活跃度。

能力优势

可靠、稳定

应用无论是否在后台运行,通过Push Kit都能即时刷新服务内容。通过华为终端设备的长连接,充分保障刷新内容送达;系统级通道最高可提供每秒千万级的推送速度。

实时、灵活

由开发者在合适场景即时推送卡片封面内容,实时更新;支持图片、文本等多种格式刷新;并及时返回送达回执。

开发步骤

为方便App开发者接入,仅需五步即可完成卡片刷新功能的开发及卡片内容刷新。

1.参见创建一个ArkTS卡片,完成本地服务卡片的创建。

2.在项目模块级别下的src/main/resources/base/profile/form_config.json中配置dataProxyEnabled字段为true,开启卡片代理刷新功能。

{
  "forms": [
    {
      "name": "WidgetCard",
      "src": "./ets/widget/pages/WidgetCard.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDefault": true,
      "updateEnabled": true,
      "updateDuration": 1,
      "scheduledUpdateTime": "10:30",
      "defaultDimension": "2*2",
      "supportDimensions": ["2*2"],
      "dataProxyEnabled": true
    }
  ]
}

3.在卡片生命周期管理文件(下以EntryFormAbility为例)的onAddForm()回调中获取formId,定义需要在卡片页面文件(下以WidgetCard为例)中和通过Push Kit要刷新的字段,如下以text_key和image_key为例。

import { formBindingData, formInfo, FormExtensionAbility } from '@kit.FormKit';
import { Want } from '@kit.AbilityKit';
 
export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want: Want): formBindingData.FormBindingData {
    // 获取formId
    const formId = want.parameters![formInfo.FormParam.IDENTITY_KEY] as string;
 
    // 定义需要在WidgetCard中刷新的字段
    class CreateFormData {
      formId: string = '';
      text_key: string = '';
      image_key: string = '';
    }
 
    const obj: CreateFormData = {
      formId: formId,
      text_key: '默认文本',
      image_key: '',
    }
    const bindingData: formBindingData.FormBindingData = formBindingData.createFormBindingData(obj);
 
    // 定义需要通过Push Kit代理刷新的字段,每个key均需要在上面bindingData中定义
    const text_key: formBindingData.ProxyData = {
       key: 'text_key',
       subscriberId: formId,
    };
    const image_key: formBindingData.ProxyData = {
       key: 'image_key',
       subscriberId: formId,
    };
    bindingData.proxies = [text_key, image_key];
    return bindingData;
  }
}

4.卡片页面文件( src/main/ets/widget/pages/WidgetCard.ets为例)中,创建LocalStorage变量并与@Entry装饰器绑定,使用@LocalStorageProp装饰器创建key-value的变量。

本文创建了formId、text和image三个变量,对应的key为formId、text_key和image_key,需要注意的是卡片页面布局中image对应的组件是Image图片组件,图片组件传递的变量必须以 memory:// 开头。

// 定义页面级的UI状态存储LocalStorage
const storage = new LocalStorage();
 
// 绑定
@Entry(storage)
@Component
struct WidgetCard {
  @LocalStorageProp('formId') formId: string = '';
  @LocalStorageProp('text_key') text: string = '';
  @LocalStorageProp('image_key') image: string = '';
 
  build() {
    Flex({ direction: FlexDirection.Column }) {
      Row() {
        Text() {
          // Span是Text组件的子组件,用于显示行内文本
          Span('formID:')
          Span(this.formId)
        }
        .fontSize(10)
      }
 
      Row() {
        Text() {
          Span('文本:')
          Span(this.text)
        }
        .fontSize(10)
      }
 
      Row() {
        if (this.image) {
          Image('memory://' + this.image).height(80)
        }
      }
    }
    .padding(10)
  }
}

5.建议您将formId、pushToken等信息上报到应用服务端,用于向应用发送卡片刷新消息。请参见指导获取Push Token

// 以下为伪代码
import { Want } from '@kit.AbilityKit';
import { pushService } from '@kit.PushKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { formInfo } from '@kit.FormKit';
 
async function saveFormInfo(want: Want): Promise<void> {
  try {
    const formId = want.parameters![formInfo.FormParam.IDENTITY_KEY] as string;
    const moduleName = want.moduleName;
    const abilityName = want.abilityName;
    const formName = want.parameters![formInfo.FormParam.NAME_KEY] as string;
    const pushToken: string = await pushService.getToken();
 
    // 将formId, moduleName, abilityName, formName, pushToken 上报到应用服务端
  } catch (err) {
    let e: BusinessError = err as BusinessError;
    hilog.error(0x0000, 'testTag', 'Save form info failed: %{public}s', e.message);
  }
}

6.应用服务端调用REST API推送卡片刷新消息,消息详情可参见场景化消息API接口功能介绍,请求示例如下:

// Request URL
POST https://push-api.cloud.huawei.com/v3/[projectId]/messages:send
 
// Request Header
Content-Type: application/json
Authorization: Bearer eyJr*****OiIx---****.eyJh*****iJodHR--***.QRod*****4Gp---****
push-type: 1
 
// Request Body
{
    "payload": {
    "moduleName": "entry",
    "abilityName": "EntryFormAbility",
    "formName": "widget",
    "formId": 423434262,
    "version": 123456,
    "formData": {
      "text_key": "刷新文本内容"
    },
    "images": [
      {
        "keyName": "image_key",
        "url": "***",
        "require": 1
      }
    ]
  },
  "target": {
    "token": [
      "IQAAAAC*************************dRH7_bPbfMrVfsYw"
    ]
  },
  "pushOptions": {
     "testMessage": true
  }
}

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于 HarmonyOS 的家庭收支记录系统是一个方便实用的工具,可以帮助家庭成员轻松地记录和管理家庭的日常收入和支出。这个系统可以在各种智能设备上运行,如智能手机、平板电脑和智能电视,提供统一的界面和使用体验。 首先,这个系统具有用户友好的界面设计,简洁直观,方便使用。家庭成员可以轻松地添加新的收入和支出项目,并设置不同的分类和标签。系统会自动计算总收入和总支出,并生成详细的统计报告,使家庭成员能够清晰地了解家庭的财务状况。 其次,这个系统还可以与家庭成员的银行账户和支付平台进行连接,将收入和支出与实际的财务交易进行匹配。家庭成员可以设置提醒功能,定期查看并确认各项交易的准确性,避免出现错误和遗漏。 此外,这个系统还提供了可定制的预算管理功能。家庭成员可以设定各种预算,如家庭开销、食品费用、教育支出等,系统会自动追踪和比较实际支出与预算,帮助家庭成员更好地控制和规划家庭的财务状况。 最后,这个系统还支持多人使用和数据共享。家庭成员可以创建个人账户,并将其与其他家庭成员进行关联,实现数据实时同步和共享。这样,家庭成员可以随时随地查看和管理家庭的收支记录,实现信息共享和协作。 总之,基于 HarmonyOS 的家庭收支记录系统为家庭提供了一个高效便捷的工具,帮助家庭成员实时记录和管理家庭的财务状况,进一步提高家庭的财务管理水平。 ### 回答2: 基于HarmonyOS的家庭收支记录系统是一款方便实用的软件,可以帮助家庭轻松管理和追踪家庭的财务状况。 首先,这个系统具有直观的用户界面,使用户能够快速了解家庭的收入和支出情况。用户可以通过简单的操作,录入家庭的收入来源和支出项目,系统会自动计算总收入和总支出,并提供相应的图表和图形展示给用户,让用户一目了然了解家庭的财务情况。 其次,这个系统具有智能化的功能。它可以根据用户的使用习惯和历史数据,分析和预测家庭的财务状况,提供合理的建议和规划。例如,根据过去几个月的消费习惯,系统可以提醒用户是否有不必要的开支,帮助用户更好地控制家庭支出,避免不必要的浪费。 此外,这个系统还可以与家庭成员共享。每个家庭成员都可以通过自己的账号登录系统,实时查看家庭的收支情况。这样,全家人都能参与进来,共同管理家庭财务,提高家庭财务管理的效率。 最后,这个系统还提供了安全的存储和备份机制。用户可以将家庭财务数据存储在云端,避免数据丢失的风险。同时,用户可以随时进行数据备份,以防意外情况发生时能够快速恢复数据。 总之,基于HarmonyOS的家庭收支记录系统是一款功能强大、易于使用的财务管理工具。它能够帮助家庭更好地管理和控制家庭的财务,并提供智能化的分析和预测,让家庭成员共同参与财务管理,实现家庭财务的稳定和可持续发展。 ### 回答3: 基于HarmonyOS的家庭收支记录系统是一个能够帮助家庭成员记录和管理个人和家庭的财务状况的应用程序。它具有以下特点: 首先,该系统可以实时记录和跟踪家庭成员的收入和支出。通过输入和统计每个家庭成员的财务数据,系统可以自动生成个人和全家的收支报表。这样,家庭成员可以清晰地了解自己的收入来源和支出去向,更好地控制和管理财务。 其次,该系统提供了多种可视化的图表和图形展示功能。通过可视化的方式呈现收支数据,用户可以直观地了解财务情况,例如支出类别分布、收入变化趋势等。这不仅使家庭成员更容易理解自己的财务状况,还能帮助他们更好地做出科学合理的理财决策。 此外,该系统支持家庭成员间的数据同步和共享。每个家庭成员可以通过个人的HarmonyOS设备使用该系统,并将自己的收支数据存储在云端。这样,家庭成员们可以方便地共享和比较各自的财务情况,促进互相学习和交流,更好地实现家庭内部的财务协调。 最后,该系统还提供了个性化的财务建议和预算功能。基于家庭成员的财务数据和目标,系统可以根据算法生成个性化的理财建议和预算规划。家庭成员可以根据系统的建议进行预算调整和支出控制,帮助他们更好地实现财务目标。 总之,基于HarmonyOS的家庭收支记录系统可以帮助家庭成员更好地管理和控制个人和家庭的收支情况。它的实时记录、可视化展示、数据同步共享和个性化建议等功能,将帮助家庭成员更科学地进行理财规划,实现财务目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值