HarmonyOS NEXT实战:通过微信分享内容

简介: 本教程介绍如何在HarmonyOS Next项目中接入微信SDK,实现内容分享功能。涵盖环境搭建、代码集成及分享图文、网页等内容的具体实现方式,适用于教育类应用快速集成社交分享能力。

HarmonyOS Next实战##三方SDK##教育

前提条件:已接入微信SDK

参考资料:
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/ohos.html

为什么要通过微信分享内容?
通过微信分享内容具有多方面显著的好处,以下从传播效果维度展开详细分析:

  • 覆盖面广:微信拥有庞大的用户基数,截至目前月活跃用户数超13亿。当你分享内容到微信时,你的好友、好友的好友(通过转发)都有可能看到,能迅速将信息扩散到大量潜在受众面前。例如,一篇优质的科普文章在微信朋友圈分享后,经过多级转发,可能在短时间内获得数万甚至数十万的阅读量,大大拓宽了内容的传播范围。
  • 精准触达:微信是基于社交关系建立的平台,分享的内容会优先推送给你的微信好友和关注的公众号粉丝。这些人与你存在一定的社交关联或兴趣共鸣,对分享内容的接受度相对较高。比如,你是一位摄影爱好者,在微信群分享摄影技巧和作品,群里的摄影同好们会更感兴趣,能更精准地触达目标受众。
  • 传播速度快:微信的信息传播具有即时性,一旦分享内容,好友可以立即看到。而且,通过朋友圈、微信群等渠道,内容可以在短时间内被大量转发和传播,形成病毒式传播效应。例如,一条有趣的搞笑视频在微信上分享后,可能几分钟内就被转发到多个群和朋友圈,迅速在网络上传播开来。

以下为通过微信分享内容的鸿蒙项目代码实战:
添加WeixinUtil

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)
  }
}
目录
相关文章
|
4月前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
586 65
|
5月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
461 12
|
5月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解滑块Slider和进度条Progress组件的使用。
255 1
|
5月前
|
JavaScript 开发者 索引
鸿蒙应用开发从入门到实战(九):ArkTS渲染控制
ArkTS拓展了TypeScript,可以结合ArkUI进行渲染控制,是的界面设计具有可编程性。本文简要描述鸿蒙应用开发中的条件渲染和循环渲染。
259 5
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
590 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
508 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
897 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
数据安全/隐私保护 开发者
鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
397 3
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
259 0
|
5月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
247 1

热门文章

最新文章