16.细解鸿蒙之元服务UX上架标准-通知

168 阅读6分钟

细解鸿蒙之元服务UX上架标准-通知

是否必须遵守:涉及则必须

标准项描述:

在应用或元服务的设计过程中,通知设计是一项关键环节,它需要遵循一系列通知规范,以确保通知的有效性、准确性和一致性。

通知规范的具体内容

    内容规范

    • 信息清晰:通知内容应明确传达关键信息,避免模糊或歧义。例如,通知的标题要简洁明了,能够准确概括通知的主题。如 “重要更新通知”,让用户一眼就能明白通知的大致内容。

    • 完整且准确:通知内容要完整,包括所有必要的信息。例如,在发送通知时,要包含通知的具体时间、地点、事件等详细信息。以会议通知为例,要明确会议的具体时间、地点、参会人员以及会议主题等内容。

    • 避免冗余:避免重复不必要的信息,确保通知内容简洁明了。例如,在通知中不要重复已经在标题中体现的信息,以免造成信息冗余。

    • 语言表达恰当:使用恰当的语言,符合用户的理解水平和语言习惯。避免使用过于专业或生僻的词汇,确保通知能够被广大用户理解。例如,在通知中使用通俗易懂的语言,避免使用复杂的术语或行话。

    格式规范

    • 字体与字号:选择合适的字体和字号,确保通知内容清晰易读。一般来说,字体要大小适中,不宜过小或过大。例如,在手机应用通知中,字体大小要保证在一定范围内,以便用户在各种环境下都能轻松阅读。

    • 排版布局:合理安排通知的排版布局,使内容层次分明。例如,标题、正文、时间等元素要清晰区分,避免混淆。同时,要注意行距、缩进等细节,使通知整体看起来整洁美观。

    • 颜色搭配:选择合适的颜色来突出通知内容。颜色要与应用的整体风格相协调,同时要考虑到不同颜色对用户视觉的影响。例如,使用对比鲜明的颜色来突出重要信息,如红色字体用于强调紧急通知。

    • 图标与图片:如果通知中使用图标或图片,要确保其与通知内容相关且具有明确的意义。图标和图片要能够增强通知的视觉效果,帮助用户更好地理解通知内容。例如,在通知中使用与主题相关的图标,如在邮件通知中使用邮件图标。

    交互规范

    • 操作方式:明确通知的操作方式,如点击、滑动、长按等。例如,在通知中可以设置点击链接跳转到相关页面,或者通过滑动操作查看更多信息。

    • 响应时间:保证通知的响应时间合理,及时响应用户操作。例如,当用户点击通知时,要迅速跳转到相应的页面或执行相关操作,避免等待时间过长。

    • 通知优先级:根据通知的重要性和紧急程度设置不同的优先级。例如,对于紧急通知要优先显示,确保用户及时收到通知。

    • 用户反馈:提供用户反馈渠道,允许用户对通知内容进行评价或提出建议。例如,在应用通知中设置反馈按钮,用户可以通过点击按钮反馈自己的意见和建议。

    安全规范

    • 隐私保护:确保通知内容不泄露用户隐私信息。例如,在通知中不要包含敏感信息,如用户的个人身份信息、密码等。

    • 数据安全:保证通知数据的安全性,防止数据被篡改或丢失。例如,对通知数据进行加密处理,确保数据在传输过程中的安全性。

    • 防止误操作:采取措施防止用户误操作,如设置确认按钮、提示信息等。例如,在删除通知时要提示用户确认操作,避免误删重要通知。

遵循通知规范的意义

提高用户体验:遵循通知规范能够使通知更加清晰、准确、易于理解和操作,提高用户对通知的满意度。用户能够快速获取所需信息,避免因通知内容不清晰或操作不便而产生困扰。
增强应用功能:通知规范有助于提升应用的功能和性能。通过合理设计通知内容和格式,能够更好地传达信息,提高应用的效率和效果。
维护品牌形象:规范的通知设计体现了应用的专业和严谨,有助于维护品牌形象。用户对应用的印象会受到通知的影响,良好的通知设计能够增强用户对品牌的信任和认可。
确保合规性:遵循通知规范是确保应用符合相关法律法规和政策要求的重要措施。例如,在涉及隐私保护、数据安全等方面,应用必须遵守相关规定,避免因违规行为而带来法律风险。 --javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

// Index.ets
// 从 @kit.ArkUI 库中导入所需的类型和组件
import { AtomicServiceTabs, TabBarOptions, TabBarPosition, OnContentWillChangeCallback } from '@kit.ArkUI';

// 标记为入口组件
@Entry
// 声明为组件
@Component
struct Index {
  // 存储消息的状态变量
  @State message: string = '首页';
  // 存储点击次数的状态变量
  @State onClickNumber: number = 0;
  // 存储当前选中的索引的状态变量
  @State currentIndex: number = 0;
  // 存储即将切换到的索引的状态变量
  @State comingIndex: number = 0;
  // 内容即将改变时的回调函数
  onContentWillChangeCallBack:  OnContentWillChangeCallback = (currentIndex: number, comingIndex: number): boolean => {
    // 更新当前索引
    this.currentIndex = currentIndex;
    // 更新即将切换到的索引
    this.comingIndex = comingIndex;
    // 打印日志
    console.log('OnContentWillChangeCallback');
    // 返回 true 表示允许切换
    return true;
  }
  // 标签点击时的回调函数
  onTabClick: Callback<number> = (index:number)=>{
    // 点击次数加 1
    this.onClickNumber ++;
    // 打印日志
    console.log('onTabClick');
  }
  // 构建第一个标签页的内容
  @Builder
  tabContent1() {
    Column().width('100%').height('100%').alignItems(HorizontalAlign.Center).backgroundColor('#00CB87')
  }
  // 构建第二个标签页的内容
  @Builder
  tabContent2() {
    Column().width('100%').height('100%').backgroundColor('#007DFF')
  }
  // 构建第三个标签页的内容
  @Builder
  tabContent3() {
    Column().width('100%').height('100%').backgroundColor('#FFBF00')
  }

  build() {
    Stack() {
    AtomicServiceTabs({
      // 存储标签页内容的函数数组
      tabContents: [
        () => {
          this.tabContent1()
        },
        () => {
          this.tabContent2()
        },
        () => {
          this.tabContent3()
        }
      ],
      // 存储标签栏选项的数组
      tabBarOptionsArray: [
        // 创建第一个标签栏选项,包含图标、文本、文本颜色和选中时的颜色
        new TabBarOptions($r('sys.media.ohos_ic_public_phone'), '绿色', Color.Black, Color.Blue),
        // 创建第二个标签栏选项
        new TabBarOptions($r('sys.media.ohos_ic_public_location'), '蓝色', Color.Black, Color.Blue),
        // 创建第三个标签栏选项
        new TabBarOptions($r('sys.media.ohos_ic_public_more'), '黄色', Color.Black, Color.Blue)
      ],
      // 标签栏的位置设置为底部
      tabBarPosition: TabBarPosition.BOTTOM,
      // 标签栏的背景颜色
      barBackgroundColor: $r('sys.color.ohos_id_color_bottom_tab_bg'),
      // 点击标签栏时的回调函数
      onTabBarClick:this.onTabClick,
      // 内容即将改变时的回调函数
      onContentWillChange: this.onContentWillChangeCallBack,
    })
    Column() {
      // 显示点击次数
      Text("onchange回调次数:" + this.onClickNumber)
      // 显示即将切换到的索引和当前索引
      Text("comingIndex = " + this.comingIndex + ", currentIndex = " + this.currentIndex)
    }.margin({top:500})
    // 设置 Stack 组件的高度为 100%
    }.height('100%')
  }
}

PS:实际项目中如有出入,请告知博主,博主会第一时间修改得哇~