如何让 firemonkey 在 iOS 上显示本地通知?

How can I get firemonkey to display a local notification on iOS?

我从 Embarcadero 站点 (here) 提取了以下代码以生成本地通知。

procedure TForm1.SetNumberClick(Sender: TObject);
var
  MyNotification: TNotification;
begin
  // Create an instance of TNotification
  MyNotification := NotificationCenter1.CreateNotification;
  try
      MyNotification.Number :=18;
      MyNotification.AlertBody := 'Delphi for your mobile device is here!';
      NotificationCenter1.PresentNotification(MyNotification);
  finally
    MyNotification.DisposeOf;
  end;
end;

编译运行。正如预期的那样,我确实必须在我的表单上创建 NotificationCenter1 作为 TNotificationCenter。它可以在 Android 下找到,但在 iOS 下我得到了 butkus。没有本地通知,没有图标计数,甚至没有错误。

它曾经在 XE8 下工作过吗?

XE8 和 10/西雅图之间的本地通知有什么变化吗?

我的 phone 是 运行 iOS 9.2。 iOS 在 8.x 和 9.x 之间是否发生了某些更改,从而破坏了 Firemonkey 的本地通知?

我之前遵循了tutorial,而且有效。

还有两个示例应用随 10 Seattle 一起提供。

我刚刚在 iOS 9.2 和 Delphi 10 Seattle Update 1 上尝试了这两个,它们按我的预期工作。 (也在 XE8 中工作)。您的代码看起来也正确。

也许在某些时候你告诉 iOS 不要向你显示通知。您是否检查了应用程序设置?

最终的解决方案有两个:

  1. 您必须将 FMLocalNotificationPermission 设置为 true(项目 -> 选项 -> 版本信息)
  2. 如果应用 运行 在前台(例如,您已经返回主屏幕、关闭应用程序等)。这与 ScheduleNotification 和 PresentNotification 方法有关。