#iphone #in-app-purchase #restore
#iPhone #покупка в приложении #восстановить
Вопрос:
Я не совсем понимаю эту идею. Должен ли я предоставлять пользователю кнопку восстановления? Какой метод должен вызывать этот метод? Что будет делать восстановление?
Комментарии:
1. По сути, если вы удалите приложение, перейдете на новый телефон, что угодно, ваши покупки больше не будут доступны на этом устройстве. «Восстановить покупки» запрашивает iTunes, за какие из доступных покупок в приложении вы заплатили. Вы должны указать кнопку восстановления, я не уверен, требуется ли это, но это определенно рекомендуется. Вам следует прочитать документы о покупках в приложении, чтобы получить более четкое представление о том, какая часть транзакции покупки / восстановления является вашей ответственностью, а какая — Apple.
2. Я не эксперт по iPhone, но по опыту использования, если у вас есть покупки в приложении, этот метод должен восстановить все, что пользователь приобрел в / в вашем приложении, конечно, вы будете использовать для идентификации Apple ID / аккаунт.
Ответ №1:
Обычно вы восстанавливаете покупки с помощью этого кода:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Он повторно -paymentQueue:updatedTransactions
активирует наблюдателя (наблюдателей) для приобретенных товаров. Это полезно для пользователей, которые переустанавливают приложение после удаления или устанавливают его на другое устройство.
Не все типы покупок в приложении можно восстановить.
Комментарии:
1. Разве нет чего-то похожего на повторную покупку приложения? Разве это не подсказки, похожие на «Вы приобрели, поэтому можете скачать бесплатно»? У меня не было такого опыта.
2. Нет, это должно быть реализовано разработчиком приложения, чтобы предоставить пользователю такую возможность, но это довольно просто (одна строка кода).
3. Я не могу перехватить какие-либо делегированные методы, когда пользователь не совершил никаких покупок, и нажал восстановить. Магазин получает обработку, но в таком случае никакие методы не вызываются (только paymentQueueRestoreCompletedTransactionsFinished: , но он также вызывается при успешном восстановлении). И что теперь? Я задам вопрос для этого.
4. что, если мой собственный сервер управляет, проверяя платное ограничение во время выполнения. поэтому, если пользователь удалит и установит приложение, он / она получит все платные функции. (в то время мне действительно это нужно?)
Ответ №2:
Вы получите сообщение об отказе от Apple только потому, что продукт, который вы зарегистрировали для покупки в приложении, может относиться к категории невозобновляемых подписок и расходных материалов. Эти типы продуктов не будут автоматически возобновляться. в вашем приложении должна быть явная кнопка восстановления.
для других типов продуктов он автоматически восстановит его.
Пожалуйста, прочтите следующий текст, который прояснит ваше представление об этом :
После того, как транзакция была обработана и удалена из очереди, ваше приложение обычно никогда не видит ее снова. Однако, если ваше приложение поддерживает типы продуктов, которые необходимо восстанавливать, вы должны включить интерфейс, позволяющий пользователям восстанавливать эти покупки. Этот интерфейс позволяет пользователю добавлять продукт на другие устройства или, если исходное устройство было удалено, восстанавливать транзакцию на исходном устройстве.
Store Kit предоставляет встроенную функциональность для восстановления транзакций для непотребляемых продуктов, автоматически возобновляемых подписок и бесплатных подписок. Чтобы восстановить транзакции, ваше приложение вызывает метод restoreCompletedTransactions очереди платежей. Очередь платежей отправляет запрос в App Store для восстановления транзакций. В свою очередь, App Store генерирует новую транзакцию восстановления для каждой транзакции, которая была завершена ранее. Свойство originalTransaction объекта restore transaction содержит копию исходной транзакции. Ваше приложение обрабатывает транзакцию восстановления, извлекая исходную транзакцию и используя ее для разблокировки приобретенного контента. После того, как Store Kit восстановит все предыдущие транзакции, он уведомляет наблюдателей очереди платежей, вызывая их метод paymentQueueRestoreCompletedTransactionsFinished: .
Если пользователь пытается приобрести восстанавливаемый продукт (вместо использования реализованного вами интерфейса восстановления), приложение получает обычную транзакцию для этого товара, а не транзакцию восстановления. Однако с пользователя больше не взимается плата за этот продукт. Ваше приложение должно обрабатывать эти транзакции идентично транзакциям исходной транзакции. Невозобновляемые подписки и расходные материалы не восстанавливаются автоматически с помощью Store Kit. Однако невозобновляемые подписки должны быть восстановлены. Чтобы восстановить эти продукты, вы должны записывать транзакции на свой собственный сервер при их покупке и предоставлять свой собственный механизм для восстановления этих транзакций на устройствах пользователя
Комментарии:
1. Знаете ли вы, что происходит со сценарием, когда восстановление не требуется, как в следующем случае: пользователь может загружать приложение на свое устройство, и это приложение может использовать несколько пользователей, войдя в систему с разными учетными данными. Если пользователь Билл входит в систему со своими учетными данными и покупает приложение, которое покупается только по его учетным данным. Если последний Джо войдет в систему со своими учетными данными, он должен купить его снова. Если Билл войдет в систему на любом другом устройстве, он сможет пользоваться полным приложением. Функции приложения зависят от данных, которые возвращает сервер, а не от других ресурсов. Спасибо!
2. @ zvjerka24 — да, то же самое, что я хочу в своем приложении, тогда какой IAP я должен использовать?
Ответ №3:
Это как дополнительная функциональность.
Если вы не предоставите его, когда пользователь попытается приобрести непотребляемый товар, AppStore восстановит старую транзакцию. Но ваше приложение будет думать, что это новая транзакция.
Если вы предоставите механизм восстановления, ваш менеджер покупок увидит восстановленную транзакцию.
Если приложение должно различать эти опции, вам следует предоставить функциональность для восстановления ранее приобретенных продуктов.
Комментарии:
1. разве это не то, что должен обрабатывать app-store?
2. AppStore обрабатывает это, как сказано в моем сообщении. Приложение будет видеть только разные типы транзакций.
3. Разве нет чего-то похожего на повторную покупку приложения? Разве это не подсказки, похожие на «Вы приобрели, поэтому можете скачать бесплатно»? У меня не было такого опыта.
4. Да, он выдает такое сообщение, если продукт есть
non-consumable
и уже был куплен этой учетной записью.5. Это необязательно. Apple требует, чтобы вы это сделали. Мое приложение было отклонено, потому что я не позволил пользователю восстановить свои IAP.