只需添加到勒內·霍夫曼的回答
爲什麼你只能使用那些重複間隔的原因是因爲你可以不設置與iOS, 定製的重複間隔,因爲它使用了UILocalNotification
對象及其RepeatInterval需要NSCalendarUnit
這是一個枚舉類型。
https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/#//apple_ref/occ/instp/UILocalNotification/repeatInterval
而Android在otherhand,如果你想使一個重複的通知,你可以使用AlarmManager.setRepeating
方法 所以如果你想使本地重複通知,將針對Android,你可以做這方面的工作:
TNotification
駐留在System.Notification
屬性添加到它:
{$IFDEF ANDROID}
RepeatIntervalinMills : Integer;
{$ENDIF}
在TNotification.Create
只是給它一個默認值
{$IFDEF ANDROID}
RepeatIntervalinMills := 0;
{$ENDIF}
現在,我們需要添加原生的Android方法來設置重複的通知,要做到這一點,你需要導航到System.Android.Notification
找到TNotificationCenterAndroid.DoScheduleNotification
,現在只需要添加一些代碼,所以如果你沒有指定RepeatIntervalinMills只創建標準通知:當您創建通知
begin
if not ANotification.Name.IsEmpty and FExternalStore.Contains(ANotification.Name) then
CancelNotification(ANotification.Name);
ID := TGeneratorUniqueID.GenerateID;
PendingIntent := CreateNotificationAlarmIntent(ID);
FExternalStore.SaveNotification(ANotification, ID);
if ANotification.RepeatIntervalinMills <> 0 then
begin
TAndroidHelper.AlarmManager.setRepeating(TJAlarmManager.JavaClass.RTC_WAKEUP, DateTimeLocalToUnixMSecGMT(ANotification.FireDate),
ANotification.RepeatIntervalinMills,PendingIntent);
end
else
TAndroidHelper.AlarmManager.&set(TJAlarmManager.JavaClass.RTC_WAKEUP, DateTimeLocalToUnixMSecGMT(ANotification.FireDate),
PendingIntent);
end;
現在:
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name := 'MyNotification';
MyNotification.AlertBody := 'Hello!';
{$IFDEF IOS}
//Repeat very 5 minutes
//Create 12 notifications fireing every hour with 5 minute intervals Notification.RepeatInterval := TRepeatInterval.Hour;
for I := 0 to 11 do
begin
Notification.FireDate := Notification.FireDate + EncodeTime(0,(I*5),0,0);
ANotificationcenter.ScheduleNotification(Notification);
end;
{$ENDIF}
{$IFDEF ANDROID}
MyNotification.FireDate := IncMinute(Now,5);
MyNotification.RepeatIntervalinMills := 300000; //Now you can specify your Custom Android Repeat interval
NotificationCenter1.ScheduleNotification(MyNotification);
{$ENDIF}
finally
MyNotification.DisposeOf;
end;
這將創建一個notfication將火5分鐘,將重複每5分鐘
標籤是德爾福xe8,我說這 –
是的,我試着將它添加自己,但堆棧溢出說我需要15k點使用該標籤。 –
不,你試圖添加一個新的標籤,也許'xe8'。你不能那樣做。您沒有創建標籤所需的代表。我使用的標籤是'delphi-xe8',並且已經存在了很長時間。您可以使用該標籤。所以,我只是想讓你知道delphi版本標籤的約定。他們都是那種形式。 –