集成AGC分析服务:洞察鸿蒙5用户行为数据
一、AGC分析服务概述
AppGallery Connect(AGC)分析服务为鸿蒙5应用提供了强大的用户行为分析能力,帮助开发者深入理解用户行为、优化产品体验并提升业务指标。主要功能包括:
用户行为追踪:记录用户在应用内的操作路径
事件分析:自定义关键事件跟踪
用户分群:基于行为特征划分用户群体
漏斗分析:转化路径可视化
留存分析:用户活跃度监测
实时看板:数据实时可视化
二、环境配置与初始化
- 在AGC控制台启用分析服务
登录AGC控制台
选择目标项目和应用
进入"增长" → "分析"服务
启用分析服务并配置数据收集策略 - 项目依赖配置
在entry/build.gradle中添加依赖:
dependencies {
implementation 'com.huawei.agconnect:agconnect-analytics-harmony:1.6.5.300'
}
3. 初始化分析服务
在EntryAbility的onCreate中初始化:
import agconnect from '@hw-agconnect/api-harmony';
import analytics from '@hw-agconnect/analytics-harmony';
export default class EntryAbility extends Ability {
onCreate(want, launchParam) {
// 初始化AGC核心
agconnect.instance().init(this.context);
// 初始化分析服务
analytics.instance().init(this.context);
// 配置分析参数
const config = {
enableCollect: true, // 开启数据收集
enableDebugLog: true, // 调试模式下输出日志
uploadInterval: 60, // 数据上报间隔(秒)
sessionDuration: 30 // 会话超时时间(分钟)
};
analytics.instance().setConfig(config);
// 设置用户属性(可选)
analytics.instance().setUserProfile({
app_language: 'zh-CN',
app_theme: 'light'
});
}
}
三、基础数据收集
- 自动收集的事件
AGC分析服务自动收集以下事件:
首次启动:first_open
应用启动:app_start
应用退出:app_exit
屏幕浏览:screen_view
用户活跃度:user_engagement
2. 手动记录屏幕浏览
import analytics from '@hw-agconnect/analytics-harmony';
@Entry
@Component
struct ProductDetailPage {
onPageShow() {
// 手动记录屏幕浏览
analytics.instance().logScreenView({
screen_name: 'product_detail',
screen_class: 'ProductDetailPage',
product_id: '12345'
});
}
build() {
// 页面内容...
}
}
四、自定义事件跟踪
- 定义关键事件
// 在全局常量中定义事件名称
const AnalyticsEvents = {
LOGIN: 'user_login',
SEARCH: 'search_product',
ADD_TO_CART: 'add_to_cart',
PURCHASE: 'complete_purchase',
SHARE: 'share_product'
};
// 示例:记录搜索事件
function trackSearch(keyword: string, resultCount: number) {
analytics.instance().logEvent(AnalyticsEvents.SEARCH, {
search_term: keyword,
result_count: resultCount,
search_category: 'all'
});
}
// 示例:记录添加到购物车事件
function trackAddToCart(productId: string, price: number, quantity: number = 1) {
analytics.instance().logEvent(AnalyticsEvents.ADD_TO_CART, {
product_id: productId,
price: price,
quantity: quantity,
currency: 'CNY'
});
}
2. 电商应用完整示例
@Entry
@Component
struct ECommerceApp {
// 搜索功能
@State searchKeyword: string = '';
// 搜索商品
async searchProducts() {
try {
const results = await fetchProducts(this.searchKeyword);
// 记录搜索事件
trackSearch(this.searchKeyword, results.length);
// 显示结果...
} catch (error) {
// 记录搜索失败事件
analytics.instance().logEvent('search_failed', {
error: error.message,
keyword: this.searchKeyword
});
}
}
// 添加到购物车
async addToCart(product: Product) {
try {
await addProductToCart(product);
// 记录添加购物车事件
trackAddToCart(product.id, product.price);
// 显示成功提示
promptAction.showToast({ message: '已添加到购物车' });
} catch (error) {
// 记录失败事件
analytics.instance().logEvent('add_to_cart_failed', {
product_id: product.id,
error: error.message
});
}
}
build() {
Column() {
// 搜索框
TextInput({ placeholder: '搜索商品...' })
.onChange((value: string) => {
this.searchKeyword = value;
})
.onSubmit(() => this.searchProducts())
// 商品列表...
}
}
}
五、用户属性与分群
-
设置用户属性
// 设置用户级别属性
function setUserProperties(user: User) {
analytics.instance().setUserId(user.id);analytics.instance().setUserProfile({
user_level: user.level,
membership_type: user.membership,
registration_date: user.registerDate,
last_login: new Date().toISOString()
});
}
// 示例:用户登录后调用
async function handleUserLogin(user: User) {
await login(user);
setUserProperties(user);
// 记录登录事件
analytics.instance().logEvent(AnalyticsEvents.LOGIN, {
method: 'password',
first_login: user.isNewUser
});
}
2. 创建用户分群
在AGC控制台中可以基于以下条件创建用户分群:
设备属性(型号、操作系统版本)
用户属性(会员等级、注册日期)
行为特征(购买频率、使用时长)
事件触发(完成特定事件的用户)
六、漏斗分析与转化路径
- 定义转化漏斗
// 电商购买漏斗
const PurchaseFunnelSteps = [
'view_product', // 浏览商品
'add_to_cart', // 加入购物车
'start_checkout', // 开始结算
'enter_payment', // 输入支付信息
'complete_purchase' // 完成购买
];
// 记录漏斗步骤
function trackFunnelStep(step: string, stepNumber: number, productId?: string) {
analytics.instance().logEvent(step, {
funnel_name: 'purchase_funnel',
step_number: stepNumber,
step_name: step,
...(productId && { product_id: productId })
});
}
// 示例:在商品详情页
@Entry
@Component
struct ProductDetailPage {
onPageShow() {
// 记录第一步:浏览商品
trackFunnelStep(PurchaseFunnelSteps[0], 1, this.productId);
}
addToCart() {
// 记录第二步:加入购物车
trackFunnelStep(PurchaseFunnelSteps[1], 2, this.productId);
}
}
2. 在AGC控制台分析漏斗
进入"分析" → "漏斗分析"
创建新漏斗,设置各步骤对应的事件
设置时间范围(如7天内完成购买)
分析转化率和流失点
七、留存分析与用户活跃度
-
记录关键活跃事件
// 记录用户每日活跃
function trackDailyEngagement() {
// 检查是否今天已经记录过
const lastRecorded = storage.get('last_engagement_record');
const today = new Date().toDateString();if (lastRecorded !== today) {
analytics.instance().logEvent('daily_engagement', {
session_count: 1,
features_used: ['home', 'search', 'profile']
});storage.set('last_engagement_record', today);}
}
// 在应用启动时调用
trackDailyEngagement();
2. 分析留存数据
在AGC控制台的"留存分析"页面可以查看:
次日留存:首次使用后第二天返回的用户比例
7日留存:首次使用后第7天仍活跃的用户比例
30日留存:首次使用后第30天仍活跃的用户比例
回访频率:用户平均使用间隔
八、高级分析功能
- 事件级参数配置
// 在应用初始化时配置事件参数
analytics.instance().setEventConfig({
event_name: 'complete_purchase',
parameters: {
'product_id': {
data_type: analytics.ParamType.STRING,
max_length: 64
},
'value': {
data_type: analytics.ParamType.DOUBLE,
max_value: 1000000
}
}
});
// 记录购买事件
function trackPurchase(order: Order) {
analytics.instance().logEvent('complete_purchase', {
transaction_id: order.id,
product_id: order.productId,
value: order.amount,
currency: order.currency,
payment_method: order.paymentType
});
}
2. 实时事件调试
// 启用实时调试模式
if (process.env.NODE_ENV === 'development') {
analytics.instance().setDebugMode(true);
// 监听事件记录
analytics.instance().onEventLogged((eventName, params) => {
console.debug(`[Analytics] Event: ${eventName}`, params);
});
}
九、数据隐私与合规
-
遵守隐私政策
// 提供隐私选项控制
class PrivacyManager {
static enableAnalytics(enabled: boolean) {
analytics.instance().setAnalyticsEnabled(enabled);if (!enabled) { // 清除设备ID analytics.instance().resetAnalyticsData(); }}
static showConsentDialog() {
promptAction.showDialog({
title: '数据收集声明',
message: '我们使用数据分析改进产品体验,是否同意收集使用数据?',
buttons: [
{ text: '同意', color: '#007DFF' },
{ text: '拒绝', color: '#FF2D2D' }
]
}).then((result) => {
PrivacyManager.enableAnalytics(result.index === 0);
});
}
}
// 在应用启动时调用
PrivacyManager.showConsentDialog();
2. 数据过滤与采样
// 配置数据采样率
analytics.instance().setConfig({
// 其他配置...
sampleRate: 0.8 // 80%的设备上报数据
});
// 过滤敏感信息
analytics.instance().addEventFilter((eventName, params) => {
if (eventName === 'complete_purchase') {
// 移除敏感字段
const { creditCardNumber, ...safeParams } = params;
return safeParams;
}
return params;
});
十、实战案例:新闻阅读应用
// 定义新闻应用事件
const NewsAppEvents = {
ARTICLE_VIEW: 'view_article',
ARTICLE_SHARE: 'share_article',
COMMENT_POST: 'post_comment',
PREFERENCE_SET: 'set_preference',
NOTIFICATION_ENABLE: 'enable_notification'
};
// 新闻文章组件
@Component
struct NewsArticle {
@Prop article: Article;
@State comments: Comment[] = [];
@State showComments: boolean = false;
aboutToAppear() {
// 记录文章浏览
analytics.instance().logEvent(NewsAppEvents.ARTICLE_VIEW, {
article_id: this.article.id,
category: this.article.category,
author: this.article.author,
word_count: this.article.wordCount
});
}
shareArticle() {
// 实现分享逻辑...
// 记录分享事件
analytics.instance().logEvent(NewsAppEvents.ARTICLE_SHARE, {
article_id: this.article.id,
share_method: 'system_share',
share_platform: 'wechat' // 实际从分享API获取
});
}
postComment(text: string) {
// 实现评论提交...
// 记录评论事件
analytics.instance().logEvent(NewsAppEvents.COMMENT_POST, {
article_id: this.article.id,
comment_length: text.length,
has_emoji: text.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/) !== null
});
}
build() {
Column() {
// 文章内容...
Button('分享')
.onClick(() => this.shareArticle())
Button(this.showComments ? '隐藏评论' : '查看评论')
.onClick(() => {
this.showComments = !this.showComments;
if (this.showComments && this.comments.length === 0) {
this.loadComments();
}
})
if (this.showComments) {
CommentList({
comments: this.comments,
onPostComment: (text) => this.postComment(text)
})
}
}
}
}
// 用户偏好设置
@Entry
@Component
struct SettingsPage {
@State notificationEnabled: boolean = false;
toggleNotification(enabled: boolean) {
// 实现通知设置...
this.notificationEnabled = enabled;
// 记录偏好设置变更
analytics.instance().logEvent(NewsAppEvents.PREFERENCE_SET, {
setting_name: 'notifications',
new_value: enabled,
changed_at: new Date().toISOString()
});
if (enabled) {
// 记录通知启用事件
analytics.instance().logEvent(NewsAppEvents.NOTIFICATION_ENABLE, {
permission_granted: true,
prompt_count: 1 // 记录是第几次请求权限
});
}
}
build() {
Column() {
Toggle({ type: ToggleType.Switch, isOn: this.notificationEnabled })
.onChange((isOn) => this.toggleNotification(isOn))
.text('接收推送通知')
}
}
}
十一、总结与最佳实践
通过AGC分析服务,我们可以:
全面理解用户:从安装到卸载的全生命周期行为分析
优化产品体验:基于数据驱动决策改进关键路径
提升业务指标:通过漏斗分析提高转化率
精准运营:基于用户分群实施差异化策略
最佳实践建议:
事件设计原则:
命名清晰:使用动词_名词格式(如view_product)
参数一致:相同含义的参数使用相同名称
适度抽象:平衡具体性和通用性
分析策略:
// 示例:关键事件优先级管理
const EventPriority = {
HIGH: ['complete_purchase', 'user_signup'], // 实时上报
MEDIUM: ['add_to_cart', 'search'], // 每小时上报
LOW: ['page_view', 'button_click'] // 每天批量上报
};
function logEventWithPriority(eventName: string, params: object) {
const priority = Object.entries(EventPriority).find(
([_, events]) => events.includes(eventName)
)?.[0] || 'MEDIUM';
analytics.instance().logEvent(eventName, {
...params,
_priority: priority
});
}
数据质量保障:
开发环境使用测试数据标记
if (process.env.NODE_ENV !== 'production') {
analytics.instance().setUserProfile({
test_data: true,
environment: process.env.NODE_ENV
});
}
定期验证数据准确性
建立数据字典维护事件定义
性能与成本平衡:
重要事件实时上报
次要事件批量上报
合理使用数据采样
通过合理利用AGC分析服务,结合鸿蒙5的设备能力,开发者可以获得深入的业务洞察,打造真正以用户为中心的高质量应用。

浙公网安备 33010602011771号