Странное поведение с Android In-App Billing
У меня есть целый ряд, как мне кажется, очень странного поведения при интеграции In-App Billing в проект для клиента. Я надеюсь, что кто-то может пролить некоторый свет на то, что может быть основной причиной, и что, если что-нибудь, я могу сделать с ними. До сих пор несколько дней Googling (много результатов, приводящих к переполнению стека) и некоторый дополнительный поиск здесь, похоже, не совсем такие же проблемы, как у нас, но дают некоторые похожие проблемы.
В качестве небольшого фона для понимания того, что представляет собой покупка, это покупка пакета мирового уровня для простой игры-головоломки. Мы показываем тележку, чтобы указать, что товар можно купить, значок вращения / загрузки, чтобы показать, что покупка совершается, и мы показываем информацию о мире (уровни завершены в этом мире и т. Д.), Когда покупка была завершена. Когда отображается счетчик, вы не можете начать делать попытку покупки (кнопка отключена), но вы можете продолжать играть в доступные части игры в обычном режиме.
Похоже, это работает на достаточном количестве устройств, включая теперь их устройства, которые не работали, когда они одолжили мне для тестирования, после того, как некоторые небольшие изменения в коде теперь работают каждый раз. Чтобы быстро перечислить проблемы, которые у нас возникают:
- Тестовый пользователь делает успешную покупку, ему показывается тост Google Play по умолчанию, но я не получаю сообщение об успешной покупке в течение 5 минут (пока наше самое долгое ожидание). Спиннер отображается все время.
- То же, что и выше, но мы не получаем никакого ответа. Оставленные устройства стояли более часа без результата. Блесна никогда не уходит.
- Еще больше меня смущает, что мне сообщили, что одно из моих клиентских устройств продемонстрировало поведение, которое мы ожидаем увидеть, когда покупка не удалась после того, как ей сообщили, что она прошла успешно. (т. е. счетчик заменяется значком тележки, а не данными уровня). Это происходит только тогда, когда я получаю сообщение об ошибке после совершения покупки. Однако мне не было предоставлено никакой информации о регистрации в этом деле, поэтому я не могу ее подтвердить.
- Примечание. Эта конкретная ошибка больше не возникает, но из-за этого мне пришлось внести несколько изменений в код, которые я хотел бы по возможности устранить. После нажатия "Принять и купить" пользователю отображается сообщение "Ошибка". В настоящее время ваш платеж не может быть обработан. Вы можете получить электронное письмо с просьбой подтвердить свою учетную запись ". Когда эта ошибка происходит, я получаю как успех, так и ответ об ошибке.
- Выход из покупки в определенный момент до подтверждения оплаты не приводит к получению ответа вообще, счетчик никогда не уходит. Снова, у меня нет никаких шагов, чтобы воспроизвести это на моем конце, поскольку описание было довольно расплывчатым и пришло без журналов.
Обратите внимание, что примерно на половине наших тестовых устройств и тестовых аккаунтов покупка работает отлично. Обычно ответ получен и товар доставлен в течение 30 секунд. Также обратите внимание, что восстановление транзакций работает как и ожидалось для всех этих случаев (1, 2 и 3 все возвращают успешные ответы, а 4 ничего не возвращает). Из-за проблем 2 и 3 я теперь отмечаю приложение для выполнения вызова транзакций восстановления при следующем запуске приложения после запуска запроса на покупку, это кажется обходным решением, но проблемы возникают слишком часто, чтобы это было удовлетворительным,
Для кратких технических характеристик я использую Unity3D с последней версией плагина Prime31. Я полагаю, что это не проблема, так как информация о регистрации, которую мне предоставили (обычно в случае проблемы 2), и мои собранные журналы не показывают никакой информации относительно события изменения состояния покупки, когда обычно есть несколько, когда сообщение получено. Первый из них регистрируется самим устройством перед передачей в приложение.
Я должен быть в состоянии получить список затронутых устройств с некоторыми журналами завтра, когда я посещаю мой офис клиентов. Однако я не думаю, что это устройство связано с тем, что у них есть 2 ASUS Nexus 7 для тестирования, один из которых всегда работал, а второй все еще иногда показывает ошибки.
Может кто-нибудь пролить свет на эти вопросы? Это мой первый опыт биллинга в приложении в Google Play, и он не был таким простым, как казалось на первый взгляд.
Спасибо