Как добавить покупку из приложения в приложение для iOS? Каковы все детали и есть ли пример кода?
Предполагается, что это будет всеобщая информация о том, как добавлять покупки из приложений в приложения для iOS.
Как добавить покупку из приложения в приложение для iOS? Каковы все детали и есть ли пример кода?
Предполагается, что это будет всеобщая информация о том, как добавлять покупки из приложений в приложения для iOS.
Ответы:
Swift Users
Пользователи Swift могут проверить My Swift Ответ на этот вопрос .
Или посмотрите ответ Йедиджи Рейсс , который переводит этот код Objective-C в Swift.
Пользователи Objective-C
Остальная часть этого ответа написана в Objective-C
App Store Connect
My Apps
выберите приложение, в которое хотите добавить покупку.Features
заголовок, а затем выберитеIn-App Purchases
слева+
значок в серединеnon-consumable
. Если вы собираетесь отправить физический элемент пользователю или дать ему что-то, что они могут купить более одного раза, вы бы выбралиconsumable
.tld.websitename.appname.referencename
это будет работать лучше всего, например, вы можете использоватьcom.jojodmo.blix.removeads
cleared for sale
а затем выберите ценовой уровень как 1 (99 ¢). Уровень 2 будет 1,99 доллара, а уровень 3 будет 2,99 доллара. Полный список доступен, если вы нажметеview pricing matrix
Я рекомендую использовать уровень 1», потому что обычно это самая большая сумма, которую кто-либо заплатит за удаление рекламы.add language
кнопку и введите информацию. Это ВСЕ будет показано клиенту, поэтому не кладите ничего, что вы не хотите, чтобы он виделhosting content with Apple
выбора нетscreenshot for review
НА СЕЙЧАС , все, что мы пропускаем, мы вернемся к.Регистрация вашего продукта может занять несколько часов
App Store Connect
, так что наберитесь терпения.Настройка вашего проекта
Теперь, когда вы настроили информацию о покупках в приложении в App Store Connect, зайдите в свой проект Xcode и перейдите в диспетчер приложений (синий значок в виде страницы вверху, где находятся ваши методы и заголовочные файлы), нажмите на Ваше приложение под целями (должно быть первым), затем перейдите к общему. Внизу вы должны увидеть
linked frameworks and libraries
маленький значок плюса и добавить фреймворк.StoreKit.framework
Если вы этого не сделаете, покупка в приложении НЕ будет работать!Если вы используете Objective-C в качестве языка для вашего приложения, вы должны пропустить эти пять шагов . В противном случае, если вы используете Swift, вы можете следовать моему ответу Swift для этого вопроса, здесь или, если вы предпочитаете использовать Objective-C для кода покупки в приложении, но используете Swift в своем приложении, вы можете сделать следующее :
Создайте новый
.h
файл (заголовок), перейдя вFile
>New
>File...
( Command ⌘+ N). Этот файл будет называться «Ваш.h
файл» в оставшейся части учебника.При появлении запроса нажмите « Создать заголовок моста» . Это будет наш файл заголовка моста. Если вам не предлагается, перейдите к шагу 3. Если вам будет предложено, пропустите шаг 3 и перейдите непосредственно к шагу 4.
Создайте другой
.h
файл с именемBridge.h
в главной папке проекта, затем перейдите в диспетчер приложений (синий значок в виде страницы), затем выберите свое приложение вTargets
разделе и нажмитеBuild Settings
. Найдите параметр с надписью Swift Compiler - Generation , а затем установите для параметра Objective-C Bridging Header значениеBridge.h
В вашем файле заголовка моста добавьте строку
#import "MyObjectiveCHeaderFile.h"
, гдеMyObjectiveCHeaderFile
находится имя файла заголовка, который вы создали на первом шаге. Так, например, если вы назвали свой заголовочный файл InAppPurchase.h , вы бы добавили строку#import "InAppPurchase.h"
в ваш заголовочный файл моста.Создать новую Objective-C методы (
.m
файл), перейдя вFile
>New
>File...
( Command ⌘+ N). Назовите его так же, как заголовочный файл, созданный на шаге 1. Например, если вы вызвали файл на шаге 1 InAppPurchase.h , вы бы назвали этот новый файл InAppPurchase.m . Этот файл будет называться «Ваш.m
файл» в оставшейся части руководства.кодирование
Теперь мы собираемся перейти к фактическому кодированию. Добавьте следующий код в ваш
.h
файл:Далее вам нужно импортировать
StoreKit
фреймворк в ваш.m
файл, а также добавитьSKProductsRequestDelegate
иSKPaymentTransactionObserver
после вашего@interface
объявления:и теперь добавьте следующее в ваш
.m
файл, эта часть усложняется, поэтому я предлагаю вам прочитать комментарии в коде:Теперь вы хотите добавить свой код для того, что произойдет, когда пользователь завершит транзакцию, для этого руководства мы используем удаление добавлений, вам нужно будет добавить свой собственный код для того, что происходит, когда загружается представление баннера.
Если у вас нет рекламы в вашем приложении, вы можете использовать любую другую вещь, которую вы хотите. Например, мы могли бы сделать цвет фона синим. Для этого мы бы хотели использовать:
Теперь где-нибудь в вашем
viewDidLoad
методе вы захотите добавить следующий код:Теперь, когда вы добавили весь код, перейдите в свой файл
.xib
илиstoryboard
файл и добавьте две кнопки, одна из которых говорит о покупке, а другая - о восстановлении. ПодключитеtapsRemoveAds
IBAction
к кнопке покупки, которую вы только что сделали, иrestore
IBAction
к кнопке восстановления.restore
Действие будет проверять , если пользователь ранее приобрел покупку в приложении, и дать им покупку в приложение бесплатно, если они уже не имеют его.Отправка на проверку
Затем перейдите в App Store Connect , нажмите,
Users and Access
затем щелкнитеSandbox Testers
заголовок, а затем щелкните+
символ слева, где он написанTesters
. Вы можете просто ввести случайные вещи для имени и фамилии, и электронная почта не обязательно должна быть реальной - вы просто должны ее запомнить. Введите пароль (который вам придется запомнить) и заполните остальную информацию. Я бы порекомендовал вам сделатьDate of Birth
дату, которая сделает пользователя 18 лет или старше.App Store Territory
ДОЛЖЕН быть в правильной стране. Затем выйдите из существующей учетной записи iTunes (вы можете снова войти после этого урока).Теперь запустите приложение на своем устройстве iOS, если вы попытаетесь запустить его на симуляторе, покупка всегда будет иметь ошибку, вы ДОЛЖНЫ запустить его на своем устройстве iOS. После запуска приложения нажмите кнопку покупки. Когда вам будет предложено войти в свою учетную запись iTunes, войдите в систему как созданный нами тестовый пользователь. Затем, когда вам будет предложено подтвердить покупку на 99 ¢ или что-то еще, что вы установили на ценовом уровне, возьмите экранный снимок, который вы собираетесь использовать для этого
screenshot for review
в App Store Connect. Теперь отмените оплату.Теперь перейдите в App Store Connect , а затем перейти к
My Apps
>the app you have the In-app purchase on
>In-App Purchases
. Затем нажмите на покупку в приложении и нажмите «Изменить» под информацией о покупке в приложении. Как только вы это сделаете, импортируйте фотографию, которую вы только что сделали на свой iPhone, в свой компьютер, и загрузите ее в качестве скриншота для просмотра, а затем, в примечаниях к обзору, укажите свой адрес электронной почты и пароль для TEST USER . Это поможет Apple в процессе обзора.После того, как вы это сделаете, вернитесь в приложение на вашем устройстве iOS, все еще войдя в систему в качестве тестовой учетной записи пользователя, и нажмите кнопку покупки. На этот раз подтвердите платеж. Не волнуйтесь, это НЕ будет списывать с вашего счета ЛЮБЫЕ деньги, тестовые учетные записи пользователей получают все покупки в приложении бесплатно. После подтверждения оплаты убедитесь, что происходит, когда пользователь фактически покупает ваш продукт. случается. Если это не так, то это будет ошибкой в вашем
doRemoveAds
методе. Опять же, я рекомендую использовать изменение фона на синий для тестирования покупки в приложении, хотя это не должно быть вашей реальной покупкой в приложении. Если все работает и у тебя все хорошо! Просто добавьте покупку в приложении в новый бинарный файл, когда загрузите его в App Store Connect!Вот несколько распространенных ошибок:
Записано:
No Products Available
Это может означать четыре вещи:
kRemoveAdsProductIdentifier
в приведенном выше кодеЕсли это не сработает в первый раз, не расстраивайтесь! Не сдавайся! Это заняло у меня около 5 часов, прежде чем я смог заставить это работать, и около 10 часов в поисках правильного кода! Если вы используете приведенный выше код точно, он должен работать нормально. Не стесняйтесь комментировать , если у вас есть какие - либо вопросы на всех .
Я надеюсь, что это поможет всем тем, кто хочет добавить покупку в приложение для своего iOS-приложения. Ура!
источник
Просто переведите код Jojodmo в Swift:
источник
Свифт Ответ
Это сделано для того, чтобы дополнить мой ответ в Objective-C для пользователей Swift, чтобы не дать ответу Objective-C стать слишком большим.
Настроить
Сначала настройте покупку в приложении на appstoreconnect.apple.com . Следуйте начальной части моего ответа Objective C (шаги 1-13, под заголовком App Store Connect ) для получения инструкций по этому.
Регистрация вашего идентификатора продукта в App Store Connect может занять несколько часов, поэтому наберитесь терпения.
Теперь, когда вы настроили информацию о покупках в приложении в App Store Connect, нам нужно добавить в приложение инфраструктуру Apple для покупок
StoreKit
из приложения.Зайдите в ваш проект Xcode и перейдите к диспетчеру приложений (синий значок в виде страницы в верхней части левой панели, где находятся файлы вашего приложения). Нажмите на ваше приложение под целями слева (это должен быть первый вариант), затем перейдите в «Возможности» вверху. В списке вы должны увидеть опцию «Покупка из приложения». Включите эту возможность, и Xcode добавит
StoreKit
в ваш проект.кодирование
Теперь мы собираемся начать кодирование!
Во-первых, создайте новый swift-файл, который будет управлять всеми вашими покупками в приложении. Я собираюсь позвонить
IAPManager.swift
.В этом файле мы собираемся создать новый класс,
IAPManager
который называется aSKProductsRequestDelegate
иSKPaymentTransactionObserver
. Вверху убедитесь, что вы импортируетеFoundation
иStoreKit
Далее мы собираемся добавить переменную для определения идентификатора для нашей покупки в приложении (вы также можете использовать
enum
, который будет проще поддерживать, если у вас несколько IAP).Давайте добавим инициализатор для нашего класса:
Теперь мы собираемся добавить необходимые функции для
SKProductsRequestDelegate
иSKPaymentTransactionObserver
для работы:Мы добавим
RemoveAdsManager
класс позжеТеперь давайте добавим некоторые функции, которые можно использовать для запуска покупки или ее восстановления:
Далее, давайте добавим новый класс утилит для управления нашими IAP. Весь этот код может быть в одном классе, но его множественность делает его немного чище. Я собираюсь сделать новый класс с именем
RemoveAdsManager
, и в него, положить несколько функцийПервые три функции,
removeAds
,restoreRemoveAds
иareAdsRemoved
, являются функциями , которые вы будете называть делать определенные действия. Последние четыре будут вызваныIAPManager
.Давайте добавим немного кода к первым двум функциям
removeAds
иrestoreRemoveAds
:И, наконец, давайте добавим немного кода к последним пяти функциям.
Собрав все это вместе, мы получим что-то вроде этого:
Наконец, вам нужно добавить какой-то способ для пользователя начать покупку и позвонить,
RemoveAdsManager.removeAds()
начать восстановление и звонокRemoveAdsManager.restoreRemoveAds()
, как где-то кнопка! Имейте в виду, что в соответствии с рекомендациями App Store вам необходимо предоставить кнопку для восстановления покупок где-либо.Отправка на проверку
Последнее, что нужно сделать, это отправить свой IAP на рассмотрение в App Store Connect! Для получения подробных инструкций о том, как это сделать, вы можете следовать последней части моего ответа в Objective-C под заголовком Отправка для проверки .
источник
RMStore - это легкая библиотека iOS для покупок внутри приложения. Он оборачивает StoreKit API и предоставляет вам удобные блоки для асинхронных запросов. Приобрести продукт так же просто, как вызвать один метод.
Для опытных пользователей эта библиотека также обеспечивает проверку квитанций, загрузку контента и сохранение транзакций.
источник
Я знаю, что опоздал, чтобы опубликовать это, но я делюсь подобным опытом, когда я изучил веревки модели IAP.
Покупка из приложения - это один из наиболее полных рабочих процессов в iOS, реализованный в среде Storekit. Вся документация вполне понятно , если вы терпение прочитать его, но несколько продвинулась в природе формальности.
Подвести итоги:
1 - Запросите продукты - используйте классы SKProductRequest и SKProductRequestDelegate, чтобы отправить запрос на идентификаторы продуктов и получить их обратно из собственного магазина itunesconnect.
Эти SKProducts должны использоваться для заполнения пользовательского интерфейса вашего магазина, который пользователь может использовать для покупки определенного товара.
2 - Оформить запрос на оплату - используйте SKPayment & SKPaymentQueue, чтобы добавить платеж в очередь транзакций.
3 - Отслеживание очереди транзакций для обновления статуса - используйте метод updatedTransactions протокола SKPaymentTransactionObserver для мониторинга статуса:
4 - Поток кнопки Восстановить - используйте SKPaymentQueue's restoreCompletedTransactions для выполнения этого - шаг 3 позаботится об остальном, наряду со следующими методами SKPaymentTransactionObserver:
Вот пошаговое руководство (написанное мной в результате моих собственных попыток понять его), которое объясняет это. В конце он также предоставляет пример кода, который вы можете использовать напрямую.
Вот еще один, который я создал, чтобы объяснить некоторые вещи, которые только текст мог бы описать лучше.
источник