了解更多开源内容请访问:51CTO开源基础软件社区https://ost.51cto.com前言通知是手机软件推送通知,一般需要设置通知权限允许通知,才能在状态栏中查看通知。主要有以下几种使用场景:应用内通知:如微信新消息提醒、部分APP广告推送、APP版本更新等。系统通知,如低电量、短信提醒等。显示正在进行的事件,如音乐播放、下载等是通知。效果展示实现步骤1.定义触发通知的事件(1)首先需要定义UI(一般不需要UI,本例定义UI是为了方便获取触发事件)。{{$t('strings.startInputNotifiction')}}{{$t('strings.startButtonNotification')}}{{$t('strings.cancelNotifiction')}}(2)实现JSFA调用PA的逻辑,从'@system.prompt'实现点击事件导入提示;exportdefault{//文本通知clickStartInputNotification:function(){this.showToast("clickStartInputNotification");这个。通知(0x1001);},//图片通知clickStartButtonNotification:function(){this.showToast("clickStartButtonNotification");this.notification(0x1002);},//取消通知clickCancelNotification:function(){this.showToast("点击取消通知");这个。通知(0x1003);},//初始化动作initAction:function(code){varactionData={};actionData.notify="这个actionData是JS形成的";变种行动={};action.bundleName="com.chinasoft.example";action.abilityName="NotificationAbility";action.messageCode=代码;action.data=actionData;action.abilityType=1;action.syncOption=0;返回动作;},//调用PA通知:asyncfunction(code){try{varaction=this.initAction(code);varresult=awaitFeatureAbility.callAbility(action);console.info("结果="+结果);this.showToast(结果);}catch(pluginError){console.error("startNotification:PluginError="+pluginError);}},}2.实现通知的逻辑(1)在项目中实现onRemoteRequest()方法新建一个继承自AceInter的InternalAbilitynalAbility,实现onRemoteRequest()方法/**JS端调用FeatureAbility.callAbility(OBJECT)接口时调用该方法,通过JS发送的指令执行相应的功能。**/publicbooleanonRemoteRequest(intcode,MessageParceldata,MessageParcelreply,MessageOptionoption){Stringresult=data.readString();switch(code){case0x1001:startTextNotification(reply);//文本类型break的通知;case0x1002:startPictureNotification(reply);//图片类型的通知中断;case0x1003:cancelNotification(reply);//取消通知break;default:reply.writeString("Serviceisnotdefined");//如果没有对应的命令,则Reply返回false;}返回真;}(2)MainAbility中的注册和注销@OverridepublicvoidonStart(Intentintent){super.onStart(intent);NotificationAbility.register(this);//MainAbility创建时Register}@OverridepublicvoidonStop(){super.onStop();NotificationAbility.deRegister();//当Ability被销毁时注销}(3)Notification开发步骤Notification相关的基础类包括NotificationSlot、NotificationRequest和NotificationHelperNotificationSlot可以设置提示音、震动、重要程度等。一个应用可以创建一个或多个NotificationSlots,在发布通知时,绑定不同的NotificationSlots来达到不同的目的。NotificationRequest用于设置具体的通知对象,包括设置通知属性,如:通知分发时间、小图标、大图标、自动删除等参数,以及设置具体的通知类型,如普通文本、长文本等。NotificationHelper封装了发布、更新、删除通知等静态方法。这里主要通过短信通知和图片消息通知来介绍。定义通知类型并设置基本属性和内容。设置文本通知的标题文本、通知标题和通知内容。//1。设置通知类型,设置通知的标题、文本等属性NotificationRequest.NotificationNormalContentnormalContent=newNotificationRequest.NotificationNormalContent();normalContent.setTitle("短信通知");//设置通知的标题normalContent.setAdditionalText("Headertext");//设置通知的头部文本normalContent.setText("这是一条短信通知");//设置通知的文字内容设置图片通知的头文字、通知的标题、通知的短介绍、通知图片。pictureContent.setTitle("通知");像素图pixelMap=getPixMap();pictureContent.setBigPicture(pixelMap);//设置通知显示图片pictureContent.setAdditionalText("这是一个图片通知");//设置通知的标题文本pictureContent.setBriefText("通知介绍");//设置通知的简要介绍,定义通知的响应按钮。如果响应按钮是文本,则需要将构建器的第一个参数设置为空。如果响应按钮是图片,需要将builder的第一个参数设置为PixelMap对象。//2。设置通知的响应按钮IntentAgentintentAgent=setIntentAgent();NotificationActionButtonactionButton=newNotificationActionButton.Builder(null,"Reply",intentAgent)//设置回复按钮的文字内容和设置回复的动作.addNotificationUserInput(newNotificationUserInput.Builder("QUICK_NOTIFICATION_REPLY").setTag("Inputtext").build())//设置回复消息的tag.setSemanticActionButton(NotificationConstant.SemanticActionButton.ARCHIVE_ACTION_BUTTON).setAutoCreatedReplies(false).build();NotificationRequest是通过NotificationRequest对象设置的封装消息,设置通知内容、ID和回复按钮。NotificationRequest.NotificationContentnotificationContent=newNotificationRequest.NotificationContent(normalContent);//将normalContent作为参数传递给NotificationRequest对象NotificationRequestnotificationRequest=newNotificationRequest(100);//设置通知idnotificationRequest.setContent(notification/objectsettingnotificationRequest);/ContentnotificationRequest.addActionButton(actionButton);//在notificationRequest中添加回复动作按钮,发布通知(通知发布后,手机状态栏会显示通知信息)。通过调用NotificationHelper的publishNotification(NotificationRequestnotificationRequest)。NotificationHelper.publishNotification(notificationRequest);取消通知(取消通知后,通知将从手机状态栏消失)。通过调用NotificationHelper的cancelNotification(notificationid)方法实现,通过notificationid标识通知。NotificationHelper.cancelNotification(100);其他功能,如果要设置通知声音、振动、重要程度等,需要使用NotificationSlot对象,需要在发布前设置。其主要界面如下。接口名称说明NotificationSlot(Stringid,Stringname,intlevel)构造NotificationSlot。setLevel(intlevel)设置NotificationSlot的级别。setName(Stringname)设置NotificationSlot的名称。setDescription(Stringdescription)设置NotificationSlot的描述信息。enableBypassDnd(booleanbypassDnd)设置是否绕过系统免打扰模式。setEnableVibration(booleanvibration)设置是否在收到通知时启用振动。setEnableLight(booleanisLightEnabled)设置是否在收到通知时开启呼吸灯,前提是当前硬件支持呼吸灯。setLedLightColor(intcolor)设置收到通知时呼吸灯的颜色。注意:此对象仅在真实设备上具有真实效果。综上所述,以上就是一个消息通知开发的完整流程。消息通知应用是APP不可或缺的一部分,是APP与用户交互的一个渠道。了解更多开源信息,请访问:51CTO开源基础软件社区https://ost.51cto.com。