From e82902e7b363b11f3d2262696204aa061c9b4853 Mon Sep 17 00:00:00 2001 From: zyjhandsome <zyjhandsome@126.com> Date: Mon, 19 Dec 2022 19:05:56 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=A6=82=E8=BF=B0=E4=B8=AD=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0WantAgent=E7=9A=84=E8=B6=85=E9=93=BE=E6=8E=A5=EF=BC=9B?= =?UTF-8?q?2=E3=80=81=E5=BC=80=E5=8F=91=E6=AD=A5=E9=AA=A4=E4=B8=AD?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=AC=AC=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=EF=BC=9A=E4=BD=BF=E8=83=BD=E9=80=9A=E7=9F=A5=E5=BC=80=E5=85=B3?= =?UTF-8?q?=EF=BC=9B3=E3=80=81=E5=9C=BA=E6=99=AF=E4=BA=8C=E4=B8=AD?= =?UTF-8?q?=EF=BC=8C=E5=85=AC=E5=85=B1=E4=BA=8B=E4=BB=B6=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=B6=85=E9=93=BE=E6=8E=A5=EF=BC=9B4=E3=80=81=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E6=9E=84=E9=80=A0NotificationRequest=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E5=B9=B6=E5=8F=91=E5=B8=83WantAgent=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=EF=BC=8C=E4=B8=A4=E4=B8=AA=E6=AD=A5=E9=AA=A4=E4=B8=BA?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=AD=A5=E9=AA=A4=EF=BC=8C=E4=B8=8E=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E7=9A=84=E5=85=B6=E4=BB=96=E9=83=A8=E5=88=86=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4=EF=BC=9B5?= =?UTF-8?q?=E3=80=81=E7=AC=AC6=E6=AD=A5=EF=BC=8C=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=82=B9=E5=87=BB=E9=80=9A=E7=9F=A5=E6=A0=8F?= =?UTF-8?q?=E4=B8=8A=E7=9A=84=E9=80=9A=E7=9F=A5=EF=BC=8C=E8=BF=99=E6=98=AF?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=87=AA=E5=8A=A8=E8=A7=A6=E5=8F=91=E7=9A=84?= =?UTF-8?q?=E8=A1=8C=E4=B8=BA=EF=BC=8C=E6=97=A0=E9=A1=BB=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E8=80=85=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit start build Signed-off-by: zyjhandsome <zyjhandsome@126.com> --- .../notification-with-wantagent.md | 77 ++++++++----------- 1 file changed, 31 insertions(+), 46 deletions(-) diff --git a/zh-cn/application-dev/notification/notification-with-wantagent.md b/zh-cn/application-dev/notification/notification-with-wantagent.md index f3c5d56e3d..a511ca4d80 100644 --- a/zh-cn/application-dev/notification/notification-with-wantagent.md +++ b/zh-cn/application-dev/notification/notification-with-wantagent.md @@ -1,11 +1,8 @@ # ä¸ºé€šçŸ¥æ·»åŠ è¡Œä¸ºæ„图 +[WantAgent](../reference/apis/js-apis-wantAgent.md)æ供了å°è£…行为æ„图的能力,该行为æ„图是指拉起指定的应用组件åŠå‘布公共事件ç‰èƒ½åŠ›ã€‚OpenHarmony支æŒä»¥é€šçŸ¥çš„å½¢å¼ï¼Œå°†[WantAgent](../reference/apis/js-apis-wantAgent.md)从å‘å¸ƒæ–¹ä¼ é€’è‡³æŽ¥æ”¶æ–¹ï¼Œä»Žè€Œåœ¨æŽ¥æ”¶æ–¹è§¦å‘[WantAgent](../reference/apis/js-apis-wantAgent.md)ä¸æŒ‡å®šçš„æ„图。例如在通知消æ¯çš„å‘布者å‘布通知时,通常期望用户å¯ä»¥é€šè¿‡é€šçŸ¥æ ç‚¹å‡»æ‹‰èµ·ç›®æ ‡åº”ç”¨ç»„ä»¶ã€‚ä¸ºäº†è¾¾æˆè¿™ä¸€ç›®æ ‡ï¼Œå¼€å‘者å¯ä»¥å°†[WantAgent](../reference/apis/js-apis-wantAgent.md)å°è£…至通知消æ¯ä¸ï¼Œå½“系统接收到[WantAgent](../reference/apis/js-apis-wantAgent.md)åŽï¼Œåœ¨ç”¨æˆ·ç‚¹å‡»é€šçŸ¥æ 时触å‘[WantAgent](../reference/apis/js-apis-wantAgent.md)çš„æ„å›¾ï¼Œä»Žè€Œæ‹‰èµ·ç›®æ ‡åº”ç”¨ç»„ä»¶ã€‚ -WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主è¦æ˜¯æŒ‡æ‹‰èµ·æŒ‡å®šçš„应用组件åŠå‘布公共事件ç‰èƒ½åŠ›ã€‚OpenHarmony支æŒä»¥é€šçŸ¥çš„å½¢å¼ï¼Œå°†WantAgent从å‘å¸ƒæ–¹ä¼ é€’è‡³æŽ¥æ”¶æ–¹ï¼Œä»Žè€Œåœ¨æŽ¥æ”¶æ–¹è§¦å‘WantAgentä¸æŒ‡å®šçš„æ„图。例如,在通知消æ¯çš„å‘布者å‘布通知时,通常期望用户å¯ä»¥é€šè¿‡é€šçŸ¥æ ç‚¹å‡»æ‹‰èµ·ç›®æ ‡åº”ç”¨ç»„ä»¶ã€‚ä¸ºäº†è¾¾æˆè¿™ä¸€ç›®æ ‡ï¼Œå¼€å‘者å¯ä»¥å°†WantAgentå°è£…至通知消æ¯ä¸ï¼Œå½“系统接收到WantAgentåŽï¼Œåœ¨ç”¨æˆ·ç‚¹å‡»é€šçŸ¥æ 时触å‘WantAgentçš„æ„å›¾ï¼Œä»Žè€Œæ‹‰èµ·ç›®æ ‡åº”ç”¨ç»„ä»¶ã€‚ - - -ä¸ºé€šçŸ¥æ·»åŠ è¡Œä¸ºæ„图的实现方å¼å¦‚下图所示:å‘布通知的应用å‘应用组件管ç†æœåŠ¡AMS(Ability Manager Service)申请WantAgent,然åŽéšå…¶ä»–通知信æ¯ä¸€èµ·å‘é€ç»™æ¡Œé¢ï¼Œå½“用户在桌é¢é€šçŸ¥æ 上点击通知时,触å‘WantAgent动作。 - +ä¸ºé€šçŸ¥æ·»åŠ è¡Œä¸ºæ„图的实现方å¼å¦‚下图所示:å‘布通知的应用å‘应用组件管ç†æœåŠ¡AMS(Ability Manager Service)申请[WantAgent](../reference/apis/js-apis-wantAgent.md),然åŽéšå…¶ä»–通知信æ¯ä¸€èµ·å‘é€ç»™æ¡Œé¢ï¼Œå½“用户在桌é¢é€šçŸ¥æ 上点击通知时,触å‘[WantAgent](../reference/apis/js-apis-wantAgent.md)动作。 **图1** æºå¸¦è¡Œä¸ºæ„图的通知è¿è¡Œæœºåˆ¶ ![notification-with-wantagent](figures/notification-with-wantagent.png) @@ -13,7 +10,7 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 ## 接å£è¯´æ˜Ž -具体接å£æ述,详è§[WantAgent接å£æ–‡æ¡£](../reference/apis/js-apis-wantAgent.md#wantagent%E6%A8%A1%E5%9D%97)。 +具体接å£æ述,详è§[WantAgent接å£æ–‡æ¡£](../reference/apis/js-apis-wantAgent.md)。 | | | | -------- | -------- | @@ -27,26 +24,29 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 ## å¼€å‘æ¥éª¤ -1. 导入模å—。 - - ```ts +1. [使能通知开关](notification-enable.md),获得用户授æƒåŽï¼Œæ‰èƒ½ä½¿ç”¨é€šçŸ¥åŠŸèƒ½ã€‚ + +2. 导入模å—。 + + ```typescript import NotificationManager from '@ohos.notificationManager'; import wantAgent from '@ohos.app.ability.wantAgent'; ``` -2. 创建WantAgentInfoä¿¡æ¯ã€‚ - 场景一:创建拉起Abilityçš„WantAgentçš„WantAgentInfoä¿¡æ¯ã€‚ - - ```ts +3. 创建WantAgentInfoä¿¡æ¯ã€‚ + + 场景一:创建拉起UIAbilityçš„WantAgentçš„WantAgentInfoä¿¡æ¯ã€‚ + + ```typescript let wantAgentObj = null; // 用于ä¿å˜åˆ›å»ºæˆåŠŸçš„wantAgent对象,åŽç»ä½¿ç”¨å…¶å®Œæˆè§¦å‘的动作。 - // 通过WantAgentInfoçš„operationType设置动作类型。 + // 通过WantAgentInfoçš„operationType设置动作类型 let wantAgentInfo = { wants: [ { deviceId: '', - bundleName: 'com.example.test', - abilityName: 'com.example.test.MainAbility', + bundleName: 'com.example.myapplication', + abilityName: 'EntryAbility', action: '', entities: [], uri: '', @@ -56,19 +56,19 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 operationType: wantAgent.OperationType.START_ABILITY, requestCode: 0, wantAgentFlags:[wantAgent.WantAgentFlags.CONSTANT_FLAG] - } + }; ``` - 场景二:创建å‘布公共事件的WantAgentçš„WantAgentInfoä¿¡æ¯ã€‚ - - ```ts + 场景二:创建å‘布[公共事件](../application-models/common-event-overview.md)çš„WantAgentçš„WantAgentInfoä¿¡æ¯ã€‚ + + ```typescript let wantAgentObj = null; // 用于ä¿å˜åˆ›å»ºæˆåŠŸçš„WantAgent对象,åŽç»ä½¿ç”¨å…¶å®Œæˆè§¦å‘的动作。 - // wantAgentInfo + // 通过WantAgentInfoçš„operationType设置动作类型 let wantAgentInfo = { wants: [ { - action: 'event_name', // 设置事件å。 + action: 'event_name', // 设置事件å parameters: {}, } ], @@ -78,12 +78,12 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 } ``` -3. 创建WantAgent。 - - ```ts +4. 调用[getWantAgent()](../reference/apis/js-apis-wantAgent.md#wantagentgetwantagent)方法进行创建WantAgent。 + + ```typescript // 创建WantAgent wantAgent.getWantAgent(wantAgentInfo, (err, data) => { - if (err) { + if (err.code === 0) { console.error('[WantAgent]getWantAgent err=' + JSON.stringify(err)); } else { console.info('[WantAgent]getWantAgent success'); @@ -92,9 +92,9 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 }); ``` -4. æž„é€ NotificationRequest对象。 - - ```ts +5. æž„é€ NotificationRequest对象,并å‘布WantAgent通知。 + + ```typescript // æž„é€ NotificationRequest对象 let notificationRequest = { content: { @@ -109,29 +109,14 @@ WantAgentæ供了å°è£…行为æ„图的能力,这里所说的行为æ„图主 label: 'TEST', wantAgent: wantAgentObj, } - ``` - -5. å‘布WantAgent通知。 - ```ts - // 通知å‘é€ NotificationManager.publish(notificationRequest, (err) => { if (err) { console.error(`[ANS] failed to publish, error[${err}]`); return; } - console.info(`[ANS] publish success `); + console.info(`[ANS] publish success`); }); ``` -6. 用户通过点击通知æ 上的通知,触å‘WantAgent的动作。 - - ```ts - // 触å‘WantAgent - let triggerInfo = { - code: 0 - } - wantAgent.trigger(wantAgentObj, triggerInfo, (completeData) => { - console.info('[WantAgent]getWantAgent success, completeData: ', + JSON.stringify(completeData)); - }); - ``` +6. 用户通过点击通知æ 上的通知,系统会自动触å‘WantAgent的动作。 -- GitLab