uniapp开发鸿蒙next应用设置桌面图标角标

海哥  金牌会员 | 2024-12-20 23:29:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 826|帖子 826|积分 2478

        近来在使用uniapp开发纯血鸿蒙应用,有一起的小同伴可以私信加好友进群有题目可以一起讨论,还是有很多地方必要学习,互帮相助!
        uniapp没有提供api直接修改桌面图标角标,所以必要本身编写uts插件调用鸿蒙next系统的api去修改桌面图标角标,下面详细介绍下操作以及代码。
一、uni-modules插件

1、新建插件

在uni_modules右键,选择新建uni_modules插件

2、填写插件信息

插件名称:必须是xx-api名称格式,且不能使用uni开头,精确格式如:lp-setBadgeNumber
分类:选择UTS插件-API插件
点击创建即可创建插件成功。
 
二、代码编写

1、修改package.json文件

如图在uni_modules下添加uni-ext-api节点,注意必须使用是uni节点,反面的api名称也无需填写前缀。

  2、修改interface.uts文件 

把如下代码复制更换即可
  1. /**
  2. * interface.uts
  3. * uts插件接口定义文件,按规范定义接口文件可以在HBuilderX中更好的做到语法提示
  4. */
  5. export interface Uni {
  6.         /**
  7.                 * setBadgeNumber
  8.                 * @description
  9.                 * 修改鸿蒙系统桌面图标交表
  10.                 * @param {number}  badgeNumber
  11.                 * @param {SetBadgeNumberOptions}  options
  12.                 * @return {void}
  13.                 * @example
  14.                  ```typescript
  15.                         uni.setBadgeNumber({});
  16.                  ```
  17.                 */
  18.         setBadgeNumber(badgeNumber : number, options : SetBadgeNumberOptions) : void;
  19. }
  20. export type SetBadgeNumber = (options : SetBadgeNumberOptions) => void;
  21. export type SetBadgeNumberSuccess = {
  22.         /**
  23.          * 错误信息
  24.          */
  25.         errMsg : string
  26. };
  27. export type SetBadgeNumberSuccessCallback = (result : SetBadgeNumberSuccess) => void;
  28. export type SetBadgeNumberFail = {
  29.         /**
  30.          * 错误信息
  31.          */
  32.         errMsg : string
  33. };
  34. export type SetBadgeNumberFailCallback = (result : SetBadgeNumberFail) => void;
  35. export type SetBadgeNumberComplete = {
  36.         /**
  37.          * 错误信息
  38.          */
  39.         errMsg : string
  40. };
  41. export type SetBadgeNumberCompleteCallback = (result : SetBadgeNumberComplete) => void;
  42. export type SetBadgeNumberOptions = {
  43.         /**
  44.          * 接口调用成功的回调函数
  45.          * @defaultValue null
  46.          */
  47.         success ?: SetBadgeNumberSuccessCallback | null,
  48.         /**
  49.          * 接口调用失败的回调函数
  50.          * @defaultValue null
  51.          */
  52.         fail ?: SetBadgeNumberFailCallback | null,
  53.         /**
  54.          * 接口调用结束的回调函数(调用成功、失败都会执行)
  55.          * @defaultValue null
  56.          */
  57.         complete ?: SetBadgeNumberCompleteCallback | null
  58. };
复制代码
 3、新建index.uts文件

在utssdk文件下新建目录,目录名称固定为app-harmony,然后再在app-harmony下新建uts文件,命名固定为index。

index.uts文件将下面代码复制黏贴即可
  1. import {
  2.         SetBadgeNumber,
  3.         SetBadgeNumberOptions,
  4.         SetBadgeNumberSuccess,
  5.         SetBadgeNumberFail,
  6.         SetBadgeNumberComplete
  7. } from '../interface.uts'
  8. export {
  9.         SetBadgeNumber,
  10.         SetBadgeNumberOptions,
  11.         SetBadgeNumberSuccess,
  12.         SetBadgeNumberFail,
  13.         SetBadgeNumberComplete
  14. }
  15. import { notificationManager } from '@kit.NotificationKit';
  16. import { BusinessError } from '@kit.BasicServicesKit';
  17. export function setBadgeNumber(badgeNumber : number, options : SetBadgeNumberOptions) {
  18.         let setBadgeNumberCallback = (err : BusinessError) : void => {
  19.                 if (err) {
  20.                         //设置角标失败
  21.                         let result : SetBadgeNumberFail = {
  22.                                 errMsg: err.message ?? ""
  23.                         };
  24.                         let completeResult : SetBadgeNumberComplete = {
  25.                                 errMsg: err.message ?? ""
  26.                         }
  27.                         options?.fail?.(result);
  28.                         options?.complete?.(completeResult);
  29.                         return;
  30.                 }
  31.                 // let pxx : number = devicePX2px(90);
  32.                 // console.log('----------------pxx', pxx)
  33.                 //设置角标成功       
  34.                 let result : SetBadgeNumberSuccess = {
  35.                         errMsg: "ok",
  36.                 };
  37.                 let completeResult : SetBadgeNumberComplete = {
  38.                         errMsg: "ok"
  39.                 }
  40.                 options?.success?.(result);
  41.                 options?.complete?.(completeResult);
  42.         }
  43.         notificationManager.setBadgeNumber(badgeNumber, setBadgeNumberCallback);
  44. }
复制代码
至此设置桌面图标角标已完成。
通过以下两种方式可在vue文件中使用。官方示例以及地址调用鸿蒙原生API | uni-app官网
方式一(挂载到uni全局对象) 保举此种方式
  1. <template>
  2.         <view class="content">
  3.                 <button class="button" @click="setBadgeNumberBtn">设置桌面图标角标</button>
  4.         </view>
  5. </template>
  6. <script>
  7.         export default {
  8.                 data() {
  9.                         return {
  10.                         }
  11.                 },
  12.                 onLoad() {
  13.                 },
  14.                 methods: {
  15.                         setBadgeNumberBtn() {
  16.                                 uni.setBadgeNumber(10,{
  17.                                         success: (res) => {
  18.                                                 console.log('success: ', JSON.stringify(res));
  19.                                         },
  20.                                         fail: (err) => {
  21.                                                 console.error('fail: ', JSON.stringify(err));
  22.                                         },
  23.                                         complete: (res) => {
  24.                                                 console.log('complete: ', JSON.stringify(res));
  25.                                         }
  26.                                 });
  27.                         }
  28.                 }
  29.         }
  30. </script>
  31. <style>
  32.         .content {
  33.                 display: flex;
  34.                 flex-direction: column;
  35.                 align-items: center;
  36.                 justify-content: center;
  37.         }
  38.        
  39.         .button{
  40.                 width: 100%;
  41.                 margin: 10px;
  42.         }
  43. </style>
复制代码
方式二(使用import引入) 
  1. <template>
  2.         <view class="content">
  3.                 <button class="button" @click="setBadgeNumberBtn">设置桌面图标角标</button>
  4.         </view>
  5. </template>
  6. <script>
  7.         import { setBadgeNumber } from "@/uni_modules/lp-setBadgeNumber"
  8.         export default {
  9.                 data() {
  10.                         return {
  11.                         }
  12.                 },
  13.                 onLoad() {
  14.                 },
  15.                 methods: {
  16.                         setBadgeNumberBtn() {
  17.                                 setBadgeNumber({
  18.                                         success: (res : any) => {
  19.                                                 console.log('success: ', JSON.stringify(res));
  20.                                         },
  21.                                         fail: (err : any) => {
  22.                                                 console.error('fail: ', JSON.stringify(err));
  23.                                         },
  24.                                         complete: (res : any) => {
  25.                                                 console.log('complete: ', JSON.stringify(res));
  26.                                         }
  27.                                 });
  28.                         }
  29.                 }
  30.         }
  31. </script>
  32. <style>
  33.         .content {
  34.                 display: flex;
  35.                 flex-direction: column;
  36.                 align-items: center;
  37.                 justify-content: center;
  38.         }
  39.         .button{
  40.                 width: 100%;
  41.                 margin: 10px;
  42.         }
  43. </style>
复制代码
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表