Ошибка биллинга в андроид магнитоле

Обновлено: 04.07.2024

Независимо от того, есть ли у Вас специализированное устройство для автомобиля, Ваш автомобиль изначально поддерживает данную функцию, или Вы просто используете свой телефон в режим авто — это отличное программное обеспечение. Но иногда может оказаться, что не все работает должным образом. Вот некоторые инструкции, что Вы можете сделать, если Android Auto не работает.

Шаг первый: проверьте кабель и Bluetooth соединение

Это может показаться простым и глупым шагом, но если Вы используете специализированное головное устройство для автомобиля, то кабель является первым местом для начала поиска неисправности. Если Android Auto просто не загружается, попробуйте поменять кабель на другой. Есть шанс, что тот кабель, который Вы используете, был поврежден, что может вызвать всевозможные странные проблемы.

Убедитесь, что Ваш телефон сопряжен и подключен к головному устройству Вашего автомобиля. В то время как Android Auto делает большинство вещей через USB — воспроизведение музыки, голосовые команды карты и т. д. приложение полагается на bluetooth для голосовых вызовов. Вы будете знать, если у Вас здесь проблемы — просто нажмите на кнопку телефона в меню Android Auto. Если оно говорит Вам подключить телефон для звонков, то Bluetooth отключен. Вероятно, нужно отключить телефон от USB и вернуться в меню настроек головного устройства, чтобы повторно подключить устройство. Для точной инструкции по выполнению сопряжения, ознакомьтесь с инструкциями по эксплуатации Вашего автомобиля или головного устройства.

Шаг второй: проверьте разрешения приложения и доступ к уведомлениям

С этого момента остальные наши предложения будут применяться как к приложению Android Auto на телефоне, так и к головному устройству.

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

ПРИМЕЧАНИЕ: следующие шаги были сделаны на устройстве с оболочкой EMUI 5, поэтому они могут немного отличаться в зависимости от производителя Вашего телефона.

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


Сегодня решил с помощью caristы 3.6.5(самая новая) с помощью LP взломать ее. Все делал согласно инструкции, та что на 4 PDA. Только при пересобрать InnApp и LVL? он мне выдал что шаблоны не найдены. Я подтвердил и продолжил. Запустил Caristu выбрал нужный пункт, то что мне нужно "Отображать доступное количество топлива для дозаправки в панели приборов" нажал включить и сохранить. И в ответ всплыло окно -Ваше Android устройство не поддерживает билллинг. Таким образом вы не можете использовать платные функции в приложении. Я в раздумье, что я делал не так. Прошу помощи. Эту операцию проделывал на двух андройдах. у меня адаптер OBDII версия 1.5 ранее уже использовал более раннюю версию 2.5.1 все работало.
В результате разобрался. Все просто оказалось.
LP надо самую новую (у меня 6.9.9.3) поставить, и в переключателях LP включить Google biling включить-(ON). У меня уже был он включен. Установил 3.7 beta-8 уже патченная с 4PDA. Теперь отображается нужное количество топлива. Очень удобно сколько влезет в бак. Также вкл. отображение температуры масла в двигателе только в бортовике не увидел ни какой информации сразу откл.

все.
Я только начал с покупки приложения в моем приложении.
Это что-то новое для меня.
Теперь я видел несколько примеров в сети, я обнаружил, что один проект на github был полон ошибок, прежде чем я связал библиотеку биллинга с ним.
Когда я это сделал, я просто решил ошибки в проекте, но все равно получил восклицательный знак красного цвета, потому что пакет биллинга биллинга Android имеет ошибки.
Я проверил ошибку, но я не мог ее решить, потому что я не понимал, как это сделать.
Пожалуйста, ребята, мне действительно нужна помощь.

Я получил ошибку в этих строках

в asBinder ошибка и ее высказывание "Несколько маркеров в этой строке

Я не знаю, что это за ошибки.
Я только что получил эту библиотеку и разместил ее в своем проекте Eclipse.
И ошибка в InAppBillingService, к которой я не могу получить доступ, потому что она автоматически генерируется!

ОТВЕТЫ

Ответ 1

Получилось много ошибок в сгенерированном файле IInAppBillingService.java. Я пробовал много, много предлагаемых решений без успеха. Наконец, на моем Eclipse SDK работал вариант метода Zedifire. (эти шаги из памяти - попробуйте, пока не сработает!)

выключено > Проект > Автоматически строить удаленные файлы /gen THEN отправился в > Window > Preferences > Java > Compiler и обнаружил, что каким-то образом уровень соответствия по умолчанию был равен 1.5 изменил соответствие до уровня 1.7

image

Всем привет! Недавно передо мной встала задача интегрировать биллинг в наш сервис, и, хотя изначально задача казалась довольно простой, в результате это вылилось в исследование длиной в месяц времени, кучу нервов и открытий. Результатом стало понимание того, что, несмотря на огромное количество документации, не все можно найти простым запросом в Google (а в некоторых местах документация предлагает откровенный бред, о чем я еще расскажу далее).

Зачем вообще это нужно?


То вы можете получить ее только запросом на Android Publisher API.

Полный flow при интеграции биллинга таков:

1. Есть ваше приложение не было ранее загружено — подпишите ваше приложение вашим release-сертификатом и загрузите его в закрытое альфа-или бета тестирование.
All Applications / Ваше Приложение / APK / Alpha(Beta) Testing

2. Создайте список тестирования и активируйте его для выбранного вами (Alpha или Beta) типа тестирования.

3. Добавьте в этот список email-ы Google-аккаунтов, которые будет тестировать биллинг. Например, ваш личный email, с помощью которого вы вошли в Google Play на своем устройстве.


Внизу будет ссылка Opt-in URL: по этой ссылке нужно перейти всем пользователям, которые будут тестировать биллинг (и самому тоже), и согласиться на тестирование. Без этого вы не сможете совершать покупки в альфа/бета версии.

4. Перейдите во вкладку Settings / Account Details, найдите раздел LICENSE TESTING и в поле Gmail accounts with testing access добавьте те же email-ы, что и в прошлом шаге. Теперь с этих аккаунтов вы можете тестировать покупки — за них не будет взыматься плата.
Добавить метод оплаты все же придется — сам диалог покупки потребует этого, однако когда вы непострудственно увидите кнопку купить в приложении — будет указано, что это тестовая покупка.

5. Добавьте тестовые покупки в ваше приложение. Для этого пройдите в All Applications / Ваше Приложение / In-app Products и нажмите Add new product. Можете добавить одну покупку (Managed product) и одну подписку (Subscription). В качестве product id можно использовать что-то в стиле com.example.myapp_testing_inapp1 и com.example.myapp_testing_subs1 для покупки и подписки соответственно Нужно как минимум добавить название и описание, установить цену для продукта, выбрать страны, где он доступен (можете выбрать все), для подписки также выбрать период, и активировать продукт. После этого он станет доступен через некоторое время.

ВАЖНО: вы должны опубликовать приложение (как минимум в alpha/beta), иначе покупки работать не будут.

Коротко о типах покупок

Когда наши покупки будут активированы — мы сможем получить информацию о них непосредственно в мобильном приложении (название, описание, цена в локальной валюте) а также совершить покупку.

Часть 2: Интеграция Android in-app billing в мобильном приложении

Для начала выполним некоторые манипуляции, чтобы работать с биллинг-сервисом в нашем приложении.

Скопируем файлик IInAppBillingService.aidl в наш проект:

Вольный перевод официальной документации

IInAppBillingService.aidl это файл Android Interface Definition Language (AIDL), который определяет интерфейс взаимодействия с сервисом In-app Billing Version 3. Вы будете использовать этот интерфейс для выполнения биллинг-запросов с помощью IPC-вызовов.

Чтобы получить файл AIDL:
Откройте Android SDK Manager.
В SDK Manager найдите и раскройте секцию Extras.
Выберите Google Play Billing Library.
Нажмите Install packages чтобы выполнить установку.
Перейдите в папку src/main вашего проекта и создайте папку с именем aidl.
Внутри этот папки создайте пакет com.android.vending.billing.
Скопируйте файл IInAppBillingService.aidl из папки %anroid-sdk%/extras/google/play_billing/ в только что созданный пакет src/main/aidl/com.android.vending.billing

Добавим разрешение в манифест:


И в месте, где мы собираемся совершать покупки, подключимся к сервису:


Теперь можно приступать к работе с покупками. Получим список наших покупок из сервиса с описанием и ценами:


С помощью этого метода мы можем загрузить данные о доступных покупках.


Теперь мы можем прямо из приложения получить список покупок и информацию про них. Цена будет указана в той валюте, в которой пользователь будет платить. Эти методы надо вызывать в фоновом потоке, так как сервис в процессе может загружать данные с серверов Google. Как использовать эти данные — на ваше усмотрение. Вы можете отобразить цены и названия продуктов из полученного списка, а можете названия и цены указать в ресурсах приложения.

Самое время теперь что-то купить!


Отдельно хочется сказать про dataSignature. Пример ее проверки есть тут, но если ваша покупка валидируется на сервере — то это лишний шаг.

Также может быть полезной возможность получить информацию о уже совершенных покупках:


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

Следующий шаг — использование покупки. Имеется в виду, что вы начисляете пользователю что-то за покупку, а сама покупка пропадает, давая таким возможность совершить покупку еще раз.

После этого вы уже не сможете прочитать данные о покупке — она будет недоступна через getPurchases().

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

Часть 3: Валидация покупок и подписок на сервере

Это самая интересная часть, над которой я бился дольше всего. Все примеры будут на java, для которой Google предоставляет готовую библиотеку для работы со своими сервисами.

Библиотеки и для других языков можно поискать здесь. Документация по Google Publisher API находится тут, в контексте текущей задачи нас интересуют Purchases.products и Purchases.subscriptions.

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

И вот тут нам на помощь приходит IAM (Identy Access Management). Нам нужно создать проект в Google Cloud Console и зайти во вкладку Credentials, выбрать Create credentials → Service account key.

image

image

Заполните данные так, как показано на картинке:

Service account: New service account
Service account name: имя на выбор
Role: не выбирайте, она сейчас не нужна
Key type: JSON

Нажимаете Create. Вылезет окошко с предупреждением Service account has no role. Соглашается, выбираем CREATE WITHOUT ROLE. Вам автоматически загрузится JSON-файл с данными для авторизации аккаунта. Сохраните этот файл — в будущем он понадобится для того, чтобы авторизоваться на Google-сервисах.

Пример файла

Теперь возвращаемся на вкладку Credentials нашего проекта и видим внизу список Service account keys. Справа кнопка Manage service accounts — нажимаем на нее и видим:

image

image

Вставляем id аккаунта в поле Email, добавляем наше прилождение и ставим галочку напротив View financial reports.

Нажимаем Send Invitation. Теперь мы можем использовать наш JSON-файл для авторизации и Google API и доступа к данным покупок и подписок нашего приложения.

Следующий шаг — нужно активировать Google Play Developer API для нашего проекта. Идем в Google Developer Console → Library и ищем Google Play Developer API. Открываем его и нажимаем Enable.


Последний шаг настройки — идем в Google Play Developer Console → Settings → API Access.


В списке находим наш проект (на картинке выше это Google Play Android Developer, но там должно быть имя вашего проекта) и нажимаем Link.


Теперь перейдем к разработке серверной части

Как вы будете хранить JSON-файл с приватными данными IAM-аккаунта оставим на ваше усмотрение. Импортируйте Google Play Developer API в ваш проект (mavencentral) и реализуем проверку.


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

В качестве параметров запроса нам нужны:

  • packageName — имя пакета приложения (com.example.myapp)
  • productId — идентификатор продукта (com.example.myapp_testing_inapp1)
  • token — уникальный токен покупки, который вы получили в мобльном приложении:

Вместо заключения

Сначала казавшаяся простой задача по интеграции биллинга в наш сервис превратилась в путешествие через документацию, гуглинг и бессилие (OAuth, ты прекрасен), так как про использование IAM для целей доступа в документации ни слова. Серьезно, они предлагают вбить руками какой-то руками состряпанный URL в вашем браузере, добавить origin для редиректа в консоли управления проектом, и все это для того, чтобы получить одноразовый токен, который надо руками передать на сервер, после чего использовать весь флоу OAuth для получения доступа к данным биллинга. Это не говоря о том, что если вы не успеете использовать refresh-token, то вам придется получать новый токен — руками. Согласитесь — это звучит как полный бред для backend-сервиса, который должен работать без вмешательства человека.

Я надеюсь, что этой статьей помогу кому-то сэкономить немного времени и нервов.

Читайте также: