HarmonyOS NEXT实战:通过微信分享内容
##HarmonyOS Next实战##三方SDK##教育##
前提条件:已接入微信SDK
参考资料: https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/ohos.html
为什么要通过微信分享内容? 通过微信分享内容具有多方面显著的好处,以下从传播效果维度展开详细分析:
- 覆盖面广:微信拥有庞大的用户基数,截至目前月活跃用户数超13亿。当你分享内容到微信时,你的好友、好友的好友(通过转发)都有可能看到,能迅速将信息扩散到大量潜在受众面前。例如,一篇优质的科普文章在微信朋友圈分享后,经过多级转发,可能在短时间内获得数万甚至数十万的阅读量,大大拓宽了内容的传播范围。
- 精准触达:微信是基于社交关系建立的平台,分享的内容会优先推送给你的微信好友和关注的公众号粉丝。这些人与你存在一定的社交关联或兴趣共鸣,对分享内容的接受度相对较高。比如,你是一位摄影爱好者,在微信群分享摄影技巧和作品,群里的摄影同好们会更感兴趣,能更精准地触达目标受众。
- 传播速度快:微信的信息传播具有即时性,一旦分享内容,好友可以立即看到。而且,通过朋友圈、微信群等渠道,内容可以在短时间内被大量转发和传播,形成病毒式传播效应。例如,一条有趣的搞笑视频在微信上分享后,可能几分钟内就被转发到多个群和朋友圈,迅速在网络上传播开来。
以下为通过微信分享内容的鸿蒙项目代码实战: ************
import { GlobalKey, GlobalUtil, Logger } from "@heduohao/bases";
import { bundleManager } from "@kit.AbilityKit";
import { BusinessError } from "@kit.BasicServicesKit";
import { WXApi } from "../sdk/weixin/WXApi";
import * as wxopensdk from '@tencent/wechat_open_sdk';
import { common } from "@kit.AbilityKit";
import { image } from "@kit.ImageKit";
export class WeixinUtil {
/**
* 判断是否已安装微信
* @returns
*/
static isInstalled() {
const isInstalled = WXApi.isWXAppInstalled()
return isInstalled
}
/**
* 判断是否已安装微信
*/
static isInstalled_old() {
try {
let canOpen = bundleManager.canOpenLink('weixin://');
Logger.info(`WeixinUtil.IsInstalled = ${JSON.stringify(canOpen)}`);
return true
} catch (err) {
let message = (err as BusinessError).message;
Logger.error(`WeixinUtil.IsInstalled failed, err = ${message}`);
return false
}
}
/**
* 分享文字
* @param text
*/
static shareText(text: string) {
let textObject = new wxopensdk.WXTextObject()
textObject.text = text
let mediaMessage = new wxopensdk.WXMediaMessage()
mediaMessage.mediaObject = textObject
let req = new wxopensdk.SendMessageToWXReq()
req.scene = wxopensdk.SendMessageToWXReq.WXSceneSession
req.message = mediaMessage
//获取UIAbilityContext
const context = GlobalUtil.getObject(GlobalKey.UIAbilityContext) as common.UIAbilityContext;
WXApi.sendReq(context, req)
}
/**
* 分享网页内容
* @param url
* @param title
* @param description
* @param callbackAbility 微信跳回宿主App时拉起的ability名字,如果不填则默认是'EntryAbility'
*/
static async shareWeb(url: string, title: string, description: string, callbackAbility: string = 'EntryAbility') {
const webpageObject = new wxopensdk.WXWebpageObject()
webpageObject.webpageUrl = url
const mediaMessage = new wxopensdk.WXMediaMessage()
mediaMessage.mediaObject = webpageObject
mediaMessage.title = title
mediaMessage.description = description
//获取UIAbilityContext
const context = GlobalUtil.getObject(GlobalKey.UIAbilityContext) as common.UIAbilityContext;
const thumbData = await context.resourceManager.getMediaContent($rawfile('[bases].drawable-xxhdpi/ic_logo.png'))
const thumbPixel = image.createImageSource(thumbData.buffer).createPixelMapSync()
const thumbBuffer = await image.createImagePacker().packToData(thumbPixel, { format: "image/png", quality: 100 })
mediaMessage.thumbData = new Uint8Array(thumbBuffer)
const req = new wxopensdk.SendMessageToWXReq()
req.callbackAbility = callbackAbility
req.scene = wxopensdk.SendMessageToWXReq.WXSceneSession
req.message = mediaMessage
WXApi.sendReq(context, req)
}
}