鸿蒙5应用分享无忧:AGC短链接服务集成指南

在移动应用生态中,高效的分享功能是提升用户增长和活跃度的关键因素。HarmonyOS 5与AppGallery Connect(AGC)的短链接服务为开发者提供了强大的链接生成和管理能力。本文将详细介绍如何在HarmonyOS 5应用中集成AGC短链接服务,实现内容的高效分享。

一、AGC短链接服务概述
AGC短链接服务提供以下核心能力:

​​长链接转短链​​:将冗长的URL转换为简洁的短链接
​​深度链接支持​​:支持直接跳转到应用内指定页面
​​动态参数解析​​:自动解析链接中的参数并传递到应用
​​数据分析​​:跟踪链接的点击量、来源等数据
​​跨平台支持​​:生成的链接可在各种平台和浏览器中使用
二、环境准备

  1. 启用AGC短链接服务
    登录AppGallery Connect
    选择您的项目,进入"增长" > "短链接服务"
    启用短链接服务并配置默认参数
  2. 添加依赖
    在模块级build.gradle中添加依赖:

dependencies {
implementation 'com.huawei.agconnect:agconnect-applinking-harmony:1.6.0.300'
}
三、基础短链接生成

  1. 创建简单短链接
    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'
});
四、高级短链接配置

  1. 设置社交平台预览信息
    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;
}
}
五、处理深度链接

  1. 配置应用接收深度链接
    在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'] }
});
}
// 其他页面处理...
}
}
六、分享功能完整实现

  1. 创建分享服务
    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('分享失败,请重试');
}
}
}
七、数据分析与监控

  1. 跟踪链接点击
    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控制台
导航到"增长" > "短链接服务"
选择您的项目,查看所有短链接的详细分析数据
八、最佳实践
​​参数命名规范​​:使用一致的参数命名规则,如小写字母加下划线
​​错误处理​​:为所有链接生成操作添加适当的错误处理
​​测试验证​​:在发布前测试所有可能的链接场景
​​参数验证​​:处理传入链接时验证参数的有效性
​​用户体验​​:为未安装应用的用户提供友好的跳转体验
九、常见问题解决

  1. 链接无法跳转到应用
    检查:

是否正确配置了意图过滤器
域名是否在AGC控制台正确配置
测试设备是否安装了应用
2. 参数丢失或错误
解决方案:

确保参数编码正确
在接收端验证参数存在性
使用AGC控制台测试链接功能
3. 链接生成缓慢
优化建议:

缓存常用链接
在后台预生成可能需要的链接
使用批量生成接口
结语
通过集成AGC短链接服务,HarmonyOS 5应用可以轻松实现高效的分享功能,同时获得详细的链接性能分析。本文提供的代码示例涵盖了从基础到高级的短链接使用场景,开发者可以根据实际需求进行调整和扩展。

posted @ 2025-06-28 22:35  暗雨YA  阅读(51)  评论(0)    收藏  举报