本教程描述了在移动设备上使用通知
查看更多关于 通知 的文章
的基本步骤。
三个基本通知或报警样式
当用户在他们的移动设备上设置应用程序通知时,通知可以从这里显示的三种基本样式发送给应用程序。横幅简短显示,但警告对话框需要用户解除通知。
移动设备上的通知横幅
IOS
Android
警告对话框:IOS标记号和Android通知号
IOS标记号
Android通知号
移动设备通知中心
下面的图片显示了在iPad(Notification Center)和Android(notification drawer)上的通知中心,用户可以下拉所有最近通知的列表。
IOS
Android
访问通知服务
RAD Studio提供了TNotificationCenter控件让您轻松访问通知服务。
要访问通知服务,请执行以下操作:
- 1、创建一个新的移动应用程序:
- Delphi: File > New > Multi-Device Application
- C++: File > New > Multi-Device Application
- 2、选择工具面板Tool Palette中的TNotificationCenter组件,然后把它放在窗体设计器Form Designer上。
- 检查以下单元已自动添加到项目中:
- 对于Delphi应用程序,如果不存在,请将下列单元添加到Uses中:
- uses
- System.Notification;
- 对于C++应用程序,添加以下include关键字到项目的头文件(.h文件):
-
1
#include <System.Notification.hpp>
- 对于Delphi应用程序,如果不存在,请将下列单元添加到Uses中:
1 | System.Notification.TNotificationCenter.CreateNotification |
方法允许您创建一个TNotification类对象实例。
添加FMLocalNotificationPermission (iOS)
FMLocalNotificationPermission 键/值对(Key/Value)在项目选项的版本信息页面启用。
- 1、选择 Project > Options > Version Info.
- 2、在Target区域选择Debug configuration - iOS device - 32-bit platform。
- 3、设置FMLocalNotificationPermission的Value区域为True。
FMLocalNotificationPermission 在iOS 8 +设备设置启用本地通知:
从代码中设置图标标记号和通知号
TNotification.Number定义了图标标记号(iOS设备)和通知号(Android设备)。
设置iOS图标标记号(Delphi或C++)或Android通知号(仅用于Delphi应用程序),您需要执行相应的方法。
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为SetNumber。
- 3、双击这个按钮,在SetNumber按钮上创建OnClick事件。
- 4、在SetNumber按钮的OnClick事件执行以下代码:
Delphi
procedure TForm1.SetNumberClick(Sender: TObject);
var
MyNotification: TNotification;
begin
// 创建TNotification实例
MyNotification := NotificationCenter1.CreateNotification;
try
// --- 你的代码 ---
// 设置图标或通知号
MyNotification.Number :=18;
// 设置警告信息
MyNotification.AlertBody := 'Delphi创建的移动设备在这里!';
// 注意:您必须将通知发送到通知中心,以显示要显示的图标标记号。
NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.DisposeOf;
end;
end;
C++
void __fastcall TForm1::SetNumberClick(TObject *Sender)
{
if (NotificationCenter1->Supported()) {
TNotification *myNotification = NotificationCenter1->CreateNotification();
__try {
myNotification->Number = 18;
myNotification->AlertBody = "C++创建的移动应用";
NotificationCenter1->PresentNotification(myNotification);
}
__finally {
myNotification->DisposeOf();
}
}
}
应用程序图标上的一个徽章(在iOS主屏幕上):运行程序后(按F9),点击SetNumber按钮,你可以看到如下所示:
计划通知
你也可以从TCustomNotificationCenter继承的TNotificationCenter类中使用ScheduleNotification方法安排通知信息。
要显示通知消息,你需要创建一个TNotification类的实例,然后定义Name, AlertBody, and FireDate区域。
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为ScheduleNotification。
- 3、双击这个按钮,在ScheduleNotification按钮上创建OnClick事件。
4、在ScheduleNotification按钮的OnClick事件执行以下代码:
Delphi
procedure TForm1.SetNumberClick(Sender: TObject);
var
MyNotification: TNotification;
begin
// 创建TNotification实例
MyNotification := NotificationCenter1.CreateNotification;
try
// --- 你的代码 ---
// 设置图标或通知号
MyNotification.Number :=18;
// 设置警告信息
MyNotification.AlertBody := 'Delphi创建的移动设备在这里!';
// 注意:您必须将通知发送到通知中心,以显示要显示的图标标记号。
NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.DisposeOf;
end;
end;
C++
void __fastcall TForm1::ScheduleNotificationClick(TObject *Sender){
if (NotificationCenter1->Supported()) {
TNotification *myNotification = NotificationCenter1->CreateNotification();
__try {
myNotification->Name = "MyNotification";
myNotification->AlertBody = "C++ 创建的移动应用!";
// Fire in 10 seconds
myNotification->FireDate = Now() + EncodeTime(0, 0, 10, 0);
// Send notification to the notification center
NotificationCenter1->ScheduleNotification(myNotification); }
__finally {
myNotification->DisposeOf(); }
}}
重复消息通知运行程序后(按F9),点击ScheduleNotification按钮,你可以看到通知消息(AlertBody)在你的设备的主屏幕上。对于iOS设备,此消息类似于如下所示:
你也可以使用的TNotification对象的RepeatInterval属性重复通知消息。
重复通知消息,你需要创建的TNotification类的一个实例,然后定义Name, AlertBody, and FireDate区域。
你也可以用ScheduleNotification方法并设置RepeatInterval属性。在下面的代码中,重复的间隔设置为一分钟。
-
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为RepeatedNotification。
- 3、双击这个按钮,在RepeatedNotification按钮上创建OnClick事件。
- 4、在RepeatedNotification按钮的OnClick事件执行以下代码:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.RepeatedNotificationClick(Sender: TObject);
var
MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Title := 'MyNotification';
MyNotification.AlertBody := '没分钟重复消息!';
//十秒后Fired
MyNotification.FireDate := Now + EncodeTime(0, 0, 10, 0);
//每分钟重复
MyNotification.RepeatInterval := TRepeatInterval.Minute;
// 发送通知到通知中心
NotificationCenter1.ScheduleNotification(MyNotification);
finally
MyNotification.Free;
end;
end;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::RepeatedNotificationClick(TObject *Sender) {
if (NotificationCenter1->Supported()) {
TNotification *myNotification =
NotificationCenter1->CreateNotification();
__try {
myNotification->Name = "MyNotification";
myNotification->AlertBody = "每分钟重复消息!";
// Fire in 10 seconds
myNotification->FireDate = Now() + EncodeTime(0, 0, 10, 0);
// Repeated each minute
myNotification->RepeatInterval = TRepeatInterval::Minute;
// Send notification to the notification center
NotificationCenter1->ScheduleNotification(myNotification);
}
__finally {
myNotification->Free();
}
}
}
运行程序后(按F9),点击RepeatedNotification按钮,你可以看到通知消息(AlertBody)在你的设备的主屏幕上。对于iOS设备,此消息类似于如下所示:
更新或取消预定的或重复的通知消息。
每个计划通知消息通过TNotification对象的Name属性确定
注:对于iOS平台,CancelNotification和ScheduleNotification未展现可以取消或更新这些通知。
更新计划通知,只需调用具有相同名称的实例(名称属性)TNotification的ScheduleNotification方法。
取消计划通知,你可以简单的调用你使用的定义标识符CancelNotification方法。-
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为CancelNotification。
- 3、双击这个按钮,在CancelNotification按钮上创建OnClick事件。
- 4、在CancelNotification按钮的OnClick事件执行以下代码:
Delphi
1
2
3
4
procedure TForm1.CancelNotificationClick(Sender: TObject);
begin
NotificationCenter1.CancelNotification('MyNotification');
end;
C++
1
2
void __fastcall TForm1::CancelNotificationClick(TObject *Sender)
NotificationCenter1->CancelNotification("MyNotification");
立即提交通知消息。
你也可以通过PresentNotification方法立即显示通知消息。
显示通知消息,你需要创建的TNotification类的一个实例,然后定义Name和AlertBody 领域。-
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为PresentNotification。
- 3、双击这个按钮,在PresentNotification按钮上创建OnClick事件。
- 4、在PresentNotification按钮的OnClick事件执行以下代码:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.PresentNotificationClick(Sender: TObject);
var
MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name := 'MyNotification';
MyNotification.AlertBody := 'Delphi for your mobile device is here!';
// 设置图标标记号(IOS)或消息号(Android)
MyNotification.Number := 18;
MyNotification.EnableSound := False;
// 将消息发送到通知中心
NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.DisposeOf;
end;
end;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::PresentNotificationClick(TObject *Sender)
{
if (NotificationCenter1->Supported()) {
TNotification *myNotification = NotificationCenter1->CreateNotification();
__try {
myNotification->Name = "MyNotification";
myNotification->AlertBody = "C++ for your mobile device is here!";
// 设置图标标记号(IOS)或消息号(Android)
myNotification->Number = 18;
myNotification->EnableSound = False;
// 将消息发送到通知中心
NotificationCenter1->PresentNotification(myNotification);
}
__finally {
myNotification->DisposeOf();
}
}
}
定制通知声音
你也可以通过TNotification对象的SoundName属性为通知消息自定义声音。
你需要创建一个TNotification类的实例,定义EnableSound 和SoundName属性。您还需要指定声音文件和文件扩展名的完整路径。-
- 1、在Form上放一个TButton控件。
- 2、在对象查看器Object Inspector上更改Name属性为SoundNotification。
- 3、双击这个按钮,在SoundNotification按钮上创建OnClick事件。
- 4、在SoundNotification按钮的OnClick事件执行以下代码:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.SoundNotificationClick(Sender: TObject);
var
MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name := 'MyNotification';
MyNotification.AlertBody := 'Delphi创建的移动应用';
MyNotification.EnableSound := True;
MyNotification.SoundName := GetSoundName;
MyNotification.FireDate := Now + EncodeTime(0, 0, 10, 0);
// 发送消息到通知中心
NotificationCenter1.ScheduleNotification(MyNotification);
finally
MyNotification.Free;
end;
end;
C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//在.cpp文件中,添加以下代码
void __fastcall TForm1::SoundNotificationClick(TObject *Sender)
{
TNotification *myNotification = NotificationCenter1->CreateNotification();
__try {
myNotification->Name = "MyNotification";
myNotification->AlertBody = "C++创建的移动应用!";
myNotification->EnableSound = true;
myNotification->SoundName = GetSoundName();
myNotification->FireDate = Now() + EncodeTime(0, 0, 10, 0);
//发送消息到通知中心
NotificationCenter1->ScheduleNotification(myNotification);
}
__finally {
myNotification->Free();
}
}
-
-
-