Информация об учетной записи, связанная с установкой приложения

Это широко распространенный вопрос среди тех, кто внедряет биллинг в приложениях в Android, а именно то, как обрабатываются несколько учетных записей. Если у пользователя настроено несколько учетных записей, какая из них будет использоваться для выставления счетов в приложении (поскольку нет возможности позволить пользователю выбрать учетную запись)? После долгих поисков следующий абзац здесь, кажется, объясняет это.

Примечание. Чтобы совершать пробные покупки, тестовая учетная запись лицензии должна находиться на устройстве Android пользователя. Если на устройстве имеется более одной учетной записи, покупка будет совершена с учетной записью, с которой было загружено приложение. Если ни одна из учетных записей не загрузила приложение, покупка совершается с помощью первой учетной записи. Пользователи могут подтвердить учетную запись, которая совершает покупку, развернув диалоговое окно покупки.

Я создаю полезную нагрузку разработчика, используя учетную запись, которая участвует в выставлении счетов за приложение, чтобы ее можно было правильно восстановить позже или на другом устройстве. Но начиная с Honeycomb не существует такого понятия, как основная учетная запись. Пользователь может удалить любую учетную запись, может быть ту, с которой было приобретено приложение, и в этом случае для выставления счетов будет использоваться первая учетная запись из списка учетных записей. Теперь, если я знаю, какая учетная запись использовалась, и если это «не та учетная запись, с которой было установлено приложение», я могу, по крайней мере, сообщить пользователю, что следующие покупки не будут восстановлены позже.

Итак, мой вопрос..

Есть ли способ узнать, какая учетная запись использовалась для загрузки приложения?

Похоже, Google Play использует эту информацию. В любом случае, мы можем взаимодействовать с Google Play до этого уровня?

примечание: PackageManager, похоже, не справляется с этим.


person Achin Kumar    schedule 09.10.2013    source источник
comment
интересует то же самое   -  person Greg    schedule 02.12.2013
comment
можете ли вы записать учетную запись, которая впервые использовалась для первой покупки или первого открытия? (это определенно не то же самое, что точность уровня игрового магазина)   -  person Edison    schedule 04.02.2014


Ответы (2)


Если вы хотите получить имя почтового идентификатора учетной записи, который в настоящее время настроен для учетной записи Play Store. Пожалуйста, используйте его. Я помещаю сюда только имя электронной почты, но вы можете получить всю информацию об учетной записи, например тип, описание из объекта учетной записи

  Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
            Account[] accounts =        AccountManager.get(this).getAccountsByType("com.google");
            for (Account account : accounts) {
                if (emailPattern.matcher(account.name).matches()) {
                    primaryEmailID = account.name;

                }
            }
person Jay Dwivedi    schedule 24.07.2015

Моя интуиция подсказывает мне создать свою собственную комбинацию AccountManager и SyncAdapter. Для того, чтобы контролировать учетную запись, связанную с вашим выставлением счетов в приложении. Затем вы потенциально можете поддерживать объединение учетных записей на вашем сервере (если пользователь предпримет какие-либо действия и решит объединить учетные записи) и обрабатывать выставление счетов одному и тому же лицу или на основе их учетных записей. А также восстановить покупки на том же устройстве, если вы хотите это разрешить. Вы можете применять политики устройств и т. д. с помощью лицензирования Google Play и, например. DeviceLimiter

Если пользователь удалит старую учетную запись, ваша комбинация AccountManager и SyncAdapter создаст новую учетную запись, и пользователь будет вынужден объединить учетные записи на вашем сервере, чтобы восстановить предыдущие покупки, и у вас будет храниться новая информация «Основной учетной записи».

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

Это всего лишь мои мысли, и я надеюсь, что мы могли бы пролить свет на это и найти «лучшую практику» для поддержки этого.

person ejohansson    schedule 07.02.2014
comment
Это не решает общей проблемы. Например, в нашем приложении мы реализовали AccountManager и SyncAdapter, содержащие учетные записи, связанные с пользователями на нашем сервере. Каждый пользователь нашего приложения может приобрести подписку. Проблема в том, что мы также хотим поддерживать несколько пользователей на одном устройстве (как это делает Google в большинстве своих приложений). Итак, как пользователь может иметь 2 учетные записи в нашем приложении на одном устройстве с подпиской на обе из них? В настоящее время это довольно сложно реализовать из-за системы выставления счетов, реализованной Google Play в отношении учетных записей пользователей. - person Bogdan Zurac; 15.06.2015
comment
Это то, с чем вы должны справиться, используя поддержку на стороне сервера. Если ваше приложение поддерживает более одной учетной записи, вам нужен способ уведомить сервер о наличии двух «подключенных» учетных записей. Когда пользователь покупает продукт с IAB, вы можете сообщить серверу, что есть новая покупка для определенной учетной записи Google, и у вас есть способ распространить покупку и на другую учетную запись. Это не обрабатывается Google, это часть логики, которую вы должны обрабатывать на стороне клиента и сервера. - person Mimmo Grottoli; 10.07.2015