Nákup nedostupných produktů v Xamarin.iOS

Nepoužáditelné produkty jsou "vlastněné" zákazníkem. Očekávání spočívá v tom, že k nim budou mít vždy přístup, i když dojde ke ztrátě nebo odcizení zařízení nebo si koupí nový. Jsou užitečné pro knihy, časopisy problémy, herní úrovně, fotofiltry, "pro-funkce" atd. Jakmile si uživatel koupí nepoužívatelný produkt, nemusí za něj nikdy platit. Pokud váš kód omylem umožní vyzkoušet, StoreKit zobrazí zprávu, že už je zakoupená.

Ukázka nepoužitelného produktu

Ukázka obsahuje projekt s názvem NonConsumables. Ukázka kódu ukazuje, jak implementovat nepoužitelné produkty pomocí fotofiltrů jako příklad. Jakmile si koupíte filtr, můžete ho použít na fotku znovu a znovu. Nikdy ho nebudete muset znovu koupit.

Proces nákupu se zobrazí v této řadě snímků obrazovky – tlačítko Koupit se stane tlačítkem aktivace funkcí:

Proces nákupu se zobrazuje v této sérii snímků obrazovky.

Nákupní proces je stejný jako spotřební produkt; Klíčovým rozdílem je způsob, jakým se nákup sleduje v kódu aplikace. V tomto příkladu je tlačítko Koupit k dispozici pouze v případě, že produkt ještě nebyl zakoupen, jinak tlačítko aktivuje samotnou funkci.

Následující diagram znázorňuje interakce mezi třídami a serverem App Storu za účelem nákupu produktu, který není použitelný:

Interakce mezi třídami a serverem App Storu za účelem provedení nedosažitelného nákupu produktu

Hlavní rozdíl oproti příkladu spotřebního materiálu spočívá v tom, že po dokončení nákupu se uživatelské rozhraní aktualizuje, aby se zabránilo opětovnému nákupu. V tomto příkladu oznámení o úspěšné transakci aktualizuje uživatelské rozhraní tak, aby tlačítko Koupit bylo převedeno na tlačítko, které aktivuje samotnou funkci.

Opětovný nákup nepoužádelných produktů

Kód by měl po úspěšném zakoupení produktu normálně skrýt nebo znovu použít tlačítko nákupu, aby se uživatel pokusil produkt koupit znovu. Ukázková aplikace to provede změnou tlačítka Koupit na tlačítko, díky kterému bude ukázkový filtr fotek fungovat.

V situacích, kdy aplikace nedokáže zjistit, jestli už byl zakoupen produkt, který není použitelný:

  • Pokud se aplikace odstraní a znovu nainstaluje na zařízení, všechny záznamy o nákupu budou pryč (pokud uživatel neprovede zálohování a obnovení).
  • Pokud má uživatel aplikaci nainstalovanou na dvou (nebo více) zařízeních a provede nákup na jednom ze zařízení. Ostatní zařízení budou dál zobrazovat produkt, který je k dispozici k nákupu.
  • Pokud se zákazník v těchto situacích pokusí znovu koupit produkt, který není spotřební, App Store produkt znovu splní bez poplatků. Uživatelské rozhraní se zpočátku zobrazí k provedení nákupu (například se zobrazí potvrzovací upozornění a bude se vyžadovat Apple ID), ale uživateli se zobrazí zpráva s upozorněním, že produkt už byl zakoupen.

Cesta kódu v tomto scénáři je přesně stejná jako běžný nákup, jedinými rozdíly jsou:

  • Uživatel se za produkt znovu neúčtuje.
  • Objekt SKPaymentTransaction předaný aplikaci bude mít OriginalTransaction vlastnost, která odkazuje na transakci, která byla vygenerována při počátečním nákupu produktu.
  • Aplikace, které prodávají nekomprodované produkty, musí také implementovat funkci Obnovení Sady StoreKit, která uživatelům pomůže načíst stávající nákupy.