Много раз уже просили написать статью о том, как в приложении реализовать платное отключение рекламы. Вообще, реализовать рекламу легко, по In-app так же есть куча информации в официальной документации. Ну, если кому-то всё же статья пригодится, то хорошо.
In-App Purchase представляет собой сервис покупки виртуальных товаров внутри приложения (например игровой валюты, новых уровней и т.д.). Применяется он в основном в играх, в тех случаях, когда встает вопрос о необходимости заработка на своем творении.
В данной статье рассмотрю как можно использовать In-App Purchase для отключения рекламы в своём приложении.
Реклама в приложении
В принципе, можно взять любую площадку. Возьмём, к примеру AdMob. Я для удобства обычно подобные вещи в обёртки запихиваю, чтобы при смене площадки, если потребуется, почти ничего не пришлось менять. Обёртки для рекламной площадки должны реализовывать интерфейс:
public interface AdsControllerBase
Тогда обёртка для AdMob будет выглядеть примерно так:
How to enable or disable automatic in App purchase in Android | stop kids from purchasing apps
Тогда инициализация рекламы будет такой:
AdsControllerBase ads = new AdMobController(this, layout);
При такой реализации в случае смены площадки, мы просто создадим инстанс другого класса. Для работы вам нужен лишь ID_приложения. который получите после создания в приложения в админке Admob.
In-app purchasing или внутренние платежи в приложениях
Для того, чтобы работать с системой покупок необходим файл IMarketBillingService.aidl. Лежит он в /user/android-sdk-linux/extras/google/play_billing директории с SDK. Положить файлик надо в com.android.vending.billing пакет вашего приложения.
О типах покупок можно почитать тут. Нас интересую восстанавливаемые покупки, то есть те, что привязываются к аккаунту и повторно их уже не купить. Если вы удалите приложение и постановите заново, то покупка будет восстановлена. В нашем случае, после покупки отключения рекламы, реклама больше не будет беспокоить пользователя. Это касается и других устройств: если пользователь залогиниться на другом устройство под своим аккаунтом, то в приложение будет восстановлена покупка и реклама будет отключена.
Очень помогает официальная документация и пример из SDK.
Необходимо определить ключик в приложении — PublicKey, полученный при регистрации аккаунта на Android Market
Определяем IabHelper и инициализируем. Если удачно, то пытаемся восстановить покупки.
// id вашей покупки из админки в Google Play static final String SKU_ADS_DISABLE = «com.ads.disable»; IabHelper mHelper; private void billingInit() < mHelper = new IabHelper(this, BASE64_PUBLIC_KEY); // включаем дебагинг (в релизной версии ОБЯЗАТЕЛЬНО выставьте в false) mHelper.enableDebugLogging(true); // инициализируем; запрос асинхронен // будет вызван, когда инициализация завершится mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() < public void onIabSetupFinished(IabResult result) < if (!result.isSuccess()) < return; >// чекаем уже купленное mHelper. queryInventoryAsync(mGotInventoryListener); > >); >
mGotInventoryListener — слушатель для восстановления покупок.
Samsung In-App Purchase Webinar
// Слушатель для востановителя покупок. IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() < private static final String TAG = «QueryInventoryFinishedListener»; public void onQueryInventoryFinished(IabResult result, Inventory inventory) < LOG.d(TAG, «Query inventory finished.»); if (result.isFailure()) < LOG.d(TAG, «Failed to query inventory: » + result); return; >LOG.d(TAG, «Query inventory was successful.»); /* * Проверяются покупки. * Обратите внимание, что надо проверить каждую покупку, чтобы убедиться, что всё норм! * см. verifyDeveloperPayload(). */ Purchase purchase = inventory.getPurchase(SKU_ADS_DISABLE); PreferencesHelper.savePurchase( context, PreferencesHelper.Purchase.DISABLE_ADS, purchase != null verifyDeveloperPayload(purchase)); ads.show(!PreferencesHelper.isAdsDisabled()); > >;
Теперь надо, собственно, саму покупку реализовать:
private void buy() < if(!PreferencesHelper.isAdsDisabled())< /* для безопасности сгенерьте payload для верификации. В данном примере просто пустая строка юзается. * Но в реальном приложение подходить к этому шагу с умом. */ String payload = «»; mHelper.launchPurchaseFlow(this, SKU_ADS_DISABLE, RC_REQUEST, mPurchaseFinishedListener, payload); >>
SKU_ADS_DISABLE — идентификатор товара, который вы создали в адмике Google Play. mPurchaseFinishedListener — слушатель:
// слушатель завершения покупки IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() < public void onIabPurchaseFinished(IabResult result, Purchase purchase) < if (result.isFailure()) < return; >if (!verifyDeveloperPayload(purchase)) < return; >if (purchase.getSku().equals(SKU_ADS_DISABLE)) < Toast.makeText(getApplicationContext(), «Purchase for disabling ads done.», Toast.LENGTH_SHORT); // сохраняем в настройках, что отключили рекламу PreferencesHelper.savePurchase( context, PreferencesHelper.Purchase.DISABLE_ADS, true); // отключаем рекламу ads.show(!PreferencesHelper.isAdsDisabled()); >> >;
Стоит отдельно поговорить о методе по верификации:
boolean verifyDeveloperPayload(Purchase p) < String payload = p.getDeveloperPayload(); /* * TODO: здесь необходимо свою верификацию реализовать * Хорошо бы ещё с использованием собственного стороннего сервера. */ return true; >
Сейчас нет никакой проверки покупок, но в реальном приложении вы должны сверять полученные данные с той сгенерированой строкой, что вы отправили в запросе на покупку. Проверять это надо на своём стороннем сервере. Для обычно приложения или офф-лайн игры это может и не критично, но для он-лайн игры это очень важно.
В принципе всё, теперь при запуске приложения просиходит проверка настроек (куда мы сохранили, что отключили рекламу):
PreferencesHelper.loadSettings(this);
После чего реклама уже не будет показываться.
Тестирование покупок
Сейчас довольно удобно тестировать своё приложение. Можно залить .apk как альфа/бета версию и опубликовать. При этом можно назначить группу в Google+, которая будет иметь возможность к тестированию. Если вы публикуете альфа или бета версию приложения, то в маркете она не появится, иметь доступ будет только эта группа.
Тестеры смогут осуществлять покупки. Деньги будут списываться без комиссии и будут возвращены после 15 минут после покупки. Так что, не беспокойтесь. Вот только у вас не получится протестировать приложение, если ваш аккаунт на устройстве и аккаунт издателя один и тот же =/
Полностью рабочий пример можете форкнуть с гитхаба.
Источник: suvitruf.ru
Samsung In-App Purchase
Скачать Samsung In-App Purchase APK для Android — бесплатно — Последняя версия
Последняя версия
3 нояб. 2019 г.
Разработчик
Google Play ID
Количество установок
App APKs
Samsung In-App Purchase APK Compra no aplic. Samsung APK Compra en aplic. Samsung APK Mua hàng trong ứ.dụng Samsung APK การสั่งซื้อในแอพของ Samsung APK عملية الشراء من داخل التطبيقات من Samsung APK Samsung In-App Satın Alma APK Acquisti in-app Samsung APK 삼성 인앱결제 APK Galaxy In-App Purchase APK Samsung Kopen in app APK Zakupy wewn. apl. Samsung APK सैमसंग इन-एप खरीद APK Покупка от прил. на Samsung APK Samsung kup. unutar apl.
APK স্যামসাং ইন-অ্যাপ পারচেস APK Samsung Beépített bolt APK සැම්සුං අ.-යෙදුම් මි. ගැ. APK Samsung In-App ဝယ်ယူမှု APK Nákup v aplik. Samsung APK Nakup v aplikaciji Samsung APK Ceann. i bhF.chlár Samsung APK Samsung In-App خریداری APK സാംസങ്ങ് ഇൻ-ആപ്ലിക്കേഷൻ വാങ്ങൽ APK ಸ್ಯಾಮ್ಸಂಗ್ ಇನ್-ಅನ್ವಯಿಸುವಿಕೆ ಖರೀದಿ APK ସାମସଙ୍ଗ ଇନ-ଆପସ୍ କ୍ରୟ APK Samsung-pr. f. köp i pr. APK सॅमसंग इन-ऍप खरेदी APK Samsung kaup í forriti APK Samsung In-App ဝယ္ယူမႈ APK சாம்சங் இன்-ஆப் வாங்குதல் APK સેમસંગ ઇન-એપ ખરીદી APK Nákup z aplikace Samsung APK ਸੈਮਸੰਗ ਇਨ-ਐਪ ਖਰੀਦਦਾਰੀ APK స్యామ్సంగ్ ఇన్-అప్లికేషన్ కొనుగోలు APK চেমচাং ইন-এপ ক্ৰয় APK सैमसंग इन-एप खरिद APK خرید درون برنامه سامسونگ APK Køb for. via Samsung-app APK Achiz. Samsung din apl. APK
Samsung In-App Purchase APP
Популярные запросы
LD Player — #1 Android Emulator
Лучший Эмулятор Андроида для ПК
Приложения · Hot
Psiphon Pro Psiphon Inc. · Связь
TikTok TikTok Pte. Ltd. · Социальные
Psiphon Psiphon Inc. · Связь
Learn The Heart FDPStudio · Работа
自由浏览 Greatfire.org · Связь
Популярные
Google Play Маркет Google LLC · Инструменты
Google Account Manager Google · Инструменты
Сервисы Google Play Google LLC · Инструменты
TapTap (CN) Ewan Shanghai Network Technology co.,Ltd · Инструменты
Game Guardian 枫影(尹湘中) · Инструменты
TapTap Global TapTap · Инструменты
APK Editor SteelWorks · Инструменты
Aptoide TV Aptoide · Инструменты
Huawei AppGallery Huawei · Инструменты
SHAREit Smart Media4U Technology Pte.Ltd. · Инструменты
APKCombo Installer
Порядок установки XAPK, APKS, OBB?
Источник: apkcombo.com
In-App Purchase в Android приложениях
In-App Purchase, грубо говоря, представляет собой сервис покупки виртуальных товаров внутри приложения (например игровой валюты, новых уровней, игровых предметов и т.д.). Применяется он в основном в играх, в тех случаях, когда встает вопрос о необходимости заработка на своем творении, а распространять его платно не особо хочется (или нет смысла).
2. In-App Purchase в андроид-приложениях
Когда я столкнулся с необходимостью использования in-app purchase в разрабатываемой игре, было очень трудно найти подробную русскоязычную информацию о том, как прикрутить данный сервис к своей игре. Наиболее хорошо сервис был описан в одной из статей Хабра, но мне бы хотелось показать свое видение по данному вопросу. Поэтому решил сам написать небольшой мануал по подключению сервиса к приложению.
Для начала неплохо было бы разобраться с тем, как это все работает.
В принципе, весь процесс функционирования довольно неплохо был описан в статье, на которую я сослался выше, так что повторять заново то же самое нет особого смысла. Поэтому, я перейду сразу к делу.
Предполагается, что у вас уже есть аккаунт разработчика на Android Market.
Для того, чтобы работать с системой покупок внутри приложения нам понадобится файл с названием IMarketBillingService.aidl. Найти его можно в примере приложения по работе с in-app purchase, который в свою очередь является скачиваемым компонентом Android SDK. Запустите Android SDK and AVD Manager и выберете Available Packages. Далее необходимо будет выбрать Third party add-ons -> Google Inc. add-ons -> Google Market Billing package.
Теперь необходимо из скаченного примера скопировать в свой проект файл IMarketBillingService.aidl. Важно, чтобы он лежал в com.android.vending.billing. После этого в манифесте добавляем расширение: .
В примере приложения кроме вышеописанного файла есть также несколько реализованных классов для работы с системой платежей. Копируем их в свой проект. Что собой представляет каждый из них:
BillingReceiver – получает все асинхронные ответы с маркета и отправляет их далее в BillingService;
BillingService – отправляет запросы на маркет;
Consts – содержит все константы примера приложения;
Dungeons – обеспечивает UI и отображает историю совершенных покупок;
PurchaseDatabase – локальная база данных;
PurchaseObserver – наблюдение за изменениями, связанными с покупками;
ResponseHandler – обновление базы данных и UI;
Security – обеспечение безопасности;
Base64 и Base64DecoderException – кодирование из двоичной системы в base64. Необходимы для функционирования класса Security.
В классе Security ищем строку:
String base64EncodedPublicKey = “…”
и вписываем сюда свой PublicKey, полученный при регистрации аккаунта на Android Market.
В классе Dungeons ищем список товаров, которые предполагается продавать, и меняем их на свои. При этом, товары должны быть залиты в Android Market и опубликованы (само приложение при этом публиковать не обязательно – в случае его тестирования, однако надо не забыть добавить себя (или кого-то другого) в разработчики (делается в настройках профиля)). Далее дописываем интерфейс и в принципе приложение готово.
Однако стоит позаботиться о безопасности. Лучший способ обеспечения безопасности покупок – использование соответствующего сервиса на сервере. После того, как пользователь совершил покупку товара, маркет пришлет JSON строку с информацией о купленном товаре:
< «nonce» : 1836535032137741465,
«orders» :
< «notificationId» : «android.test.purchased»,
«orderId» : «transactionId.android.test.purchased»,
«packageName» : «com.example.dungeons»,
«productId» : «android.test.purchased»,
«developerPayload» : «bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ»,
«purchaseTime» : 1290114783411,
«purchaseState» : 0 >
>
и подпись для проверки подлинности запроса.
На серверной части приложения нужно выполнить проверку вернувшейся строки с помощью подписи и вашего ключа (шифрование RSA) и вернуть результат проверки клиенту. Для этого есть небольшая открытая библиотека, написанная на php, я использовал ее.
Более подробно о безопасности при работе с in-app purchase написано тут.
- Andriod
- in-app billing
- in-app purchases
Источник: habr.com