Delphi C++移动教程:使用通知Notification(IOS和Android)

本教程描述了在移动设备上使用通知

查看更多关于 通知 的文章

的基本步骤。

三个基本通知或报警样式

当用户在他们的移动设备上设置应用程序通知时,通知可以从这里显示的三种基本样式发送给应用程序。横幅简短显示,但警告对话框需要用户解除通知。

移动设备上的通知横幅

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中:
      1. uses
      2.   System.Notification;
    • 对于C++应用程序,添加以下include关键字到项目的头文件(.h文件):
    •  

      1

      #include <System.Notification.hpp>

 

 

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按钮,你可以看到如下所示:

  • 通知中心旁边的通知号(在Android上):

计划通知

你也可以从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();

                          }

                  }

                   

展开阅读全文

没有更多推荐了,返回首页