Подтвердить что ты не робот

Покупки в приложениях с несколькими учетными записями

У меня возникла проблема с покупками/подписками приложений:

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

Я использую классы IabHelper из этого примера.

Выполняя некоторые поисковые запросы Google, я обнаружил, что эта ошибка существует с течением времени, но, к сожалению, я не мог узнать, является ли ошибка в классах IabHelper или на стороне Google.

Я хотел бы обратить внимание на Google, поэтому они обеспечивают правильное исправление для этого, либо в классах IabHelper, либо в Службе воспроизведения, либо для предоставления информации, как это следует обрабатывать.

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

Если для этого есть исправление, которое я пропустил, сообщите мне.

Изменить: Иногда вообще невозможно получить покупки, даже если на телефоне есть только одна учетная запись.

4b9b3361

Ответ 1

Кажется, что нет пути для решения этой проблемы, но попробуйте сделать это.

  • Когда пользователь сначала устанавливает приложение, получает его/ее основной адрес электронной почты или все учетные записи на устройстве

  • Спросите пользователя, какой адрес электронной почты они будут использовать для будущей оплаты/или какая учетная запись активна для игры Google.

    вы можете использовать этот код для получения учетной записи

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
    Account[] accounts = AccountManager.get(context).getAccounts();
    for (Account account : accounts) {
        if (emailPattern.matcher(account.name).matches()) {
            String possibleEmail = account.name;
            ...
        }
    }
    

    Не забудьте спросить разрешения

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    

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

  • Ведите весь платеж по этому конкретному письму.

Метод 2

Используйте новые "Отправить и получить деньги с помощью Gmail" в будущем

  • Создайте намерение электронной почты и отправьте конкретные данные в намерение электронной почты и выполните платежи.

  • После успеха отправьте код пользователю по электронной почте

  • Используйте код для активации того, что они приобрели.

Метод 3

Используйте другую библиотеку платежей или шлюз для покупки вашего приложения вместо Google.

Ответ 2

Уверен, что ошибка в сервисной службе биллинга в приложении.

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

Ответ 3

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

Вы можете использовать OAuth 2.0.

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

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

signer = new OAuthHmacSigner();
signer.clientSharedSecret = Constants.CONSUMER_SECRET;

Затем активность Android использует следующий код для запуска потока OAuth:

launchOauth.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        startActivity(new Intent().setClass(v.getContext(),
            PrepareRequestTokenActivity.class));
    }
});

Чтобы получить токен доступа OAuth 2.0, вам просто нужно позвонить:

AccountManager.getAuthToken()

Надеюсь, это может помочь:)

Ответ 4

У меня есть две учетные записи, но никто не работает. Что я сделал, так это то, что я зашел в настройки Android, а затем принял во внимание предпочтения. Я изменил основную учетную запись с той, которая не работает на рабочем. Затем я назначил новую учетную запись основным для всех моих приложений, включая Google Play. Это сработало для меня. Иногда, если он по какой-то причине не работает, вы также можете выйти в интернет и получить доступ к магазину Google Play из Интернета.

Ответ 5

Попробуйте получить dup... duplicate dot с сигнатурой файла, заканчивающейся на .apk или .xcode

Ответ 6

Я не уверен, что это тот ответ, который вы ищете, но, возможно, создать общую семейную библиотеку Google Play. Он работает до 5 пользователей, которые используют одинаковые покупки (приложение, музыку, фильмы и т.д.), Если это необходимо.

(Смотрите: https://support.google.com/googleplay/answer/7007852?hl=en)