https://www.cnblogs.com/FKdelphi/p/4782124.html
相关资料:
1.官网实例:http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_the_Notification_Center_(iOS_and_Android)
结果:
1.二个按钮可以新建消息提醒,最小化也是新建消息提醒。
2.程序必须最小化后才能点击消息提醒Label2才会有反映。
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Notification, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Platform;//需要引入 type TForm1 = class(TForm) NotificationCenter1: TNotificationCenter; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure NotificationCenter1ReceiveLocalNotification(Sender: TObject; ANotification: TNotification); private flag: Boolean; function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} {$R *.NmXhdpiPh.fmx ANDROID} //延时新建一个消息提醒 procedure TForm1.Button1Click(Sender: TObject); var MyNotification: TNotification; begin //通过消息中心创建消息 MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := '消息的名称'; //设置消息的名称 MyNotification.AlertBody := '消息的内容'; //设置消息的内容 MyNotification.Number := 18;//设置图标标号 MyNotification.FireDate := Now + EncodeTime(0,0, 10, 0); //设置 10 秒后触发消息 //将消息提交消息中心,并于指定时间触发 NotificationCenter1.ScheduleNotification(MyNotification); Label2.Text := ''; finally MyNotification.DisposeOf; //释放消息接口 end; end; //即时新建消息提醒 procedure TForm1.Button2Click(Sender: TObject); var MyNotification: TNotification; begin MyNotification :=NotificationCenter1.CreateNotification; //通过消息中心创建消息 try MyNotification.Name:= '消息的名称'; //设置消息的名称 MyNotification.AlertBody := '消息的内容'; //设置消息的内容 MyNotification.Number := 18;//设置图标标号 MyNotification.EnableSound := True;//有提示音 NotificationCenter1.PresentNotification(MyNotification); //将消息提交消息中心 Label2.Text := ''; finally MyNotification.DisposeOf; //释放消息接口 end; end; //取消消息提醒 procedure TForm1.Button3Click(Sender: TObject); begin NotificationCenter1.CancelNotification('消息的名称'); end; //主要是为程序挂接事件 procedure TForm1.FormCreate(Sender: TObject); var aFMXApplicationEventService: IFMXApplicationEventService; begin flag := True; if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent) else flag := False; end; //将要挂接在程序上的事件,此事件是最小化时新建一个消息提醒 function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var MyNotification: TNotification; begin if flag = False then Exit; case AAppEvent of TApplicationEvent.aeEnteredBackground://监测,当程序后台运行时执行以下事件 begin //通过消息中心创建消息 MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name :='消息的名称'; //设置消息的名称 //设置消息的内容 MyNotification.AlertBody := '消息的内容'; MyNotification.Number := 18; //设置图标标号 MyNotification.EnableSound := True; NotificationCenter1.PresentNotification(MyNotification); //将消息提交消息中心 Label2.Text := ''; finally MyNotification.DisposeOf; //释放消息接口 end; end; end; Result := True; end; //程序最小化后,点消提醒时,发生此事件 procedure TForm1.NotificationCenter1ReceiveLocalNotification(Sender: TObject; ANotification: TNotification); begin //收到消息后程序的操作 Label2.Text := '收到' + ANotification.Name + '的消息!'; end; end.