text-notification.md 6.1 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 发布基础类型通知


基础类型通知主要应用于发送短信息、提示信息、广告推送等,支持普通文本类型、长文本类型、多行文本类型和图片类型。


  **表1** 基础类型通知中的内容分类

| 类型 | 描述 |
| -------- | -------- |
| NOTIFICATION_CONTENT_BASIC_TEXT | 普通文本类型。 |
| NOTIFICATION_CONTENT_LONG_TEXT | 长文本类型。 |
| NOTIFICATION_CONTENT_MULTILINE | 多行文本类型。 |
| NOTIFICATION_CONTENT_PICTURE | 图片类型。 |


目前系统仅通知栏订阅了通知,将通知显示在通知栏里。基础类型通知呈现效果示意图如下所示。

19 20
**图1** 基础类型通知呈现效果示意图  
![zh-cn_image_0000001466462305](figures/zh-cn_image_0000001466462305.png)
Z
zengyawen 已提交
21 22 23 24


## 接口说明

25
通知发布接口如下表所示,不同发布类型通知由[NotificationRequest](../reference/apis/js-apis-notificationManager.md#notificationrequest)的字段携带不同的信息。
Z
zengyawen 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

| **接口名** | **描述** |
| -------- | -------- |
| publish(request: NotificationRequest, callback: AsyncCallback<void>): void | 发布通知。                 |
| cancel(id: number, label: string, callback: AsyncCallback<void>): void | 取消指定的通知。           |
| cancelAll(callback: AsyncCallback<void>): void; | 取消所有该应用发布的通知。 |


## 开发步骤

1. [使能通知开关](notification-enable.md),获得用户授权后,才能使用通知功能。

2. 导入模块。
   
   ```ts
41
   import notificationManager from '@ohos.notificationManager';
Z
zengyawen 已提交
42 43 44 45 46 47 48 49 50
   ```

3. 构造NotificationRequest对象,并发布通知。
   - 普通文本类型通知由标题、文本内容和附加信息三个字段组成,其中标题和文本内容是必填字段,大小均需要小于200字节。
     
      ```ts
      let notificationRequest = {
        id: 1,
        content: {
51
      	contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
Z
zengyawen 已提交
52 53 54 55 56 57 58 59
      	normal: {
      	  title: 'test_title',
      	  text: 'test_text',
      	  additionalText: 'test_additionalText',
      	}
        }
      }
      
60
      notificationManager.publish(notificationRequest, (err) => {
Z
zengyawen 已提交
61
          if (err) {
62
              console.error(`[ANS] publish failed, code is ${err.code}, message is ${err.message}`);
Z
zengyawen 已提交
63 64
              return;
          }
65
          console.info(`[ANS] publish success.`);
Z
zengyawen 已提交
66 67 68
      });
      ```

zyjhandsome's avatar
zyjhandsome 已提交
69
      运行效果如下图所示。  
Z
zengyawen 已提交
70 71 72 73 74 75 76
     ![zh-cn_image_0000001466782033](figures/zh-cn_image_0000001466782033.png)
   - 长文本类型通知继承了普通文本类型的字段,同时新增了长文本内容、内容概要和通知展开时的标题,其中长文本内容不超过1024字节,其他字段小于200字节。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,内容为长文本内容。
     
      ```ts
      let notificationRequest = {
        id: 1,
        content: {
77
      	contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT, // 长文本类型通知
Z
zengyawen 已提交
78 79 80 81 82 83 84 85 86 87 88 89
      	longText: {
      	  title: 'test_title',
      	  text: 'test_text',
      	  additionalText: 'test_additionalText',
      	  longText: 'test_longText',
      	  briefText: 'test_briefText',
      	  expandedTitle: 'test_expandedTitle',
      	}
        }
      }
      
      // 发布通知
90
      notificationManager.publish(notificationRequest, (err) => {
Z
zengyawen 已提交
91
          if (err) {
92
              console.error(`[ANS] publish failed, code is ${err.code}, message is ${err.message}`);
Z
zengyawen 已提交
93 94
              return;
          }
95
          console.info(`[ANS] publish success.`);
Z
zengyawen 已提交
96 97 98
      });
      ```
   
zyjhandsome's avatar
zyjhandsome 已提交
99
      运行效果如下图所示。  
Z
zengyawen 已提交
100 101 102 103 104 105 106
     ![zh-cn_image_0000001416745530](figures/zh-cn_image_0000001416745530.png)
   - 多行文本类型通知继承了普通文本类型的字段,同时新增了多行文本内容、内容概要和通知展开时的标题,其字段均小于200字节。通知默认显示与普通文本相同,展开后,标题显示为展开后标题内容,多行文本内容多行显示。
     
      ```ts
      let notificationRequest = {
        id: 1,
        content: {
107
      	contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE, // 多行文本类型通知
Z
zengyawen 已提交
108 109 110 111 112 113 114 115 116 117 118
      	multiLine: {
      	  title: 'test_title',
      	  text: 'test_text',
      	  briefText: 'test_briefText',
      	  longTitle: 'test_longTitle',
      	  lines: ['line_01', 'line_02', 'line_03', 'line_04'],
      	}
        }
      }
      
      // 发布通知
119
      notificationManager.publish(notificationRequest, (err) => {
Z
zengyawen 已提交
120
        if (err) {
121
      	console.error(`[ANS] publish failed, code is ${err.code}, message is ${err.message}`);
Z
zengyawen 已提交
122 123 124 125 126 127
      	return;
        }
        console.info(`[ANS] publish success`);
      });
      ```
   
zyjhandsome's avatar
zyjhandsome 已提交
128
      运行效果如下图所示。  
Z
zengyawen 已提交
129 130 131 132 133 134 135 136
     ![zh-cn_image_0000001417062446](figures/zh-cn_image_0000001417062446.png)
   - 图片类型通知继承了普通文本类型的字段,同时新增了图片内容、内容概要和通知展开时的标题,图片内容为PixelMap型对象,其大小不能超过2M。
     
      ```ts
      let notificationPicture: PixelMap = undefined; // 需要获取图片PixelMap信息
      let notificationRequest = {
          id: 1,
          content: {
137
      	contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_PICTURE,
zyjhandsome's avatar
zyjhandsome 已提交
138 139 140 141 142 143 144 145
              picture: {
                title: 'test_title',
                text: 'test_text',
                additionalText: 'test_additionalText',
                briefText: 'test_briefText',
                expandedTitle: 'test_expandedTitle',
                picture: notificationPicture
              }
Z
zengyawen 已提交
146 147 148 149
          }
      }
      
      // 发布通知
150
      notificationManager.publish(notificationRequest, (err) => {
Z
zengyawen 已提交
151
          if (err) {
152
      	console.error(`[ANS] publish failed, code is ${err.code}, message is ${err.message}`);
Z
zengyawen 已提交
153 154
      	return;
          }
155
          console.info(`[ANS] publish success.`);
Z
zengyawen 已提交
156 157 158
      });
      ```
   
zyjhandsome's avatar
zyjhandsome 已提交
159
      运行效果如下图所示。  
Z
zengyawen 已提交
160
     ![zh-cn_image_0000001466582045](figures/zh-cn_image_0000001466582045.png)