Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS In App nach Bewertung fragen: So hab ich es gemacht (https://www.delphipraxis.net/174747-app-nach-bewertung-fragen-so-hab-ich-es-gemacht.html)

Darlo 7. Mai 2013 15:10


In App nach Bewertung fragen: So hab ich es gemacht
 
Hallo zusammen,

für alle die es auch brauchen.
Bitte den Aufbau/Logik der Datenbank ignorieren, der Focus lag auf anderen Dingen ;-)
Ich rufe askToRate dann einfach an der gewünschten Stelle im Programm auf.

Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var
  bereitsBewertet: boolean;
begin
  uniconnection1.Open;
  uniquery1.SQL.Text := 'SELECT * FROM einstellungen';
  uniquery1.Open;
  if uniquery1.RecordCount = 0 then
    bereitsBewertet := false
  else
    bereitsBewertet := (uniquery1.FieldByName('bewertet').AsBoolean);
  uniquery1.Close;

  uniQuery1.SQL.Text := 'INSERT INTO einstellungen (zeitpunkt, bewertet) VALUES (:_xTs, :_xB)';
  uniquery1.ParamByName('_xTs').AsDateTime := now;
  uniquery1.ParamByName('_xB').AsBoolean := bereitsBewertet;
  uniquery1.ExecSQL;

  uniquery1.SQL.Text := 'SELECT * FROM einstellungen';
  uniquery1.Open;

  uniquery1.FindLast;

  ask4Rate := not bereitsBewertet;
end;

procedure TfrmMain.askToRate;
begin
  if ask4Rate then
  begin
    ask4Rate := false;
    if MessageDlg('Wir freuen uns über Ihre Bewertung im AppStore!'+#10#13+
      'Möchten Sie jetzt eine Bewertung abgeben?', TMsgDlgType.mtConfirmation,
      mbYesNoCancel,0) = mrYes then
      begin
        uniQuery1.SQL.Text := 'UPDATE einstellungen SET bewertet = :_xBewertet';
        uniquery1.ParamByName('_xBewertet').AsBoolean := true;
        uniquery1.ExecSQL;

        SharedApplication.openURL(
          StrToNSUrl('itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=XXXXXXXX')); // Hier die ID der App eintragen
      end;
  end;
end;


function TfrmMain.StrToNSUrl(const AStr: string): NSUrl;
begin
  Result := TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSSTR(AStr)));
end;

function TfrmMain.SharedApplication: UIApplication;
begin
  Result := TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
end;

sx2008 7. Mai 2013 21:19

AW: In App nach Bewertung fragen: So hab ich es gemacht
 
Die App-ID solltest du
Delphi-Quellcode:
askToRate
als Parameter übergeben.
Und falls
Delphi-Quellcode:
openURL()
einen Rückgabewert hat, dann wäre es nützlich diesen auszuwerten und davon die Änderung in der Tabelle Einstellungen abhängig zu machen.

Sir Rufo 7. Mai 2013 21:41

AW: In App nach Bewertung fragen: So hab ich es gemacht
 
Also wenn es um die Optimierung geht, dann würde ich die SQL Teile separieren und
Delphi-Quellcode:
SharedApplication
sowie
Delphi-Quellcode:
StrToNSUrl
in eine eigene Unit auslaern, denn diese Funktionen wird man immer wieder brauchen

Furtbichler 8. Mai 2013 07:28

AW: In App nach Bewertung fragen: So hab ich es gemacht
 
Und vielleicht zwei 'uniQuery' Objekte verwenden. Eins für's select, und eins für update... Kann man mit dieser UniConnection keine Befehle direkt abschicken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz