2016-12-20 27 views
3

Я просто хочу узнать о рекламных баннерах, поддерживаемых Xamarin.Forms без каких-либо патчей или лазейки. Есть ли какой-либо поставщик рекламы, который предоставляет свои SDK с помощью Xamarin.Forms?Баннерная реклама с Xamarin.Forms

Заранее спасибо.

ответ

1

Есть и SDK, и пошаговые примеры для Google AdMob для Xamarin.Android. Вам понадобится nuget Xamarin.GooglePlaySerives.Ads.

Я использую его для показа объявлений в своем приложении Xamarin.Forms, опубликованном в Google Play.

Вот пример кода для андроид части вашего приложения:

using System; 

using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using Android.Support.V7.App; 
using Android.Gms.Ads; 
using Android; 

namespace AdMobExample 
{ 
    [Activity (Label = "@string/app_name", MainLauncher = true)] 
    public class MainActivity : AppCompatActivity 
    { 
     protected AdView mAdView; 
     protected InterstitialAd mInterstitialAd; 
     protected Button mLoadInterstitialButton; 

     protected override void OnCreate (Bundle savedInstanceState) 
     { 
      base.OnCreate (savedInstanceState); 
      SetContentView (Resource.Layout.activity_main); 

      mAdView = FindViewById<AdView> (Resource.Id.adView); 
      var adRequest = new AdRequest.Builder().Build(); 
      mAdView.LoadAd (adRequest); 

      mInterstitialAd = new InterstitialAd (this); 
      mInterstitialAd.AdUnitId = GetString (Resource.String.test_interstitial_ad_unit_id); 

      mInterstitialAd.AdListener = new AdListener (this); 

      mLoadInterstitialButton = FindViewById<Button> (Resource.Id.load_interstitial_button); 
      mLoadInterstitialButton.SetOnClickListener (new OnClickListener (this)); 
     } 

     protected void RequestNewInterstitial() 
     { 
      var adRequest = new AdRequest.Builder().Build(); 
      mInterstitialAd.LoadAd (adRequest); 
     } 

     protected void BeginSecondActivity() 
     { 
      var intent = new Intent (this, typeof(SecondActivity)); 
      StartActivity (intent); 
     } 

     protected override void OnPause() 
     { 
      if (mAdView != null) { 
       mAdView.Pause(); 
      } 
      base.OnPause(); 
     } 

     protected override void OnResume() 
     { 
      base.OnResume(); 
      if (mAdView != null) { 
       mAdView.Resume(); 
      } 
      if (!mInterstitialAd.IsLoaded) { 
       RequestNewInterstitial(); 
      } 
     } 

     protected override void OnDestroy() 
     { 
      if (mAdView != null) { 
       mAdView.Destroy(); 
      } 
      base.OnDestroy(); 
     } 

     class AdListener : Android.Gms.Ads.AdListener 
     { 
      MainActivity that; 

      public AdListener (MainActivity t) 
      { 
       that = t; 
      } 

      public override void OnAdClosed() 
      { 
       that.RequestNewInterstitial(); 
       that.BeginSecondActivity(); 
      } 
     } 

     class OnClickListener : Java.Lang.Object, View.IOnClickListener 
     { 
      MainActivity that; 

      public OnClickListener (MainActivity t) 
      { 
       that = t; 
      } 

      public void OnClick (View v) 
      { 
       if (that.mInterstitialAd.IsLoaded) { 
        that.mInterstitialAd.Show(); 
       } else { 
        that.BeginSecondActivity(); 
       } 
      } 
     } 
    } 
} 

Существует также руководство STE-шагом для AdMob объявления для Xamarin.iOS:

using Google.MobileAds; 
... 

const string intersitialId = "<Get your ID at google.com/ads/admob>"; 

Interstitial adInterstitial; 

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    CreateAndRequestInterstitial(); 
} 

public void AfterSomeTime() 
{ 
    if (adInterstitial.IsReady) 
     adInterstitial.PresentFromRootViewController (navController); 
} 

void CreateAndRequestInterstitial() 
{ 
    adInterstitial = new Interstitial (intersitialId); 
    adInterstitial.ScreenDismissed += (sender, e) => { 
     // Interstitial is a one time use object. That means once an interstitial is shown, HasBeenUsed 
     // returns true and the interstitial can't be used to load another ad. 
     // To request another interstitial, you'll need to create a new Interstitial object. 
     adInterstitial.Dispose(); 
     adInterstitial = null; 
     CreateAndRequestInterstitial(); 
    }; 

    var request = Request.GetDefaultRequest(); 
    // Requests test ads on devices you specify. Your test device ID is printed to the console when 
    // an ad request is made. GADBannerView automatically returns test ads when running on a 
    // simulator. After you get your device ID, add it here 
    request.TestDevices = new [] { Request.SimulatorId.ToString() }; 

    adInterstitial.LoadRequest (request); 
} 
+0

Будет ли показывать объявления на всех страницах или ссылается только на MainActivity? –

+0

@ChandreshKhambhayata Вам нужно пройти код самостоятельно. Это пример кода, и это очень просто. Он не подходит для склеивания закрытых копий. –

+0

Были ли у вас проблемы при изменении ориентации экрана? В настоящее время на iOS, в любое время, когда устройство перевернулось с портрета на пейзаж или назад, объявление исчезает, я предполагаю, что оно уходит с экрана или размер перепутался или что-то еще, но я не могу понять это. Попытка использовать Smart Banners, кстати. – hvaughan3