30

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

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

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

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

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

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

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

+0

заинтересованы в одном и том же – Greg

+1

может записывать счет, который был впервые использован сделать первая покупка или первое открытие? (это определенно не то же самое, что точность уровня хранилища) – Edison

ответ

0

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

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

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

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

+0

Это не решает общей проблемы. Например, в нашем приложении мы внедрили AccountManager и SyncAdapter, содержащие учетные записи, связанные с пользователями на нашем сервере. Каждый пользователь в нашем приложении может приобрести подписку. Проблема в том, что мы также хотим поддерживать нескольких пользователей на устройстве (например, Google делает на большинстве своих приложений). Итак, как у пользователя есть 2 аккаунта в нашем приложении на одном устройстве с подпиской на оба из них? В настоящее время это довольно сложно реализовать из-за биллинговой системы, реализованной Google Play в отношении учетных записей пользователей. –

+0

Это то, с чем вам приходится обращаться, используя поддержку на стороне сервера. Если ваше приложение поддерживает несколько учетных записей, вам необходимо указать сервер, на котором есть две «связанные» аккаунты. Когда пользователь покупает продукт с помощью IAB, вы можете сообщить серверу, что есть новая покупка для определенной учетной записи google, и у вас есть способ продлить покупку на другую учетную запись. Это не обрабатывается Google, это часть логики, которую вы должны обрабатывать на стороне клиента и сервера. –

2

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

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; 

       } 
      } 
Смежные вопросы