马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
意图通知
获取router变乱中通报参数并跳转
目前点击通知消息打开应用的指定页面,通过为通知添加举动意图的方式。也就是在wants的parameters中设置自定义参数,然后在UIAbility的onNewWant大概onCreate方法中 解析配置的自定义参数信息判断跳转不同页面,参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/notification-with-wantagent-V5
在UIAbility根据通报的params不同,选择拉起不同的页面可参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-ui-widget-event-router-V5
- import { NavBar } from '../component/NavBar';
- import { notificationManager } from '@kit.NotificationKit';
- import { common, wantAgent } from '@kit.AbilityKit';
- import { hilog } from '@kit.PerformanceAnalysisKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- @Component
- @Entry
- struct DemoNotification {
- @State TAG: string = '[PublishOperation]';
- @State DOMAIN_NUMBER: number = 0xFF00;
- @State wantAgentInfo: wantAgent.WantAgentInfo = {
- wants: [
- {
- bundleName: "com.example.yumi",
- abilityName: "EntryAbility"
- }
- ],
- operationType: wantAgent.OperationType.START_ABILITY,
- requestCode: 100
- };
- onPageShow(): void {
- // 请求通知授权
- let context = getContext(this) as common.UIAbilityContext;
- notificationManager.isNotificationEnabled().then((data: boolean) => {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, "isNotificationEnabled success, data: " + JSON.stringify(data));
- if (!data) {
- notificationManager.requestEnableNotification(context).then(() => {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, `[ANS] requestEnableNotification success`);
- }).catch((err: BusinessError) => {
- if (1600004 == err.code) {
- hilog.error(this.DOMAIN_NUMBER, this.TAG,
- `[ANS] requestEnableNotification refused, code is ${err.code}, message is ${err.message}`);
- } else {
- hilog.error(this.DOMAIN_NUMBER, this.TAG,
- `[ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
- }
- });
- }
- }).catch((err: BusinessError) => {
- hilog.error(this.DOMAIN_NUMBER, this.TAG,
- `isNotificationEnabled fail, code is ${err.code}, message is ${err.message}`);
- });
- // 通知角标
- let badgeNumber: number = 10;
- notificationManager.setBadgeNumber(badgeNumber).then(() => {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, `setBadgeNumber 10 success.`);
- badgeNumber = 11;
- notificationManager.setBadgeNumber(badgeNumber).then(() => {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, `setBadgeNumber 11 success.`);
- });
- });
- }
- publishNotification() {
- let notificationRequest: notificationManager.NotificationRequest = {
- // 描述通知的请求
- id: 1, // 通知ID
- content: {
- // 通知内容
- notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
- normal: {
- // 基本类型通知内容
- title: '通知内容标题',
- text: '通知内容详情'
- }
- }
- }
- // addslot回调
- let addSlotCallBack = (err: BusinessError): void => {
- if (err) {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, `addSlot failed, code is ${err.code}, message is ${err.message}`);
- } else {
- hilog.info(this.DOMAIN_NUMBER, this.TAG, `addSlot success`);
- }
- }
- notificationManager.addSlot(notificationManager.SlotType.SOCIAL_COMMUNICATION, addSlotCallBack);
- notificationManager.publish(notificationRequest).then(() => { // 发布通知
- console.info('publish success');
- }).catch((err: Error) => {
- console.error(`publish failed,message is ${err}`);
- });
- }
- async publishNotificationWant() {
- let wantAgentInfo: wantAgent.WantAgentInfo = {
- wants: [
- {
- bundleName: "com.example.yumi", // 自己应用的bundleName
- abilityName: "EntryAbility",
- parameters: { page: 'view/Car' } // 自己点击通知需要跳转的页面
- }
- ],
- operationType: wantAgent.OperationType.START_ABILITIES,
- requestCode: 1,
- }
- const wantAgentObj = await wantAgent.getWantAgent(wantAgentInfo)
- await notificationManager.publish({
- content: {
- notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
- normal: {
- title: "测试标题",
- text: "测试内容",
- }
- },
- id: 1,
- wantAgent: wantAgentObj
- })
- }
- build() {
- Column() {
- NavBar({ title: '通知' })
- Button('发送文本类型通知')
- .onClick(() => {
- this.publishNotification()
- })
- Button('发送通知-为通知添加行为意图')
- .onClick(() => {
- this.publishNotificationWant()
- })
- }
- }
- }
复制代码- import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
- import { hilog } from '@kit.PerformanceAnalysisKit';
- import { router, Router, window } from '@kit.ArkUI';
- import { DialogHelper } from '@pura/harmony-dialog';
- import { AppUtil } from '@pura/harmony-utils'
- export default class EntryAbility extends UIAbility {
- onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
- AppUtil.init(this.context)
- }
- onDestroy(): void {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
- }
- onWindowStageCreate(windowStage: window.WindowStage): void {
- // Main window is created, set main page for this ability
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
- windowStage.loadContent('pages/Splash')
- }
- onWindowStageDestroy(): void {
- // Main window is destroyed, release UI related resources
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
- }
- onForeground(): void {
- // Ability has brought to foreground
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
- }
- onBackground(): void {
- // Ability has back to background
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
- }
- onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
- hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onNewWant');
- //点击Notification通知并打开App的具体页面
- let page = want?.parameters?.page as string
- router.pushUrl({
- url: page
- })
- console.log('want参数'+want?.parameters?.page)
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |