Я реализую покупки в приложении для своего приложения (которое будет выпущено) и обеспечит поддержку iOS6 и iOS7. Мой вопрос связан с различиями между невозобновляемыми механизмами подписки на iOS6 и iOS7, а точнее на то, как осуществляется восстановление. Чтобы разместить как iOS6, так и iOS7, я применил серверное решение для восстановления. Я по желанию разрешаю пользователю создавать имя пользователя/пароль, которые могут быть использованы на другом устройстве (или на том же устройстве, если данные потеряны) для восстановления. У меня большая часть этого в основном работает, но по мере того, как я прогрессировал с моим тестированием, я нашел кое-что любопытное.Неопубликованные подписки: удалены из чеков?
Исходная часть моего процесса восстановления для iOS7 использует SKReceiptRefreshRequest для обновления квитанции в приложении. Когда я удалю приложение с устройства iOS7, переустановите (на данный момент нет квитанции, проверено с помощью iExplorer) и выполните восстановление, SKReceiptRefreshRequest восстанавливает 10 покупок (которые я создал во время тестирования для этого конкретного пользователя) , Один из них является нерасходуемым, а девять из них не являются возобновляемыми.. Это меня смущает. В документах Apple я ожидал увидеть только нерасходные покупки в обновленной квитанции. От https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateLocally.html:
«Потребляемая продукция и Non-обновление подписки: purchare поступления в приложении для расходного материала или без обновляющейся подписки добавляется к получению, когда покупка сделана. Это хранится в квитанции, пока ваше приложение не завершит эту транзакцию. После этого момента, он удаляется с получением в следующий раз расписка обновляется, например, когда пользователь делает еще одну покупку или если ваше приложение явно обновляет квитанцию.»
Как в связи с не -renewing подписки, от https://developer.apple.com/in-app-purchase/In-App-Purchase-Guidelines.pdf:
Использование ICloud или ваш собственный сервер для отслеживания покупок и позволить пользователю восстановить купленные подписки на всех IOS устройств, принадлежащих одному пользователю
И следующая таблица из (https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Products.html)
Кто-нибудь есть какие-либо идеи?
Вопрос: Почему SKReceiptRefreshRequest оставить покупки для не-обновляющихся продуктов в получении? Является ли это ошибкой в документах Apple или что-то еще происходит?
2/23/14; Обновление: Я недавно опубликовал отчет об ошибке в Apple. Еще нет слова. Хотя, на самом деле, я не хочу, чтобы эта «ошибка» исчезла!
10/20/15; Обновление: Кажется, что Apple действительно решила эту «ошибку».Теперь, когда я делаю восстановление с использованием SKReceiptRefreshRequest
(который, как представляется, рекомендован рекомендованным Apple способом восстановления, см. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html), теперь я не, получая покупки без обновления подписки в квитанции. Я получаю только расходные материалы (у моего приложения есть только не возобновляемые подписки и покупки без расходных материалов). Я собираюсь представить отчет об ошибке Apple сразу после того, как я напишу это как минимум, их документы неоднозначны по ожидаемому поведению.
До сих пор мое тестирование этого приложения включало мое приложение, работающее на iOS 8.4 и iOS9 (бета-версия 9.1 на самом деле, так как у меня нет правильного устройства, работающего с производственной версией), и поэтому кажется, что это изменение на стороне сервера с помощью Apple, а не, строго говоря, изменение iOS/устройства. Также обратите внимание, что все мое тестирование до сих пор находится в разработке моего приложения, а также в песочнице для покупки приложений. Я скоро проведу производственный тест.
12/3/15; Обновить; По запросу Apple Tech Support я провел еще несколько тестов. На этот раз на iPad работает iOS9.2 beta 4 (13C75). Кажется, мы вернулись к «нормальному» сейчас с не обновляющимися подписками. То есть, когда я делаю восстановление, я снова вижу возобновление подписки в квитанции.
ли вы когда-нибудь слышали что-нибудь обратно на это? Я тоже смотрю на это, и, как вы можете видеть все невозобновляемые квитанции в разделе покупки в приложении квитанции. Однако я бы также упомянул о яблочных документах здесь https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1, где если вы посмотрите на получение покупки в приложении, вы увидите, что «значение этого ключа является массивом, содержащим все квитанции о покупке в приложении». – MrNeilM
Нет. Я ничего не слышал. В прошлый раз, когда я отправил отчет об ошибке, я услышал в тот же день, что и релиз iOS7. Итак, возможно, я вернусь к дате выхода iOS8? –
Интересно. Таким образом, я на самом деле написал (хорошо, что нужно убирать) код, чтобы прочитать квитанцию, входящую в In App Purchase, выработать срок действия, с учетом всех продлений и любых упущений в сервисе или перекрытий и т. Д. Кроме того, используя SKReceiptRefreshRequest Я могу взять новую копию квитанции на другое устройство. Таким образом, вполне возможно управлять подпиской на Non-Renewing на всех пользовательских устройствах без каких-либо бэкэнд или синхронизации. Кажется, у Apple есть противоречивая информация? – MrNeilM