Page 2 of 2 FirstFirst 1 2
Results 16 to 27 of 27

Thread: Programma dat op de achtergrond draait

  1. #16

  2. #17
    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.

  3. #18
    Bedankt, ik ga ermee aan de slag.

  4. #19
    Dit werkt, ik krijg op '17-10-2016' om 1 min. na middernacht netjes 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;
    Nu wou ik meteen meerdere verjaardagen alvast instellen, dus meerdere meldingen klaar zetten.
    Maar als ik meerdere meldingen op geef werkt het toch slechts éénmaal, en dat is de laatste melding die ik verstuur
    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;
    Nu krijg ik alleen op '18-10-2016' om 1 min. na middernacht een melding.

    Is het mogelijk om meteen een hele serie meldingen te versturen ?

  5. #20
    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)

  6. #21
    Quote Originally Posted by rvk View Post
    Wat gebeurd er als je dit uittest met een tweede MyNotification2? Gaat het dan wel goed?
    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.

  7. #22
    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?)

  8. #23
    (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.

    Ik ga binnenkort eens wat testen...

  9. #24
    No problem here:
    Delphi Code:
    1. uses System.Notification, DateUtils;
    2.  
    3. procedure SetNotification(Nr: Integer; DateTime: TDateTime);
    4. var
    5.   Nc: TNotificationCenter;
    6.   Nf: TNotification;
    7. begin
    8.   Nc := TNotificationCenter.Create(nil);
    9.   try
    10.     Nf := Nc.CreateNotification;
    11.     try
    12.       Nf.Name := 'MyApp' + inttostr(Nr);
    13.       Nf.AlertBody := 'Jarig: ' + inttostr(Nr);
    14.       Nf.FireDate := DateTime;
    15.       Nc.ScheduleNotification(Nf);
    16.     finally
    17.       Nf.DisposeOf;
    18.     end;
    19.   finally
    20.     Nc.DisposeOf;
    21.   end;
    22. end;
    23.  
    24. procedure TForm1.Button1Click(Sender: TObject);
    25. begin
    26.   SetNotification(1, IncSecond(Now, 30));
    27.   SetNotification(2, IncMinute(Now, 1));
    28.   SetNotification(3, IncSecond(Now, 15));
    29. 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.

  10. #25
    No problem here:
    Het is ook geen probleem, ik bedoel dat dit een manier is om alle notificaties uit te lezen.

  11. #26
    Quote Originally Posted by MMSoft View Post
    Het is ook geen probleem, ik bedoel dat dit een manier is om alle notificaties uit te lezen.
    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

  12. #27
    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;

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •