96SEO 2026-07-24 03:11 2
还在为加好友扫半天二维码、输一串数字抓狂?鸿蒙的“碰一碰”功能直接把加好友简化到“贴贴就行”!不用搜、不用输,两台手机轻轻一碰。好友信息自动飞过去,主打一个“近在咫尺,一键加友”。今天就手把手带你把这个神仙功能搬进自己的App,以喵屿App的碰一碰加宠物好友为例,从原理到实战。包教包会~
碰一碰分享本质上是鸿蒙Share Kit的“隐藏彩蛋”,支持使用者通过设备轻触发起跨端分享,不管是传图片、共享Wi‑Fi,还是今天要搞的加好友,都能搞定。更爽的是的观点是,只要你的应用支持程序分享。理论上不用额外魔改,就能解锁碰一碰能力,简直是懒人开发者的福音!

流程说明:
使用约束想让俩手机顺利贴贴传好友。得满足几个小条件:双端设备都得亮屏、解锁,而且华为分享服务得开着。贴的时候得用手机顶部轻触,不是随便怼哪里都管用。如果华为分享关了程序会提示打开。
先从最简单的图片分享入手,带你尝尝碰一碰碰的甜头!其实鸿蒙的碰一碰碰超友好,只要你的应用支持程序分享,几乎不用额外折腾。几行代码就能搞定:
private async handelShare: Promise {
const uiContext: UIContext = this.getUIContext;// 需设置本地图片链接
let filePath = this.ImgData;let utdTypeId = utd.getUniformDataTypeByFilenameExtension;let shareData: systemShare.SharedData = new systemShare.SharedData({
utd的观点是。utdTypeId,uri: fileUri.getUriFromPath,title: '喵屿图片分享',});let controller: systemShare.ShareController = new systemShare.ShareController;const context: common.UIAbilityContext = uiContext.getHostContext as common.UIAbilityContext;controller.show(context,{
previewMode: systemShare.SharePreviewMode.DETAIL。selectionMode: systemShare.SelectionMode.BATCH,}).n => {
logger.info;}).catch => {
logger.error;}),不过,}
就这么几行。把本地图片方法填好,调用程序分享Kit,分享界面里自带碰一碰碰功能,比凑半天二维码轻松多了。
默认分享的图片、文本会被图库、浏览器等“路人甲”打开,需要直接拉起自己的 App 加好友。程序提供两种方案:Applinking 与 Deeplink。其实,这里演示 Deeplink,因为配置更简单。
第一步先,在 module.json5 里配置 skills 标签。让程序知道该 Scheme 只能被自己的 App 接收:
{
"module": {
//…"abilities":,"actions":
},{
"actions":,"uris":
}
]
}
]
}
}
接下来。在目标 UIAbility 的 onCreate 或 onNewWant 中解析 Deeplink 参数并执行加好友逻辑:
// DeepAbility.ets
import { AbilityConstant,UIAbility,Want } from '@kit.AbilityKit';import { url } from '@kit.ArkTS';const DOMAIN = 0x0000;export default class DeepAbility extends UIAbility {
onCreate: void {
let uri = want?.uri,if {
let urlObject = url.URL.parseURL;let action = urlObject.params.get;if {
// 业务处理
}
}
}
onNewWant: void {
// 同上逻辑
}
}
If you prefer not to go through system share UI,you can directly register 'knockShare' event and handle whole process yourself:
import { uniformTypeDescriptor as utd } from '@kit.ArkData';
import { systemShare,harmonyShare } from '@kit.ShareKit';import { fileUri } from '@kit.CoreFileKit';@Component
export default struct Index {
aboutToAppear: void {
let capabilityRegistry = { windowId: /* 替换为实际 windowId */ };harmonyShare.on => {
let shareData = new systemShare.SharedData({
再看utd,utd.UniformDataType.HYPERLINK。content: 'https://example.com/share',title: '碰一碰碰卡片标题',description: '卡片描述'
});sharableTarget.share;setTimeout => {
// 更新预览图示例
},);}),}
aboutToDisappear: void {
let capabilityRegistry = { windowId: /* 替换为实际 windowId */ };harmonyShare.off;}
build {}
}
在 module.json5 中添加对应 skills{…} 并确保 Scheme 与 Host 与发送端保持一致:
"abilities":,"actions":
},{
"actions":,"entities":。"uris":
}
]
}
]
关键点:接收数据后无论是冷启动(走 onCreate)还是热启动(走 onNewWant) 都要解析并保存好友信息。
export default class EntryAbility extends UIAbility {
onCreate: void { this.handleWant;}
onNewWant: void { this.handleWant;其实,}
private handleWant: void {
if return;const urlObject = url.URL.parseURL;const name = urlObject.params.get;说起来,const sex = urlObject.params.get;const birth = urlObject.params.get;const breed = urlObject.params.get;if {
const baseInfo = new BaseInfo;baseInfo.sex = Number;baseInfo.birth = birth;baseInfo.breed = breed;AppStorage.setOrCreate);emitter.emit;}
}
}
MainPage 弹窗提示使用者是否接受新朋友:
onNewFriend = =>{
if ) {
const newFriend = JSON.parse);AppStorage.set;this.friendDialog = DialogHub.getCustomDialog
.setOperableContent,=>{
return new PetDialogParams;})
.setConfig
.setAnimation
.setStyle
.build;this.friendDialog.show;}
}
aboutToAppear: Promise{
emitter.on;this.onNewFriend;// ,}
aboutToDisappear: void{
emitter.off;}
在宠物信息页面注册 “knockShare” 并构造 Deeplink。将当前宠物信息写入链接:
showID {
harmonyShare.on =>{
const shareData = new systemShare.SharedData({
utd的观点是,utd.UniformDataType.HYPERLINK,content:`catIsland://catIsland.sx.com/share/?name=${info.name}&sex=${info.sex}&birth=${info.birth}&breed=${info.breed}`。thumbnailUri:fileUri.getUriFromPath,title:`分享${info.name}给好友`,description:'碰一下即可将宠物信息分享给好友'
});sharableTarget.share;}),// 弹窗展示等逻辑…}
Pitfall 提醒:The newer API that requires a capability parameter is only supported from version X.Y onward. For devices below that version use older signature without capability argument.
通过配置 Deeplink、解析冷/热启动参数还有监听 “knockShare” 事件,你可以在自己的 App 中实现“一键贴贴加好友”的神奇体验。相比传统扫码或输入码方式,明显提高使用者粘性和操作便捷性。整个开发过程几乎不需要自行实现底层协议,只依赖鸿蒙 Share Kit 就可以完成。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback