局政务网站建设管理工作总结部门网站建设

张小明 2026/1/1 9:47:45
局政务网站建设管理工作总结,部门网站建设,wordpress 前台关闭,wordpress前台弹窗今天开始咱们的系统服务调用系列分享。系统服务是鸿蒙应用与底层系统交互的核心通道#xff0c;而通知服务#xff08;NotificationCenter#xff09;更是高频刚需 —— 无论是消息推送、事件提醒还是功能跳转#xff0c;都离不开它。这篇咱们聚焦 NotificationCenter 的核…今天开始咱们的系统服务调用系列分享。系统服务是鸿蒙应用与底层系统交互的核心通道而通知服务NotificationCenter更是高频刚需 —— 无论是消息推送、事件提醒还是功能跳转都离不开它。这篇咱们聚焦 NotificationCenter 的核心用法从权限申请、通知创建到点击跳转结合实战代码一步步拆解为后续位置提醒 APP的开发打牢基础一、通知服务核心认知1. 通知的应用场景鸿蒙的通知服务支持多种场景系统事件提醒如位置到达、任务到期应用内消息推送如好友消息、更新提示功能快捷入口如通知栏直接操作应用功能重要信息展示如验证码、交易通知2. 核心 API 与权限要求核心模块ohos.notificationNotificationCenter必备权限ohos.permission.NOTIFICATION_CONTROLLERAPI9关键能力创建通知、设置样式、发送通知、监听点击事件、取消通知二、通知开发三步走权限 - 创建 - 发送1. 权限申请合规第一步通知权限属于普通权限但仍需在配置文件声明并动态申请部分设备默认关闭// module.json5 配置声明 { module: { requestPermissions: [ { name: ohos.permission.NOTIFICATION_CONTROLLER, reason: 用于发送位置到达提醒通知, usedScene: { abilities: [MainAbility], when: always } } ] } }动态申请代码结合权限管理模块import abilityAccessCtrl from ohos.abilityAccessCtrl; import notification from ohos.notification; import common from ohos.app.ability.common; /** * 检查并申请通知权限 */ export async function requestNotificationPermission(context: common.UIAbilityContext): Promiseboolean { const atManager abilityAccessCtrl.createAtManager(); try { // 检查权限状态 const authResult await atManager.checkAccessToken( abilityAccessCtrl.createTokenID(), ohos.permission.NOTIFICATION_CONTROLLER ); if (authResult abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) { console.log(通知权限已授予); return true; } // 动态申请权限 const reqResult await atManager.requestPermissionsFromUser(context, [ohos.permission.NOTIFICATION_CONTROLLER]); const granted reqResult.authResults[0] 0; console.log(通知权限申请结果${granted ? 成功 : 失败}); return granted; } catch (err) { console.error(通知权限处理异常${JSON.stringify(err)}); return false; } }2. 创建通知实例自定义样式鸿蒙支持多种通知样式普通通知、长文本通知、图片通知等咱们以位置提醒场景常用的普通通知为例包含标题、内容和跳转入口import notification from ohos.notification; import wantAgent from ohos.wantAgent; import common from ohos.app.ability.common; /** * 创建位置提醒通知实例 * param context 上下文 * param title 通知标题 * param content 通知内容 * returns 通知实例 */ export async function createLocationReminderNotification( context: common.UIAbilityContext, title: string, content: string ): Promisenotification.Notification { // 1. 创建跳转代理点击通知跳转应用页面 const wantAgentInfo { wants: [{ bundleName: context.applicationInfo.bundleName, abilityName: MainAbility, parameters: { from: notification, type: location_reminder } // 携带跳转参数 }], operationType: wantAgent.OperationType.START_ABILITY, requestCode: 1002 }; const jumpAgent await wantAgent.getWantAgent(wantAgentInfo); // 2. 构建通知内容 const notificationContent new notification.NotificationContent({ contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, normal: { title: title, text: content, additionalText: 点击查看详情 } }); // 3. 构建通知请求 const notificationRequest { id: Date.now(), // 通知唯一ID用于后续取消 content: notificationContent, wantAgent: jumpAgent, // 绑定跳转事件 priority: notification.Priority.HIGH, // 优先级高优先级会主动弹窗 showOnLockScreen: true, // 锁屏显示 isAutoCancel: true // 点击后自动取消 }; return notificationRequest; }3. 发送与取消通知import notification from ohos.notification; // 全局存储通知ID用于取消 let currentNotificationId: number -1; /** * 发送通知 */ export async function sendNotification(notificationRequest: notification.Notification): Promiseboolean { try { // 保存通知ID currentNotificationId notificationRequest.id; // 发送通知 await notification.publish(notificationRequest); console.log(通知发送成功ID${currentNotificationId}); return true; } catch (err) { console.error(通知发送失败${JSON.stringify(err)}); return false; } } /** * 取消通知单个或全部 */ export async function cancelNotification(notificationId?: number) { try { if (notificationId) { await notification.cancel(notificationId); console.log(取消通知成功ID${notificationId}); } else { await notification.cancelAll(); console.log(取消所有通知成功); } } catch (err) { console.error(取消通知失败${JSON.stringify(err)}); } }三、实战通知点击跳转与参数接收1. 接收跳转参数在目标 Ability 的onCreate或onNewWant中接收通知跳转参数// MainAbility.ets onNewWant(want: Want) { // 接收通知跳转参数 const from want.parameters?.[from]; const type want.parameters?.[type]; if (from notification type location_reminder) { console.log(从位置提醒通知跳转进入); // 跳转到位置详情页 this.context.startAbility({ url: pages/LocationDetailPage }); } }2. 完整调用流程UI 组件触发Entry Component struct NotificationDemoPage { private context getContext(this) as common.UIAbilityContext; build() { Column({ space: 30 }) .width(100%) .height(100%) .padding(30) .backgroundColor(#f5f5f5) { Text(通知服务演示) .fontSize(32) .fontWeight(FontWeight.Bold) Button(申请通知权限) .type(ButtonType.Capsule) .width(250) .height(60) .backgroundColor(#2f54eb) .onClick(async () { const granted await requestNotificationPermission(this.context); Toast.show({ message: granted ? 权限申请成功 : 权限申请失败 }); }) Button(发送位置提醒通知) .type(ButtonType.Capsule) .width(250) .height(60) .backgroundColor(#2f54eb) .onClick(async () { const notification await createLocationReminderNotification( this.context, 位置提醒, 您已到达目标区域点击查看详情 ); const success await sendNotification(notification); Toast.show({ message: success ? 通知发送成功 : 通知发送失败 }); }) Button(取消当前通知) .type(ButtonType.Capsule) .width(250) .height(60) .backgroundColor(#ff4d4f) .onClick(() { cancelNotification(currentNotificationId); }) } } }四、实战踩坑指南1. 通知不显示的常见原因❶ 未申请权限务必先通过动态申请获取NOTIFICATION_CONTROLLER权限❷ 通知 ID 重复每次发送建议使用唯一 ID如时间戳避免覆盖已有通知❸ 应用处于后台冻结状态需确保应用有后台运行权限后续系列会讲2. 跳转失败的解决方案❶ 检查want参数bundleName和abilityName必须与配置文件一致❷ 目标页面未注册确保跳转的 Ability 或 Page 已在main_pages.json中配置❸ 权限不足部分场景需申请ohos.permission.START_ABILITIES_FROM_BACKGROUND权限。加入班级学习鸿蒙开发
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站如何配置自己的电脑青岛网站模板建站

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vue3和nodejs开发的基于Java的全国著名旅游景点信息管理系…

