Hallo Zusammen,
habe folgendes Problem (D11, FMX, IOS):
Delphi-Quellcode:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
System.Notification, FMX.Controls.Presentation, FMX.StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
NotificationCenter1: TNotificationCenter;
procedure Button1Click(Sender: TObject);
procedure NotificationCenter1PermissionRequestResult(Sender: TObject;
const AIsGranted: Boolean);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
uses FMX.DialogService;
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
if NotificationCenter1.AuthorizationStatus <> TAuthorizationStatus.Authorized
then
begin
NotificationCenter1.RequestPermission;
end;
end;
procedure TForm1.NotificationCenter1PermissionRequestResult(Sender: TObject;
const AIsGranted: Boolean);
begin
if not AIsGranted
then
begin
TDialogService.ShowMessage
('
Die App kann Dir keine Nachrichten senden, da die erforderliche Berechtigung dazu nicht erteilt wurde.');
end;
end;
end.
Wenn man "nicht zulassen" auswählt bei der Abfrage auf dem Smartphone, wird NotificationCenter1PermissionRequestResult aufgerufen.
Das crasht dann mit "Im Projekt Project1 ist eine
Exception der Klasse
Exception mit der Meldung 'Meldungen müssen im Haupt-UI-Thread angezeigt werden.' aufgetreten."
Das kommt vom TDialogService.ShowMessage.
Kann ich, und wenn ja, wie, den "unbekannten" Thread der NotificationCenter1PermissionRequestResult aufruft, mit dem Mainthread synchronisieren ?
Wenn nein, unter
VCL hätte ich jetzt mit einem PostMessage gearbeitet. Gibt es in FMX ein eine äquivalente Möglichkeit dazu ?
Vielen Dank schon mal
Thomas