Ja.
Misschien dat je hier iets aan hebt.
http://docwiki.embarcadero.com/RADSt...S_and_Android)
p.s. Het kan soms een goed idee zijn om als je met een nieuw onderwerp begint een paar boeken (globaal) te lezen of ieder geval te scannen, zodat je een iets beter idee hebt in welke richting je bepaalde oplossingen moet zoeken en wat de mogelijkheden zijn. Dat helpt mij altijd ontzettend veel om wat overzicht te krijgen. Wat je op het internet vindt is vaak toch wat meer gefragmenteerd.
Bedankt, ik ga ermee aan de slag.
Dit werkt, ik krijg op '17-10-2016' om 1 min. na middernacht netjes een melding
Nu wou ik meteen meerdere verjaardagen alvast instellen, dus meerdere meldingen klaar zetten.Code:MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := 'MyNotification'; MyNotification.AlertBody := 'Jarig: '1'; MyNotification.FireDate := StrTodateTime( '17-10-2016 00:01:00' ); // Send notification to the notification center NotificationCenter1.ScheduleNotification(MyNotification); finally MyNotification.DisposeOf; end;
Maar als ik meerdere meldingen op geef werkt het toch slechts éénmaal, en dat is de laatste melding die ik verstuur
Nu krijg ik alleen op '18-10-2016' om 1 min. na middernacht een melding.Code:MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := 'MyNotification'; MyNotification.AlertBody := 'Jarig: '1'; MyNotification.FireDate := StrTodateTime( '17-10-2016 00:01:00' ); // Send notification to the notification center NotificationCenter1.ScheduleNotification(MyNotification); finally MyNotification.DisposeOf; end; //----------------- MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := 'MyNotification'; MyNotification.AlertBody := 'Jarig: '2'; MyNotification.FireDate := StrTodateTime( '18-10-2016 00:01:00' ); // Send notification to the notification center NotificationCenter1.ScheduleNotification(MyNotification); finally MyNotification.DisposeOf; end;
Is het mogelijk om meteen een hele serie meldingen te versturen ?
Wat gebeurd er als je dit uittest met een tweede MyNotification2? Gaat het dan wel goed?
(Ik heb wel ergens gelezen dat een eerdere datum als tweede zenden een probleem kan geven maar dat doe jij hier niet)
Net getest, en het probleem blijft hetzelfde.
Ik kom deze 2 tegen:
NotificationCenter1.PresentNotification(MyNotifica tion);
NotificationCenter1.ScheduleNotification(MyNotific ation);
Ik heb het idee dat de eerste meteen de melding plaatst, en de 2e wacht totdat het tijd is (ik gebruik de 2e).
Edit:
Als ik 2 verschillende nummers opgeef, dan werkt het wel:
MyNotification.Number :=
Ook met 2 verschillende namen werkt het:
MyNotification.Name :=
Elke melding lijkt dus een 'kenmerk' nodig te hebben.
De volgorde van datum/tijd lijkt niets uit te maken en werkt als ik eerst een latere datum gebruik en daarna een een eerdere datum.
Vraag:
Hoeveel "Alarm" meldingen mogen er gebruikt worden ?
Last edited by MMSoft; 16-Oct-16 at 16:43.
In iOS zijn het maximaal 64 notifications per app.
(je kunt natuurlijk elke keer bij opstarten de notifications wijzigen/aanpassen)
Ik weet niet of diezelfde limiet er ook is voor Android.
Je zou het natuurlijk eens uit kunnen testen.
Ik geloof wel dat in iOS alleen de vroegste notifications blijven bestaan. Dus één toevoegen die voor andere liggen zou een eerdere overschrijven bij 64 + 1. (maar dat weet ik niet zeker)
Om te testen zou je 100 notificaties kunnen maken (elke minuut 1) en kijken of je tot de 100 minuten komt.
(of heb je een mogelijkheid om alle notificaties uit te lezen?)
Het viel mij op dat als je de datum later zet, dat je dan ineens alle meldingen kreeg die dan al gemeld hadden moeten worden.(of heb je een mogelijkheid om alle notificaties uit te lezen?)
Ik ga binnenkort eens wat testen...
No problem here:
Delphi Code:
uses System.Notification, DateUtils; procedure SetNotification(Nr: Integer; DateTime: TDateTime); var Nc: TNotificationCenter; Nf: TNotification; begin Nc := TNotificationCenter.Create(nil); try Nf := Nc.CreateNotification; try Nf.Name := 'MyApp' + inttostr(Nr); Nf.AlertBody := 'Jarig: ' + inttostr(Nr); Nf.FireDate := DateTime; Nc.ScheduleNotification(Nf); finally Nf.DisposeOf; end; finally Nc.DisposeOf; end; end; procedure TForm1.Button1Click(Sender: TObject); begin SetNotification(1, IncSecond(Now, 30)); SetNotification(2, IncMinute(Now, 1)); SetNotification(3, IncSecond(Now, 15)); end;
Ik had overigens ook begrepen dat je met AlarmManager zou kunnen werken. Die kan je device ook wakker maken als die in slaapstand is. En bovendien kan die ook een intent opstarten zoals je eigen applicatie zodat je direct een alarm kunt geven en de contactpersoon (met taart ) weer kunt geven.
Het is ook geen probleem, ik bedoel dat dit een manier is om alle notificaties uit te lezen.No problem here:
Ja, maar dat krijg ik dus niet. In het voorbeeld dat ik gaf kreeg ik op 15, 30 en 60 seconden de melding. Maar ik kan dus niet via code zien welke notificaties ik al gezet heb.
Als je dus niet weet welke verjaardagen je al in de notificatie gezet hebt dan ga je dus dubbele krijgen (tenzij je een unieke id gebruikt per contactpersoon). Vergeet dan ook niet de melding te verwijderen als de contactpersoon verwijderd wordt
Ik gebruik de Naam van de persoon als "unieke id", en zover ik het heb kunnen testen werkt het volgens mij goed zo.
Code:procedure TForm1.Button8Click(Sender: TObject); var MyNotification: TNotification; Test: TDateTime; Tyd: String; Geboorte_Datum: TDate; Maand: Integer; Dag: Integer; Huidige_Jaar: Integer; Alarm_Dag_Tijd: TDateTime; Alarm_Jaar: Integer; Alarm_Datum: TDate; begin FormatSettings.ShortDateFormat := 'dd-mm-YYYY'; //Datums met 4 cijfers gebruiken voor het jaartal Huidige_Jaar := YearOf( Date ); Edit1.Text := IntToStr( Huidige_Jaar ); //ListBox1 doorlopen (Verjaardagen) for X:= 1 to FDTable1.RecordCount do begin FDTable1.RecNo:= X; Voor_Naam:= FDTable1.FieldByName('VoorNaam').AsString; Achter_Naam:= FDTable1.FieldByName('AchterNaam').AsString; Tyd := FDTable1.FieldByName('Geb_Datum').AsString; // If TryStrToDate(Tyd,Test) then //Als String een geldige Date is dan ... begin //Er is een geldige geboorte datum gevonden Geboorte_Datum := StrToDate(Tyd); Maand := MonthOf(Geboorte_Datum); Dag := DayOf(Geboorte_Datum); Alarm_Jaar := Huidige_Jaar; Alarm_Datum := StrToDate( IntToStr(Dag) + '-' + IntToStr(Maand) + '-' + IntToStr(Alarm_Jaar) ); //Dit jaar al jarig geweest, dan pas volgend jaar weer een Alarm geven if Alarm_Datum < Date then Alarm_Datum := IncYear(Alarm_Datum,1); // + 1 Jaar Alarm_Dag_Tijd := StrTodateTime( DateToStr(Alarm_Datum) + '00:01:00' ); //Alarm's naar NotificationCenter MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := Voor_Naam + ' ' + Achter_Naam; //Als Label de Naam gebruiken MyNotification.AlertBody := 'Jarig: ' + Voor_Naam + ' ' + Achter_Naam; // Fired op de opgegeven Datum + Tijd MyNotification.FireDate := Alarm_Dag_Tijd; //Om 1 min. na middernacht // Send notification to the notification center NotificationCenter1.ScheduleNotification(MyNotification); finally MyNotification.DisposeOf; end; Memo1.Lines.Add( Voor_Naam + ' ' + Achter_Naam + DateTimeToStr(Alarm_Dag_Tijd) ); // end; end;
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks