Использование универсальной покупки в приложении - PullRequest
4 голосов
/ 28 марта 2011

Я заканчиваю работу над приложением для iOS, которое позволяет пользователям просматривать, покупать и загружать элементы из большой мультимедийной библиотеки, размещенной в сети в приложении rails.В библиотеке есть сотни предметов, которые можно приобрести прямо сейчас, и в будущем она, вероятно, значительно расширится.

Сначала я намеревался создать единообразный элемент покупки в приложении (в iTunes Connect) для каждого элемента вбиблиотека.Тем не менее, я решил, что будет сложно создать все эти сотни покупок в приложении.Более того, я хочу иметь возможность добавлять и изменять покупные товары через мою CMS, не внося изменений в iTunesConnect.

Вместо этого у меня теперь есть пользователь приложения, создающий учетную запись в приложении rails.Когда они идут, чтобы купить предмет, они сначала покупают общий предмет покупки в приложении.После завершения этой транзакции приложение подключается к моему приложению rails, регистрирует покупку и загружает приобретенный контент.

Одна вещь, которая заставляет меня нервничать в связи с этим подходом, заключается в том, что пользователь может успешно создать приложение в приложении.купить с Apple, но затем как-то не удается успешно подключиться к приложению рельсы.В этом случае покупка не будет записана, а содержимое не будет загружено, даже если пользователь сделал платеж.Кроме того, встроенные в Apple методы восстановления покупок не сработают, поскольку элемент покупки является общим.Только мое приложение rails будет помнить, какие предметы приобрел пользователь.

Итак, я собираюсь добавить много проверок ошибок и восстановления состояния всего этого процесса.Чтобы убедиться, что он может восстановиться, если у него возникнут проблемы.

Я просто хотел изложить это на случай, если у кого-то есть мнение или совет, которым можно поделиться.

Спасибо!

Чарли

ОБНОВЛЕНИЕ

Прошло много времени, но в итоге я НЕ использовал универсальный в-покупка.Это просто казалось слишком большим риском.В конце концов, с помощью отдельных покупок в приложении Apple отслеживает покупки и предоставляет способ их восстановления.Поэтому имело смысл воспользоваться этим, а не заставлять себя вести собственную базу данных пользователей и их покупок.

Было очень больно в заднице добавлять все эти элементы в приложении в iTC.Интерфейс iTC такой ужасный.Я столкнулся с множеством проблем.Но в конце концов все они оказались там, и теперь все работает более-менее гладко.

Итак, в конце я бы сказал, что несмотря на то, что создавать все эти покупки - боль, это того стоит.Вернее, оно того стоит.Если создание этой записи о покупке в iTC, похоже, не стоит того, что вы ожидаете от продажи, то у вас, вероятно, большие проблемы с вашей бизнес-моделью!

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Одна вещь, которую вы можете сделать, как только транзакция будет завершена, - сохранить квитанцию ​​о покупке локально (в NSUserDefaults или в любом другом способе сохранения данных), так что если вы не сможете «завершить покупку» (т.е. записать его и загрузить контент с сервера) вы всегда можете возобновить его позже.

Если вы все еще беспокоитесь о том, что это (т.е. сохранение квитанции о покупке локально до обновления сервера) по какой-то причине может не получиться,или даже то, что пользователь может удалить / переустановить приложение после оплаты и, прежде чем сможет записать его на своем сервере, вы всегда можете записать на своем сервере, что пользователь инициировал покупку в приложении, прежде чем делать это, а затем обновить его состояние.после того, как он завершил / отменил его.

Кстати, вы не упомянули об этом, но просто чтобы быть в безопасности: вы только передаете квитанцию ​​о покупке от вашего клиента на сервер, верно?Это единственное, что вам нужно от транзакции, так как вы можете (и должны) затем проверить квитанцию ​​в Apple и использовать ее для извлечения всей другой информации о покупке (например, идентификатора продукта и т. Д.).

1 голос
/ 28 марта 2011

Как только Apple вернула успешное сообщение в приложении ...

1. Лучше сохранить ProductID в словаре и удалить ProductID из словаря после успешного обновления сервера.

2. Игнорировать любые события до завершения транзакции.

3.Лучше отслеживать транзакции, т. Е. Сохранять информацию о транзакции (ProductID, пользователь, получатель транзакции) на стороне сервера.

3.В качестве опции вы можете предоставлять услуги с веб-сайта, чтобы пользователь мог отправить вам письмо, если он потерял свои деньги во время покупки приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...