张小明 2025/12/29 14:03:54 网站建设

网站模板怎么设计软件网站建设收获

Visual Studio .NET 调试器高级使用指南 1. 概述 在软件开发过程中,即便你使用了出色的诊断代码并做了充分的规划,偶尔还是需要使用调试器。有效调试的关键在于尽量避免使用调试器,因为调试往往会耗费大量时间。Visual Studio .NET 调试器是一款先进的调试工具,它能处理脚…

张小明 2025/12/29 21:49:05 网站建设

手机怎么做黑网站网站开发语言学习

深入探索 Expect 交互与进程控制 1. 基本输入输出交互 最初的输入是隐式的,即 user_spawn_id 。用户的按键操作会发送到 out ,而从 in 接收到的输入会被发送回 user_spawn_id ,这样用户就能读取到这些输入。外部进程可以是 C 程序,也可以是另一个带有自身 inter…

张小明 2025/12/27 4:57:28 网站建设

德阳建设局网站注册证查询网站

导语 【免费下载链接】DeepSeek-V3-0324 DeepSeek最新推出DeepSeek-V3-0324版本,参数量从6710亿增加到6850亿,在数学推理、代码生成能力以及长上下文理解能力方面直线飙升。 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V3-032…

张小明 2025/12/27 4:57:28 网站建设

网站页面设计制作设计本3d模型下载

语音合成进入平民化时代:GPT-SoVITS开源模型全解析 在不远的过去,想要让AI用“你的声音”说话,意味着要录制数小时的清晰语音、投入昂贵的算力资源,并由专业团队进行长达数天的训练。如今,这一切正在被彻底改写——只需…

张小明 2025/12/27 4:57:29 网站建设