{$ifdef ANDROID}
const
sChannelID = '
MyChannelID';
// to have a custom sound you HAVE to use custom channel
// as the channel's sound is set at creation
//this is crucial bit...
// to use fileprovider you need to specify secure file sharing in the entitlements list
function GetFileUriStr(
const AFileName:
string):
string;
var
LFile: JFile;
begin
LFile := TJFile.JavaClass.init(StringToJString(AFileName));
Result := JStringToString(TAndroidHelper.JFileToJURI(LFile).toString);
end;
{$endif}
procedure TdmNotification.CreateDefaultNotificationChannel;
// wird vorab aufgerufen, z.B. im Create
var
NotificationChannel: TChannel;
begin
NotificationChannel := NotificationCenter.CreateChannel;
NotificationChannel.Id := sChannelID;
NotificationChannel.Title := '
Custom notification channel';
NotificationChannel.Description := '
Notification channel to test sound';
NotificationChannel.Importance := TImportance.High;
// NOTE: This is a 'heads-up notification'.
//the CONTENT URI string needs to be set here and will be used for the all THIS channel notifications
NotificationChannel.SoundName:= GetFileUriStr(GetSoundFileName);
NotificationCenter.CreateOrUpdateChannel(NotificationChannel);
end;
function TdmNotification.GetSoundFileName:
string;
begin
{$IFDEF IOS}
Result := '
mixkit-bell-notification-933.caf';
{$ELSE}
Result := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + '
mixkit-bell-notification-933.mp3';
{$ENDIF}
end;
procedure TdmNotification.CreateNotification(AlarmTime);
var Notification: TNotification;
begin
Notification := NotificationCenter.CreateNotification;
try
Notification.
Name :='
MyNotification';
Notification.Title :='
Test Notification Title';
Notification.AlertBody:='
Test Notification with individual sound';
{$ifdef ANDROID}
Notification.ChannelId := sChannelID;
{$else}
Notification.EnableSound:=true;
Notification.SoundName:= GetSoundFileName;
{$endif}
Notification.FireDate:= AlarmTime;
NotificationCenter.ScheduleNotification(Notification);
finally
Notification.Free;
end;
end;