1. 服務(wù)卡片定義與核心價值
服務(wù)卡片是鴻蒙系統(tǒng)(HarmonyOS)中一種輕量級應(yīng)用界面展示形式,能夠?qū)?yīng)用的重要信息或操作前置到桌面,實現(xiàn)"服務(wù)直達、減少跳轉(zhuǎn)層級"的用戶體驗。其核心價值在于:
- 輕量化體驗:無需啟動完整應(yīng)用即可獲取關(guān)鍵信息和核心功能
- 多端適配:支持手機、平板、智慧屏等多種鴻蒙設(shè)備
- 免安裝特性:作為元服務(wù)的一部分,用戶無需顯式安裝即可使用
- 動態(tài)信息展示:支持實時數(shù)據(jù)更新,如天氣、步數(shù)、股票行情等
2. 技術(shù)架構(gòu)與核心組件
2.1 服務(wù)卡片架構(gòu)
鴻蒙服務(wù)卡片架構(gòu)包含四個核心部分:
- 卡片使用方:顯示卡片內(nèi)容的宿主應(yīng)用(如桌面),控制卡片展示位置
- 卡片提供方:提供卡片內(nèi)容的應(yīng)用,控制顯示內(nèi)容、布局和交互邏輯
- 卡片管理服務(wù):管理系統(tǒng)中所有卡片的常駐代理服務(wù),處理生命周期和刷新機制
- 卡片渲染服務(wù):管理卡片渲染實例,與卡片使用方的組件一一綁定
2.2 開發(fā)模型選擇
鴻蒙提供兩種開發(fā)模型:
| 開發(fā)模型 | 適用場景 | 技術(shù)特點 |
|---|---|---|
| Stage模型 | 復雜應(yīng)用開發(fā) | 支持ArkTS和JS兩種卡片開發(fā)方式,功能更豐富 |
| FA模型 | 輕量級應(yīng)用 | 僅支持JS卡片開發(fā),已不再主推 |
推薦使用Stage模型,其支持的ArkTS卡片相比JS卡片具有以下優(yōu)勢:
- 支持自定義動效和繪制
- 允許運行邏輯代碼
- 統(tǒng)一開發(fā)范式,提升開發(fā)效率
3. 卡片類型與規(guī)格
3.1 卡片類型
根據(jù)交互能力分為:
- 靜態(tài)卡片:僅支持基礎(chǔ)信息展示,內(nèi)存占用小,適合簡單信息展示
- 動態(tài)卡片:支持交互操作和實時數(shù)據(jù)更新,功能豐富但資源消耗較高
3.2 尺寸規(guī)格
支持多種尺寸規(guī)格,以適應(yīng)不同場景需求:
- 1×2:窄條型,適合簡單信息展示
- 2×2:正方形,基礎(chǔ)信息展示
- 2×4:長方形,可展示更多內(nèi)容和操作
- 4×4:大型卡片,適合復雜數(shù)據(jù)展示
4. 生命周期管理
卡片生命周期由FormExtensionAbility管理,核心回調(diào)方法包括:
| 方法名 | 描述 |
|---|---|
| onAddForm | 卡片被創(chuàng)建時觸發(fā) |
| onCastToNormalForm | 臨時卡片轉(zhuǎn)為常態(tài)卡片時觸發(fā) |
| onUpdateForm | 卡片需要更新時觸發(fā) |
| onFormEvent | 卡片交互事件觸發(fā)時調(diào)用 |
| onRemoveForm | 卡片被刪除時觸發(fā) |
5. 開發(fā)關(guān)鍵步驟
5.1 項目結(jié)構(gòu)
創(chuàng)建服務(wù)卡片后,項目中將新增以下核心文件:
- EntryFormAbility.ts:卡片生命周期管理文件
- WidgetCard.ets:卡片UI頁面文件(基于ArkUI)
- form_config.json:卡片配置文件
5.2 配置文件示例
{
"forms": [
{
"name": "widget",
"displayName": "服務(wù)卡片示例",
"description": "這是一個服務(wù)卡片示例",
"src": "./ets/widget/pages/WidgetCard.ets",
"uiSyntax": "arkts",
"window": {
"designWidth": 720,
"autoDesignWidth": true
},
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true,
"scheduledUpdateTime": "10:30",
"updateDuration": 1,
"defaultDimension": "2*2",
"supportDimensions": ["2*2"]
}
]
}
5.3 基礎(chǔ)UI實現(xiàn)
使用ArkTS語言開發(fā)卡片UI的簡單示例:
@Entry
@Component
struct WidgetCard {
build() {
Column() {
Image($r("app.media.icon"))
.width(40)
.height(40)
Text("服務(wù)卡片示例")
.fontSize(16)
.margin({ top: 10 })
}
.width("100%")
.height("100%")
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
}
}
6. 數(shù)據(jù)交互與刷新機制
6.1 刷新方式
鴻蒙服務(wù)卡片支持多種刷新機制:
- 主動刷新:應(yīng)用通過updateForm接口手動觸發(fā)刷新
- 定點刷新:每天固定時間點刷新(如"10:30")
- 定時刷新:按固定時間間隔刷新(單位為30分鐘)
- 動態(tài)定時刷新:設(shè)置下次刷新時間,最小間隔5分鐘
6.2 數(shù)據(jù)同步代碼示例
// 主動刷新卡片數(shù)據(jù)
import formProvider from '@ohos.app.form.formProvider';
function updateCardData(formId: string, newData: Object) {
let formBindingData = formBindingData.createFormBindingData(newData);
formProvider.updateForm(formId, formBindingData)
.then(() => {
console.log('卡片更新成功');
})
.catch((error) => {
console.error(`卡片更新失敗: ${error}`);
});
}
7. 桌面交互設(shè)計原則
7.1 交互基本原則
- 突出核心內(nèi)容:卡片應(yīng)以展示服務(wù)內(nèi)容為主,而非全是跳轉(zhuǎn)入口
- 簡化操作流程:避免復雜交互,單個卡片盡量只提供1-2個核心操作
- 避免手勢沖突:不使用左右滑動等可能與系統(tǒng)手勢沖突的交互方式
- 明確視覺層級:合理排布文本、圖片和操作區(qū)域關(guān)系
7.2 熱區(qū)設(shè)計規(guī)范
- 推薦將整張卡片作為一個熱區(qū),降低用戶操作成本
- 若需劃分多個熱區(qū),需明確區(qū)分,防止誤觸
- 可點擊元素熱區(qū)尺寸不小于32vp(物理尺寸約5mm)
8. 跨設(shè)備交互能力
鴻蒙服務(wù)卡片依托分布式能力,支持跨設(shè)備流轉(zhuǎn)和協(xié)同:
- 設(shè)備發(fā)現(xiàn)與連接:通過分布式設(shè)備管理模塊發(fā)現(xiàn)附近可用設(shè)備
- 任務(wù)遷移:將卡片任務(wù)無縫遷移到其他鴻蒙設(shè)備
- 數(shù)據(jù)同步:多設(shè)備間保持數(shù)據(jù)一致性
跨設(shè)備啟動應(yīng)用示例代碼:
// 發(fā)現(xiàn)并連接其他鴻蒙設(shè)備
import { distributedDeviceManager } from '@ohos.distributedDeviceManager';
const deviceManager = distributedDeviceManager.createDeviceManager();
const devices = deviceManager.getTrustedDeviceListSync();
// 選擇目標設(shè)備并啟動應(yīng)用
if (devices.length > 0) {
let targetDevice = devices[0];
let want = {
deviceId: targetDevice.deviceId,
bundleName: "com.example.app",
abilityName: "MainAbility"
};
context.startAbility(want);
}
9. 開發(fā)工具與環(huán)境配置
9.1 開發(fā)工具
- DevEco Studio:鴻蒙應(yīng)用開發(fā)IDE,支持卡片可視化設(shè)計
- SDK版本:需HarmonyOS SDK 3.1及以上版本
9.2 環(huán)境配置要點
- 安裝DevEco Studio并配置HarmonyOS SDK
- 開啟設(shè)備開發(fā)者模式
- 配置簽名信息
- 創(chuàng)建Atomic Service項目
- 啟用服務(wù)卡片開發(fā)支持
10. 最佳實踐與常見問題
10.1 性能優(yōu)化建議
- 控制卡片刷新頻率,避免過度消耗資源
- 簡化UI布局,減少嵌套層級
- 圖片資源適當壓縮,避免過大尺寸
- 避免在卡片中執(zhí)行復雜計算
10.2 常見問題解決
- 卡片不刷新:檢查updateEnabled配置和刷新權(quán)限
- 布局錯亂:使用響應(yīng)式布局適配不同尺寸
- 跨設(shè)備通信失敗:確保設(shè)備登錄同一華為賬號并開啟網(wǎng)絡(luò)
- 數(shù)據(jù)同步延遲:優(yōu)化數(shù)據(jù)傳輸策略,減少數(shù)據(jù)量