В последние время я занимался экспериментальной интеграцией рекламного контента в приложения, над которыми сейчас работаю. В первую очередь мне хотелось не заработать денег, а просто настроить всё должным образом и заставить правильно работать. Я испытывал две рекламные сети — Facebook Ads и Google AdMob применительно к моему приложение для iOS под названием Social Post, и полученные результаты меня полностью удовлетворили. Я обсуждал данную тему с Франком несколько недель назад на подкасте Merge Conflict, посвященном монетизации.
Сейчас пришло время пойти дальше и включить определенную рекламу в моё приложение Xamarin.Forms под названием Meetup Manager, которое в последнее время активно используется. Мне в любом случае следовало обновить приложение ввиду нововведений Android N, касающихся SQLite, поэтому я решил, что сейчас самое время для внедрения в приложение также и рекламы. И я был приятно удивлен тем, насколько легко это можно сделать.
Регистрация AdMob
Итак, в первую очередь необходимо зарегистрировать AdMob. В результате Вы получите две важные части информации: Application Code и Ad Unit Id. Нам они понадобятся позднее, но сейчас просто перейдите по ссылке, зарегистрируйте новое приложение, сделайте ссылку на какое-либо приложение в Firebase, и начало работе будет положено.
Загрузка пакета NuGet
Следующий шаг немного сложнее предыдущего, поскольку для Xamarin.Forms необходимы специальные версии пакетов. Наберите в поиске Google Play Ads, и первыми в списки должны показаться пакеты Xamarin. Если используются Xamarin.Forms.Maps, тогда необходимо выбрать версию 29.0.0.1, а во всех других случаях — 29.0.0.2.
Пользовательский элемент управления
В мое приложение я не включил какие-либо привязки пользовательских данных или что-нибудь подобное для Ad Ids, поэтому я просто создаю элементарный пользовательский элемент управления в общем коде:
1 2 3 4 5 6 7 8 | using Xamarin.Forms; namespace MeetupManager.Controls { public class AdView : View { } } |
Рендерер рекламных View
Далее, необходимо перейти в наш Android-проект и реализовать пользовательский элемент управления. Фактически просто метод для создания нативного AdView и последующей установки его при загрузке страницы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | using Android.Widget; using Android.Gms.Ads; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; [assembly: ExportRenderer(typeof(MeetupManager.Controls.AdView), typeof(MeetupManager.Droid.PlatformSpecific.AdViewRenderer))] namespace MeetupManager.Droid.PlatformSpecific { public class AdViewRenderer : ViewRenderer<Controls.AdView, AdView> { string adUnitId = string.Empty; AdSize adSize = AdSize.SmartBanner; AdView adView; AdView CreateNativeControl() { if (adView != null) return adView; adUnitId = Forms.Context.Resources.GetString(Resource.String.banner_ad_unit_id); adView = new AdView(Forms.Context); adView.AdSize = adSize; adView.AdUnitId = adUnitId; var adParams = new LinearLayout.LayoutParams(LayoutParams.WrapContent, LayoutParams.WrapContent); adView.LayoutParameters = adParams; adView.LoadAd(new AdRequest .Builder() .Build()); return adView; } protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if(Control == null) { CreateNativeControl(); SetNativeControl(adView); } } } } |
Обновление MainActivity
Перейдите в MainActivity и инициализируйте MobileAds из SDK:
1 | MobileAds.Initialize(ApplicationContext, "YOUR APP ID HERE FROM AdMob"); |
Обновление XAML
Сейчас можно добавить пользовательский элемент управления в нижнюю часть XAML.
Сначала добавим в пользовательский xmlns пространства имен:
1 | xmlns:controls="clr-namespace:MeetupManager.Controls;assembly=MeetupManager" |
После этого добавим в пользовательский элемент управления — и готово!
1 2 3 4 5 6 7 8 | <Grid RowSpacing="0"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <ListView Grid.Row="0"/> <controls:AdView Grid.Row="1"/> </Grid> |
Успех!
Сейчас можно запустить приложение — и сюрприз! Тестовое рекламное объявление!
Здесь, конечно, появился обычный «умный баннер», но его можно усовершенствовать или попробовать другие рекламные вещи при помощи пользовательских рендереров. Удачи!
Автор: James Montemagno
Источник: Статья в блоге автора
Написать ответ