Jak dodać zakup w aplikacji do aplikacji na iOS? Jakie są wszystkie szczegóły i czy jest jakiś przykładowy kod?
To ma być chwytliwy sposób dodawania zakupów w aplikacjach do aplikacji na iOS
ios
objective-c
swift
cocoa-touch
in-app-purchase
Jojodmo
źródło
źródło
Odpowiedzi:
Szybcy użytkownicy
Użytkownicy Swift mogą sprawdzić My Swift Answer na to pytanie .
Lub sprawdź odpowiedź Yedidya Reiss , która tłumaczy ten kod Celu C na Swift.
Użytkownicy C celu
Reszta tej odpowiedzi jest napisana w Celu C
App Store Connect
My Apps
a następnie kliknij aplikację, do której chcesz dodać zakupFeatures
nagłówek, a następnie wybierzIn-App Purchases
po lewej stronie+
ikonę pośrodkunon-consumable
. Jeśli chcesz wysłać element fizyczny do użytkownika lub dać mu coś, co może kupić więcej niż jeden raz, wybierzeszconsumable
.tld.websitename.appname.referencename
będzie to działać najlepiej, na przykład możesz użyćcom.jojodmo.blix.removeads
cleared for sale
a następnie wybierz warstwę ceny jako 1 (99 ¢). Poziom 2 wyniósłby 1,99 USD, a poziom 3 2,99 USD. Pełna lista jest dostępna po kliknięciuview pricing matrix
Polecam skorzystanie z poziomu 1, ponieważ zwykle jest to najwyższa kwota, jaką kiedykolwiek ktoś zapłaci za usunięcie reklam.add language
przycisk i wprowadź informacje. Zostanie to WSZYSTKIE pokazane klientowi, więc nie umieszczaj niczego, czego nie chciałbyś widziećhosting content with Apple
wybierz niescreenshot for review
TERAZ , wszystko, co pomijamy, wrócimy.Rejestracja identyfikatora produktu może potrwać kilka godzin
App Store Connect
, więc bądź cierpliwy.Konfiguracja twojego projektu
Po skonfigurowaniu informacji o zakupach w aplikacji w App Store Connect przejdź do projektu Xcode i przejdź do menedżera aplikacji (niebieska ikona przypominająca stronę u góry miejsca, w którym znajdują się twoje metody i pliki nagłówkowe), kliknij Twoja aplikacja pod celami (powinna być pierwsza), a następnie przejdź do ogólnych. Na dole powinieneś zobaczyć
linked frameworks and libraries
mały symbol plus i dodać ramkę.StoreKit.framework
Jeśli tego nie zrobisz, zakup w aplikacji NIE zadziała!Jeśli używasz Objective-C jako języka dla swojej aplikacji, powinieneś pominąć te pięć kroków . W przeciwnym razie, jeśli używasz Swift, możesz postępować zgodnie z My Swift Answer na to pytanie tutaj lub, jeśli wolisz używać Objective-C dla kodu zakupu w aplikacji, ale używasz Swift w swojej aplikacji, możesz wykonać następujące czynności :
Utwórz nowy
.h
plik (nagłówek), przechodząc doFile
>New
>File...
( Command ⌘+ N). Ten plik będzie nazywany „Twoim.h
plikiem” w dalszej części samouczkaPo wyświetleniu monitu kliknij opcję Utwórz nagłówek pomostowy . To będzie nasz mostkowy plik nagłówkowy. Jeśli nie zostanie wyświetlony monit, przejdź do kroku 3. Jeśli są poproszony, pomiń krok 3 i przejść bezpośrednio do kroku 4.
Utwórz inny
.h
plik o nazwieBridge.h
w głównym folderze projektu, a następnie przejdź do Menedżera aplikacji (niebieska ikona przypominająca stronę), a następnie wybierz aplikację wTargets
sekcji i kliknijBuild Settings
. Znajdź opcję z napisem Swift Compiler - Generowanie kodu , a następnie ustaw opcję Header-C Bridging Header naBridge.h
W łączącym pliku nagłówka dodaj wiersz
#import "MyObjectiveCHeaderFile.h"
, w którymMyObjectiveCHeaderFile
znajduje się nazwa pliku nagłówka utworzonego w kroku pierwszym. Na przykład, jeśli nazwiesz swój plik nagłówkowy InAppPurchase.h , dodasz linię#import "InAppPurchase.h"
do pliku nagłówkowego mostu.Tworzenie Metody Objective-C (nowy
.m
) plik, przechodząc doFile
>New
>File...
( Command ⌘+ N). Nazwij go tak samo, jak plik nagłówka utworzony w kroku 1. Na przykład, jeśli plik został wywołany w kroku 1 InAppPurchase.h , nazwałbyś ten nowy plik InAppPurchase.m . Ten plik będzie nazywany „Twoim.m
plikiem” w dalszej części samouczka.Kodowanie
Teraz zajmiemy się kodowaniem. Dodaj następujący kod do swojego
.h
pliku:Następnie musisz zaimportować
StoreKit
framework do swojego.m
pliku, a także dodaćSKProductsRequestDelegate
iSKPaymentTransactionObserver
po@interface
deklaracji:a teraz dodaj do
.m
pliku następujące elementy, ta część komplikuje się, więc sugeruję przeczytanie komentarzy w kodzie:Teraz chcesz dodać kod tego, co się stanie, gdy użytkownik zakończy transakcję, w tym samouczku używamy usuwania dodatków, musisz dodać własny kod, co się stanie, gdy załaduje się widok banera.
Jeśli nie masz reklam w swojej aplikacji, możesz użyć dowolnej innej rzeczy. Na przykład możemy ustawić kolor tła na niebieski. Aby to zrobić, chcielibyśmy użyć:
Teraz, gdzieś w swojej
viewDidLoad
metodzie, będziesz chciał dodać następujący kod:Po dodaniu całego kodu przejdź do pliku
.xib
lubstoryboard
pliku i dodaj dwa przyciski, jeden z napisem „kup”, a drugi „przywróć”. Podłącz utworzony przedtapsRemoveAds
IBAction
chwilą przycisk zakupu irestore
IBAction
przycisk przywracania.restore
Akcja będzie sprawdzać, czy użytkownik został wcześniej zakupiony zakupu w aplikacji, i dać im zakupu w aplikacji za darmo jeśli nie masz go.Przesyłanie do recenzji
Następnie przejdź do App Store Connect , kliknij, a
Users and Access
następnie kliknijSandbox Testers
nagłówek, a następnie kliknij+
symbol po lewej stronie, w którym jest napisaneTesters
. Możesz po prostu wpisać losowe imię i nazwisko, a e-mail nie musi być prawdziwy - musisz tylko pamiętać. Wpisz hasło (które będziesz musiał zapamiętać) i wypełnij resztę informacji. Radziłbym ustalićDate of Birth
datę, która oznaczałaby, że użytkownik ma 18 lat lub więcej.App Store Territory
MUSI być we właściwym kraju. Następnie wyloguj się z istniejącego konta iTunes (możesz ponownie zalogować się po tym samouczku).Teraz uruchom aplikację na urządzeniu z systemem iOS, jeśli spróbujesz uruchomić ją na symulatorze, zakup zawsze będzie błąd, MUSISZ uruchomić ją na urządzeniu z systemem iOS. Po uruchomieniu aplikacji dotknij przycisku zakupu. Po wyświetleniu monitu o zalogowanie się na konto iTunes zaloguj się jako użytkownik testowy, który właśnie utworzyliśmy. Następnie, gdy pojawi się prośba o potwierdzenie zakupu 99 centów lub cokolwiek innego, ustawisz także warstwę cenową, ZRÓB EKRAN SNAPSHOT TO, to będzie to, czego zamierzasz użyć
screenshot for review
w App Store Connect. Teraz anuluj płatność.Teraz przejdź do App Store Połącz , a następnie przejść do
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Następnie kliknij zakup w aplikacji i edytuj pod szczegółami zakupu w aplikacji. Gdy to zrobisz, zaimportuj zdjęcie, które właśnie zrobiłeś iPhone'em na komputer, i prześlij je jako zrzut ekranu do recenzji, a następnie w notatkach z recenzji podaj swój adres e-mail i hasło TESTU UŻYTKOWNIKA . Pomoże to Apple w procesie przeglądu.Po wykonaniu tej czynności wróć do aplikacji na urządzeniu z systemem iOS, nadal zalogowanego jako konto użytkownika testowego, i kliknij przycisk zakupu. Tym razem potwierdź płatność Nie martw się, to NIE obciąży Twojego konta ŻADNYMI pieniędzmi, przetestuj konta użytkowników otrzymuj wszystkie zakupy w aplikacji za darmo Po potwierdzeniu płatności upewnij się, że co się stanie, gdy użytkownik kupi Twój produkt dzieje się. Jeśli nie, oznacza to błąd w Twojej
doRemoveAds
metodzie. Ponownie zalecam zmianę tła na niebieski w celu przetestowania zakupu w aplikacji, ale nie powinien to być faktyczny zakup w aplikacji. Jeśli wszystko działa i możesz już iść! Pamiętaj tylko, aby uwzględnić zakup w aplikacji w nowym pliku binarnym podczas przesyłania go do App Store Connect!Oto kilka typowych błędów:
Zalogowany:
No Products Available
Może to oznaczać cztery rzeczy:
kRemoveAdsProductIdentifier
w powyższym kodzieJeśli to nie zadziała za pierwszym razem, nie denerwuj się! Nie poddawaj się! Zajęło mi to około 5 godzin, zanim mogłem zacząć działać, i około 10 godzin na znalezienie odpowiedniego kodu! Jeśli dokładnie użyjesz powyższego kodu, powinien on działać poprawnie. Zapraszam do komentowania, jeśli masz jakiekolwiek pytania w ogóle .
Mam nadzieję, że to pomoże wszystkim tym, którzy chcą dodać zakup w aplikacji do swojej aplikacji na iOS. Twoje zdrowie!
źródło
Przetłumacz kod Jojodmo na Swift:
źródło
Szybka odpowiedź
Ma to na celu uzupełnienie mojej odpowiedzi Objective-C dla użytkowników Swift, aby nie dopuścić do zbyt dużej odpowiedzi Objective-C.
Ustawiać
Najpierw skonfiguruj zakup w aplikacji na appstoreconnect.apple.com . Postępuj zgodnie z początkową częścią mojej odpowiedzi Cel C (kroki 1-13, pod nagłówkiem App Store Connect ), aby uzyskać instrukcje na ten temat.
Rejestracja identyfikatora produktu w App Store Connect może potrwać kilka godzin, więc bądź cierpliwy.
Po skonfigurowaniu informacji o zakupach w aplikacji w App Store Connect musimy dodać do aplikacji strukturę Apple do zakupów
StoreKit
w aplikacji.Przejdź do projektu Xcode i przejdź do menedżera aplikacji (niebieska ikona przypominająca stronę u góry lewego paska, w którym znajdują się pliki aplikacji). Kliknij aplikację pod celami po lewej stronie (powinna to być pierwsza opcja), a następnie przejdź do „Możliwości” u góry. Na liście powinna być widoczna opcja „Zakup w aplikacji”. Włącz tę funkcję, a Xcode doda
StoreKit
do twojego projektu.Kodowanie
Teraz zaczniemy kodować!
Najpierw utwórz nowy szybki plik, który będzie zarządzał wszystkimi Twoimi zakupami w aplikacji. Nazwie to
IAPManager.swift
.W tym pliku utworzymy nową klasę o nazwie
IAPManager
to aSKProductsRequestDelegate
iSKPaymentTransactionObserver
. U góry upewnij się, że importujeszFoundation
iStoreKit
Następnie dodamy zmienną, aby zdefiniować identyfikator naszego zakupu w aplikacji (możesz także użyć zmiennej
enum
, która byłaby łatwiejsza do utrzymania, jeśli masz wiele IAP).Dodajmy teraz inicjalizator dla naszej klasy:
Teraz dodamy wymagane funkcje
SKProductsRequestDelegate
iSKPaymentTransactionObserver
do pracy:Dodamy
RemoveAdsManager
klasę późniejDodajmy teraz funkcje, których można użyć do rozpoczęcia zakupu lub przywrócenia zakupów:
Następnie dodajmy nową klasę narzędzi do zarządzania naszymi IAP. Cały ten kod może należeć do jednej klasy, ale jego wielokrotność sprawia, że jest trochę czystszy. Mam zamiar stworzyć nową klasę o nazwie
RemoveAdsManager
, a w niej umieścić kilka funkcjiPierwsze trzy funkcje,
removeAds
,restoreRemoveAds
, iareAdsRemoved
są funkcje, które musisz zadzwonić, aby wykonać pewne czynności. Cztery ostatnie to te, które będą wywoływane przezIAPManager
.Dodajmy kod do pierwszych dwóch funkcji
removeAds
irestoreRemoveAds
:Na koniec dodajmy kod do pięciu ostatnich funkcji.
Podsumowując, otrzymujemy coś takiego:
Na koniec musisz dodać sposób, w jaki użytkownik może rozpocząć zakup i zadzwonić
RemoveAdsManager.removeAds()
oraz rozpocząć przywracanie i połączenieRemoveAdsManager.restoreRemoveAds()
, jak gdzieś przycisk! Pamiętaj, że zgodnie ze wskazówkami App Store musisz podać przycisk, aby przywrócić gdzieś zakupy.Przesyłanie do recenzji
Ostatnią rzeczą do zrobienia jest przesłanie IAP do sprawdzenia w App Store Connect! Aby uzyskać szczegółowe instrukcje na ten temat, możesz postępować zgodnie z ostatnią częścią mojej odpowiedzi na Cel C , pod nagłówkiem Przesyłanie do recenzji .
źródło
RMStore to lekka biblioteka iOS do zakupów w aplikacji. Zawiera API StoreKit i zapewnia przydatne bloki dla żądań asynchronicznych. Zakup produktu jest tak prosty, jak wywołanie jednej metody.
Dla zaawansowanych użytkowników ta biblioteka zapewnia również weryfikację pokwitowań, pobieranie treści i utrwalanie transakcji.
źródło
Wiem, że spóźniłem się z opublikowaniem tego, ale dzielę się podobnym doświadczeniem, kiedy poznałem liny modelu IAP.
Zakup w aplikacji to jeden z najbardziej kompleksowych przepływów pracy w systemie iOS realizowany przez platformę Storekit. Cała dokumentacja jest dość oczywiste, jeśli cierpliwość, aby ją przeczytać, ale jest nieco rozszerzone w naturze technicyzacji.
Podsumowując:
1 - Zamów produkty - skorzystaj z klas SKProductRequest & SKProductRequestDelegate, aby wysłać zapytanie o identyfikatory produktu i otrzymać je z powrotem z własnego sklepu itunesconnect.
Tych produktów SKProducts należy użyć do wypełnienia interfejsu użytkownika sklepu, którego użytkownik może użyć do zakupu określonego produktu.
2 - Wyślij prośbę o płatność - użyj SKPayment i SKPaymentQueue, aby dodać płatność do kolejki transakcji.
3 - Monitoruj kolejkę transakcji w celu aktualizacji statusu - użyj zaktualizowanej metody SKPaymentTransactionObserver protokołu do monitorowania statusu:
4 - Przywróć przepływ przycisków - użyj polecenia SKPaymentQueue restoreCompletedTransactions, aby to zrobić - krok 3 zajmie się resztą, wraz z następującymi metodami SKPaymentTransactionObserver:
Oto samouczek krok po kroku (autorstwa autora będący wynikiem moich własnych prób jego zrozumienia), który to wyjaśnia. Na koniec zawiera również przykładowy kod, którego można użyć bezpośrednio.
Oto kolejna, którą stworzyłem, aby wyjaśnić pewne rzeczy, które tylko tekst mógłby opisać w lepszy sposób.
źródło