鸿蒙5应用分享无忧:AGC短链接服务集成指南
在移动应用生态中,高效的分享功能是提升用户增长和活跃度的关键因素。HarmonyOS 5与AppGallery Connect(AGC)的短链接服务为开发者提供了强大的链接生成和管理能力。本文将详细介绍如何在HarmonyOS 5应用中集成AGC短链接服务,实现内容的高效分享。
一、AGC短链接服务概述
AGC短链接服务提供以下核心能力:
长链接转短链:将冗长的URL转换为简洁的短链接
深度链接支持:支持直接跳转到应用内指定页面
动态参数解析:自动解析链接中的参数并传递到应用
数据分析:跟踪链接的点击量、来源等数据
跨平台支持:生成的链接可在各种平台和浏览器中使用
二、环境准备
- 启用AGC短链接服务
登录AppGallery Connect
选择您的项目,进入"增长" > "短链接服务"
启用短链接服务并配置默认参数 - 添加依赖
在模块级build.gradle中添加依赖:
dependencies {
implementation 'com.huawei.agconnect:agconnect-applinking-harmony:1.6.0.300'
}
三、基础短链接生成
- 创建简单短链接
import agconnect from '@hw-agconnect/api';
import '@hw-agconnect/applinking-harmony';
async function createShortLink(longUrl: string): Promise
try {
const linking = agconnect.appLinking();
const builder = linking.createShortLinkBuilder();
builder.setLongLink(longUrl);
builder.setCampaignName('user_share');
const shortLink = await builder.buildShortLink();
console.log('短链接生成成功:', shortLink);
return shortLink;
} catch (error) {
console.error('短链接生成失败:', error);
throw error;
}
}
// 使用示例
const longUrl = 'https://example.com/product?id=123';
const shortLink = await createShortLink(longUrl);
2. 创建带参数的深度链接
async function createDeepLink(params: object): Promise
try {
const linking = agconnect.appLinking();
const builder = linking.createShortLinkBuilder();
// 设置深度链接域名(需在AGC控制台配置)
builder.setDomain('example.hwapplink.huawei.com');
// 添加自定义参数
Object.entries(params).forEach(([key, value]) => {
builder.setParameter(key, value.toString());
});
// 设置Android平台参数(可选)
builder.setAndroidParameter({
// 应用未安装时跳转的URL
fallbackUrl: 'https://example.com/download',
// 直接打开应用不显示应用选择对话框
openType: 'AGConnectAppLinkingAndroidOpenType.APP'
});
const deepLink = await builder.buildShortLink();
console.log('深度链接生成成功:', deepLink);
return deepLink;
} catch (error) {
console.error('深度链接生成失败:', error);
throw error;
}
}
// 使用示例
const productLink = await createDeepLink({
page: 'product',
id: '123',
source: 'share'
});
四、高级短链接配置
- 设置社交平台预览信息
async function createSocialLink(content: any): Promise{
const linking = agconnect.appLinking();
const builder = linking.createShortLinkBuilder();
// 设置社交分享预览信息
builder.setSocialMetaInfo({
title: content.title,
description: content.description,
imageUrl: content.imageUrl
});
// 设置iOS平台参数(可选)
builder.setIOSParameter({
bundleId: 'com.example.app',
fallbackUrl: 'https://example.com/ios-download'
});
// 设置有效期(单位:秒)
builder.setExpireTime(7 * 24 * 60 * 60); // 7天有效期
return await builder.buildShortLink();
}
2. 批量生成短链接
async function batchCreateLinks(urls: string[]): Promise<string[]> {
const linking = agconnect.appLinking();
const requests = urls.map(url => {
const builder = linking.createShortLinkBuilder();
builder.setLongLink(url);
return builder;
});
try {
const results = await linking.buildShortLinks(requests);
return results.map(res => res.shortLink);
} catch (error) {
console.error('批量生成短链接失败:', error);
throw error;
}
}
五、处理深度链接
- 配置应用接收深度链接
在config.json中添加意图过滤器:
{
"abilities": [
{
"name": "MainAbility",
"label": "MainAbility",
"type": "page",
"skills": [
{
"actions": [
"action.system.home"
],
"entities": [
"entity.system.home"
],
"uris": [
{
"scheme": "https",
"host": "example.hwapplink.huawei.com",
"path": "/*"
}
]
}
]
}
]
}
2. 解析传入的深度链接
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
@Entry
@Component
struct MainPage {
@State receivedParams: object = {};
onPageShow() {
this.handleDeepLink();
}
async handleDeepLink() {
try {
const linking = agconnect.appLinking();
const appLink = await linking.getAppLinking();
if (appLink) {
// 获取所有参数
this.receivedParams = appLink.getParameters();
console.log('收到深度链接参数:', this.receivedParams);
// 根据参数跳转到对应页面
this.navigateToTargetPage();
}
} catch (error) {
console.error('处理深度链接失败:', error);
}
}
navigateToTargetPage() {
if (this.receivedParams['page'] === 'product') {
// 跳转到产品详情页
router.push({
url: 'pages/ProductDetail',
params: { id: this.receivedParams['id'] }
});
}
// 其他页面处理...
}
}
六、分享功能完整实现
- 创建分享服务
class ShareService {
private linking = agconnect.appLinking();
async shareProduct(product: Product): Promise
try {
// 生成深度链接
const deepLink = await this.createProductLink(product);
// 使用系统分享
const systemShare = await import('@ohos.systemShare');
systemShare.share({
title: `分享产品: ${product.name}`,
text: `看看这个产品: ${product.name}`,
link: deepLink
});
} catch (error) {
console.error('分享失败:', error);
throw error;
}
}
private async createProductLink(product: Product): Promise
const builder = this.linking.createShortLinkBuilder();
// 设置深度链接参数
builder.setDomain('example.hwapplink.huawei.com');
builder.setParameter('page', 'product');
builder.setParameter('id', product.id);
builder.setParameter('source', 'share');
// 设置社交预览信息
builder.setSocialMetaInfo({
title: product.name,
description: product.description,
imageUrl: product.thumbnail
});
// 设置平台参数
builder.setAndroidParameter({
fallbackUrl: 'https://example.com/download',
openType: 'AGConnectAppLinkingAndroidOpenType.APP'
});
return await builder.buildShortLink();
}
}
2. 在UI中使用分享
@Entry
@Component
struct ProductDetailPage {
private shareService = new ShareService();
@State product: Product = { id: '123', name: '示例产品', description: '...' };
build() {
Column() {
// 产品详情UI...
Button('分享产品')
.onClick(() => this.shareProduct())
}
}
async shareProduct() {
try {
await this.shareService.shareProduct(this.product);
showToast('分享成功');
} catch (error) {
showToast('分享失败,请重试');
}
}
}
七、数据分析与监控
- 跟踪链接点击
class AnalyticsService {
private linking = agconnect.appLinking();
async trackLinkPerformance(linkId: string) {
try {
const stats = await this.linking.getLinkStats(linkId);
console.log('链接统计数据:', {
clicks: stats.clicks,
uniqueUsers: stats.uniqueUsers,
platforms: stats.platforms
});
return stats;
} catch (error) {
console.error('获取链接统计失败:', error);
throw error;
}
}
async trackAllLinks() {
const links = await this.linking.getAllLinks();
return Promise.all(links.map(link => this.trackLinkPerformance(link.id)));
}
}
2. 在AGC控制台查看数据
登录AGC控制台
导航到"增长" > "短链接服务"
选择您的项目,查看所有短链接的详细分析数据
八、最佳实践
参数命名规范:使用一致的参数命名规则,如小写字母加下划线
错误处理:为所有链接生成操作添加适当的错误处理
测试验证:在发布前测试所有可能的链接场景
参数验证:处理传入链接时验证参数的有效性
用户体验:为未安装应用的用户提供友好的跳转体验
九、常见问题解决
- 链接无法跳转到应用
检查:
是否正确配置了意图过滤器
域名是否在AGC控制台正确配置
测试设备是否安装了应用
2. 参数丢失或错误
解决方案:
确保参数编码正确
在接收端验证参数存在性
使用AGC控制台测试链接功能
3. 链接生成缓慢
优化建议:
缓存常用链接
在后台预生成可能需要的链接
使用批量生成接口
结语
通过集成AGC短链接服务,HarmonyOS 5应用可以轻松实现高效的分享功能,同时获得详细的链接性能分析。本文提供的代码示例涵盖了从基础到高级的短链接使用场景,开发者可以根据实际需求进行调整和扩展。

浙公网安备 33010602011771号