Android In-App-Purchase, как проверить, приобрел ли пользователь один элемент

Это нормально и безопасно установить значение в SharedPreference, чтобы отметить, что пользователь приобрел этот элемент? Что делать, если пользователь взломал это значение в SharedPreference. Или мне нужно каждый раз подключать IAP-сервис, чтобы проверить, прежде чем пользователь сможет его использовать?

(1) Какова наилучшая практика при использовании Google Android IAP V3?

(2) Кроме того, если на устройстве пользователя не установлен Google Play, я могу использовать PayPal для оплаты, но как отслеживать покупку и разблокировать функции для пользователей, если я попрошу пользователя использовать простой платеж в PayPal, чтобы получить лицензию ключ? Я не хочу использовать какой-либо другой платежный SDK, если на веб-странице Paypal купить лицензию. Как это реализовать?

    (1) Какова наилучшая практика при использовании Google Android IAP V3?

    -> официальный документ говорит, что только транзакция платежа будет обрабатываться самой игрой google, но в приложении вам необходимо настроить свою бизнес-логику, как вы обрабатываете интеграцию пользовательского интерфейса и другие вещи после покупки продукта. Вы также можете пойти с покупкой приложения v3.

    (2) Кроме того, если на устройстве пользователя не установлен Google Play, я могу использовать PayPal для оплаты, но как отслеживать покупку и разблокировать функции для пользователей, если я попрошу пользователя использовать простой платеж в PayPal, чтобы получить лицензию ключ? Я не хочу использовать какой-либо другой платежный SDK, если на веб-странице Paypal купить лицензию. Как это реализовать?

    -> Вы можете попросить пользователя обновить версию игры Google динамически. В документе разработчика Google говорится, что более 90% устройств используют 2,2 ОС с установленным магазином воспроизведения Google. Я не мог сказать ничего о транзакции PayPal, потому что я не использовал ее раньше, но да в покупке приложения с помощью v3 очень просто реализовать и понять процесс оплаты.

    Как использовать в своем приложении

    Три способа управления данными вашего приложения.

    1) SharedPrefrence: вы можете использовать значение привилегии share и проверить, куплено ли оно или нет. Если в случае, если пользователь удалил приложение, а затем переустановил приложение, вы можете проверить, был ли пользователь приобретен или нет, при этом вы приобретаете товар уже купленный. И вам нужно управлять пользователем для доступа к вашим данным приложения.

    2) локальная база данных: вы также можете использовать локальную базу данных sqlite для хранения деталей покупки и статуса покупки. И то же самое, что и выше, если пользователь очищает данные или удаляет приложение, а затем запрашивает элемент покупки снова и проверяет, был ли пользователь приобретенным или нет.

    или

    2) База данных сервера. Это лучший способ сравнить с приведенным выше, если вы используете веб-сервер для хранения пользовательских данных. В этом типе вам даже не нужно управлять во второй раз для случая, если пользователь удалит приложение или очистит данные приложения.

    3) obfuscation: (Самый эффективный способ сравнения с общим преимуществом)

    РЕДАКТИРОВАТЬ:

    Это нормально и безопасно установить значение в SharedPreference, чтобы отметить, что пользователь приобрел этот элемент? Что делать, если пользователь взломал это значение в SharedPreference. Или мне нужно каждый раз подключать IAP-сервис, чтобы проверить, прежде чем пользователь сможет его использовать?

    Пока я ищу в Интернете, я нашел ответ Nikolay Elenkov's как Nikolay Elenkov's ниже:

    Если вы просто сохраняете флаг в общих предпочтениях, любой пользователь с корневым устройством может щелкнуть флагом по своему желанию и «подписаться» без оплаты. Таким образом, вы должны хотя бы сделать обфускацию. Вот примерный способ сделать это. Кроме того, существует API для проверки состояния подписки, поэтому вы должны периодически проверять, чтобы подписка была действительной.

    Подробнее проверка ответа Николая Еленкова

    Что лучше всего для выставления счетов? Или в покупке приложения или в Paypal?

    Это зависит от типа продукта,

    -> В биллинге приложений: лучше всего для Google в биллинге приложений,

    Для цифровых продуктов, включая загружаемый контент, такой как мультимедийные файлы или фотографии, виртуальный контент, такой как уровни игры или зелья, премиальные услуги и функции и многое другое.

    http://developer.android.com/google/play/billing/index.html

    -> Paypal: Лучше всего для выставления счетов в Paypal,

    Для физического контента или продукта вы хотите поделиться. Вам не разрешается продавать физические товары или услуги, используя «In-App Purchasing», поскольку товары, приобретенные с помощью этого метода, должны напрямую относиться к приложению, использующему их.

    Покупка физического продукта из приложения iPhone без покупки Apple в приложении

    Надеюсь, это поможет вам.

    Из документации:

    Поскольку клиент Google Play теперь кэширует информацию о выставлении счетов In-app локально на устройстве, вы можете использовать API версии 3 для более частого запроса этой информации, например, посредством вызова getPurchases. В отличие от предыдущих версий API многие вызовы API 3 будут обслуживаться с помощью поиска в кеше, а не через сетевое подключение к Google Play, что значительно ускоряет время ответа API.

    В основном это означает, что вы можете каждый раз искать покупку, и приложение Play Store будет реагировать почти сразу.

    Как сказал Kuffs, лучше всего спросить о внедрении библиотеки In-App Billing на стороне приложения, которая, в свою очередь, запрашивает клиент Google Play устройства. Это гарантирует, что история покупок, полученная недавно с серверов Google Play, будет надежной и относительно свежей информацией.

    Также имейте в виду, что если вы распространяете приложение в Google Play, вы ДОЛЖНЫ использовать механизм оплаты Google Play через In-App Billing. В настоящее время Google Play и Кошелек еще не поддерживают методы Paypal или проводного / банковского перевода, поэтому вам не следует интегрировать этот параметр, если вы его отпустите в Play.

    http://play.google.com/about/developer-content-policy.html#payments

    Intereting Posts
    Ошибка XML-ящика навигации Получение высоты содержимого WebView после загрузки Android MPandroidchart Double YAxis с разной шкалой Почему maxWidth на кнопке не работает и как его обойти? Что на самом деле происходит, если я возвращаю false в OnTouchListener? ClickListener в PagerAdapter срабатывает в неправильном положении Расширенная панель инструментов с пользовательским представлением, не отображаемым с полной шириной Пользовательский адаптер не отображает данные в ListView Устройство Android BLE отключается через короткое время, код ошибки 8 Можно ли сбросить профиль оборудования устройства, чтобы создать эквивалентный AVD? Переход на общий элемент Android между двумя действиями не работает Векторный клипарт Андроидный процесс по-прежнему сохраняется после завершения деятельности Google Планета Земля на Android Обнаруживать качели слева и справа в Android (onFling и OnGestureListener)