Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   inApp Kauf Umsetzung iOS (https://www.delphipraxis.net/183024-inapp-kauf-umsetzung-ios.html)

arnof 5. Dez 2014 07:49

inApp Kauf Umsetzung iOS
 
Hi,

ich versuche mich gerade daran mit der TInAppPurchase Komponente:

- welche ProduktID muss man angeben meine SKU Nummer oder die von Apple erzeugt Nummer?

- kann man den Preis eines inApps ermitteln? Weltweit gibt es ja unterschiedliche Preise für eine Preisstufe. Hier würde ich gerne dem User den Preis vorher zeigen!

arnof 5. Dez 2014 10:37

AW: inApp Kauf Umsetzung iOS
 
gelöst

mkinzler 5. Dez 2014 10:40

AW: inApp Kauf Umsetzung iOS
 
Und wie?

arnof 5. Dez 2014 11:35

AW: inApp Kauf Umsetzung iOS
 
ja die Doku ist echt nicht mein Ding (vielleicht habe ich das richtige auch nicht gelesen).

Es gibt sogar ein Beispiel: 15.0\Samples\Object Pascal\Mobile Samples\Device Sensors and Services\CapitalIAP

Aber dort wird TInAppPurchase Komponente dynamisch erzeugt, so das man es auf den ersten Blick gar nicht versteht :thumb:

Hier mal eine kleine Anleitung wie es geht:

1. Abfragen der inApp Produkte zum App (die muss man vorher in itunesconnect angelegt haben):


InAppPurchase1.SetupInAppPurchase;
InAppPurchase1.QueryProducts;

2. das löst das Ereignis ProductsRequestResponse aus. Hier bekommt man alle inApps mitgeteilt incl lokaler Sprache und Preis:

Delphi-Quellcode:
procedure TFM_Haupt.InAppPurchase1ProductsRequestResponse(Sender: TObject;
  const Products: TIAPProductList; const InvalidProductIDs: TStrings);
 var
  Product: TProduct;
  Item:TListViewItem;
begin
  ListView1.Items.Clear;
  for Product in Products do
  begin
    item:=ListView1.Items.Add;
    Item.Text:=Product.LocalizedTitle;
    Item.Detail:='Price: '+Product.LocalizedPrice;
  end;
end;
3. der Kauf eines inApps:

InAppPurchase1.PurchaseProduct('MEINE selbst ANGELEGTE ID');

4. wenn der Kunde das mal gekauft hatte, so kann man dieses wieder herstellen lassen:

InAppPurchase1.RestorePurchasedProducts;


5. wenn der Kauf erfolgreich war, dann wird das Ereignis PurchaseCompleted ausgelöst

Delphi-Quellcode:
InAppPurchase1PurchaseCompleted(Sender: TObject;
  const ProductID: string; NewTransaction: Boolean);
begin
 if (ProductID=meine_Produkt_id) then begin
  //mach irgendwas, damit ich mir das merke
...
Hier lege ich mir eine Datei an. Die Existenz dieser Datei frage ich beim Programmstart ab, um festzustellen, ob er das Modul schon gekauft hat!

Mavarik 5. Dez 2014 16:55

AW: inApp Kauf Umsetzung iOS
 
Prima... Danke für die Info... Klingt erst mal nicht so kompliziert.

Die Frage ist wie verhindert man das ein Backup/Patchen/Restore nicht einen Kauf vorgaukelt.

Mavarik

arnof 5. Dez 2014 19:24

AW: inApp Kauf Umsetzung iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1282402)
Prima... Danke für die Info... Klingt erst mal nicht so kompliziert.

Die Frage ist wie verhindert man das ein Backup/Patchen/Restore nicht einen Kauf vorgaukelt.

Mavarik

Mit

InAppPurchase1.RestorePurchasedProducts;

kannste den alten Kauf prüfen, ist eigentlich dafür da, wenn man das App gelöscht hat oder einen Gerätewechsel gemacht hat.

Mavarik 6. Dez 2014 10:06

AW: inApp Kauf Umsetzung iOS
 
Zitat:

Zitat von arnof (Beitrag 1282414)
Mit

InAppPurchase1.RestorePurchasedProducts;

kannste den alten Kauf prüfen, ist eigentlich dafür da, wenn man das App gelöscht hat oder einen Gerätewechsel gemacht hat.

Ist das perfomat genug, dass Du das bei jedem Programmstart aufrufen kannst? Und was ist wenn der User zu diesem Zeitpunkt kein Internet mehr hat oder bewusst das Internet abstellt?

Daniel 6. Dez 2014 10:54

AW: inApp Kauf Umsetzung iOS
 
Üblicherweise haben Anwendungen irgendwo eine Schaltfläche "Einkäufe wiederherstellen".
Ich sehe keinen zwingenden Grund, dies bei jedem Start zu versuchen. Der Anwender wird nach einer Neu-Installation schon merken, wenn ihm Dinge fehlen und es dürfte für ihn auch plausibel sein, dass er dann einmalig eine Aktion auslösen muss, um seine Zusatzfunktionen wieder zu erhalten.

Mavarik 6. Dez 2014 18:34

AW: inApp Kauf Umsetzung iOS
 
Zitat:

Zitat von Daniel (Beitrag 1282431)
Üblicherweise haben Anwendungen irgendwo eine Schaltfläche "Einkäufe wiederherstellen".
Ich sehe keinen zwingenden Grund, dies bei jedem Start zu versuchen. Der Anwender wird nach einer Neu-Installation schon merken, wenn ihm Dinge fehlen und es dürfte für ihn auch plausibel sein, dass er dann einmalig eine Aktion auslösen muss, um seine Zusatzfunktionen wieder zu erhalten.

Das sehe ich auch so... Aber wenn Du z.b. in eine Ini Datei schreibst:

Modul1=true

und diese per Backup-> Patch ->Restore über iTunes wieder auf's device kommt hat der User die Funktionalität ohne zu bezahlen. Also muss man sich schon Gedanken darüber machen, wie man die Informationen auf dem Gerät ablegt.

Mavarik

arnof 7. Dez 2014 09:00

AW: inApp Kauf Umsetzung iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1282455)
Zitat:

Zitat von Daniel (Beitrag 1282431)
Üblicherweise haben Anwendungen irgendwo eine Schaltfläche "Einkäufe wiederherstellen".
Ich sehe keinen zwingenden Grund, dies bei jedem Start zu versuchen. Der Anwender wird nach einer Neu-Installation schon merken, wenn ihm Dinge fehlen und es dürfte für ihn auch plausibel sein, dass er dann einmalig eine Aktion auslösen muss, um seine Zusatzfunktionen wieder zu erhalten.

Das sehe ich auch so... Aber wenn Du z.b. in eine Ini Datei schreibst:

Modul1=true

und diese per Backup-> Patch ->Restore über iTunes wieder auf's device kommt hat der User die Funktionalität ohne zu bezahlen. Also muss man sich schon Gedanken darüber machen, wie man die Informationen auf dem Gerät ablegt.

Mavarik

Hier muss man ja zugriff auf das Gerät haben und dann wenn man das mal gekauft hat ?

Wenn jemand das so macht um was illegales zu machen, dann geht das auch viel einfacher: User meldet sich einmalig mit einem anderen Appleaccount an und schon hat er Zugriff auf alles was mal unter dem anderen Account gekauft wurde ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.

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