Bagikan melalui


Panduan pemecahan masalah XAML dan C#

Peringatan

Mulai 1 Juni 2020, platform Monetisasi Microsoft Ad untuk aplikasi Windows UWP akan dimatikan. Pelajari lebih lanjut

Topik ini berisi solusi untuk masalah pengembangan umum dengan pustaka iklan Microsoft di aplikasi XAML.

XAML

AdControl tidak muncul

  1. Pastikan bahwa kemampuan Internet (Klien) dipilih di Package.appxmanifest.

  2. Periksa ID aplikasi dan ID unit iklan. ID ini harus cocok dengan ID aplikasi dan ID unit iklan yang Anda peroleh di Pusat Mitra. Untuk informasi selengkapnya, lihat Menyiapkan unit iklan di aplikasi Anda.

    <UI:AdControl AdUnitId="{AdUnitID}" ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  3. Periksa properti Tinggi dan Lebar. Ini harus diatur ke salah satu ukuran iklan yang didukung untuk iklan banner.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90" />
    
  4. Periksa posisi elemen. AdControl harus berada di dalam area yang dapat dilihat.

  5. Periksa properti Visibilitas. Properti Visibilitas opsional tidak boleh diatur ke diciutkan atau disembunyikan. Properti ini dapat diatur sebaris (seperti yang ditunjukkan di bawah) atau dalam lembar gaya eksternal.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Visibility="Visible"
                  Width="728" Height="90" />
    
  6. Periksa induk AdControl. Jika elemen AdControl berada di elemen induk, induk harus aktif dan terlihat.

    <StackPanel>
        <UI:AdControl AdUnitId="{AdUnitID}"
                      ApplicationId="{ApplicationID}"
                      Width="728" Height="90" />
    </StackPanel>
    
  7. Pastikan AdControl tidak tersembunyi dari viewport. AdControl harus terlihat agar iklan ditampilkan dengan benar.

  8. Nilai langsung untuk ApplicationId dan AdUnitId tidak boleh diuji di emulator. Untuk memastikan AdControl berfungsi seperti yang diharapkan, gunakan nilai pengujian untuk ApplicationId dan AdUnitId.

  1. Periksa kembali semua langkah di bagian AdControl sebelumnya yang tidak muncul .

  2. Tangani peristiwa ErrorOccurred, dan gunakan pesan yang diteruskan ke penanganan aktivitas untuk menentukan apakah kesalahan terjadi dan jenis kesalahan apa yang dilemparkan. Lihat Penanganan kesalahan di panduan XAML/C# untuk informasi selengkapnya.

    Contoh ini menunjukkan penanganan aktivitas ErrorOccurred . Cuplikan pertama adalah markup UI XAML.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  ErrorOccurred="adControl_ErrorOccurred" />
    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    Contoh ini menunjukkan kode C# yang sesuai.

    private void adControl_ErrorOccurred(object sender,               
        Microsoft.Advertising.WinRT.UI.AdErrorEventArgs e)
    {
        TextBlock1.Text = e.ErrorMessage;
    }
    

    Kesalahan paling umum yang menyebabkan kotak hitam adalah "Tidak ada iklan yang tersedia." Kesalahan ini berarti tidak ada iklan yang tersedia untuk dikembalikan dari permintaan.

  3. AdControl berulah secara normal.

    Secara default, AdControl akan diciutkan saat tidak dapat menampilkan iklan. Jika elemen lain adalah turunan dari induk yang sama, mereka dapat bergerak untuk mengisi celah AdControl yang diciutkan dan diperluas saat permintaan berikutnya dibuat.

Iklan tidak di-refresh

  1. Periksa properti IsAutoRefreshEnabled. Secara default, properti opsional ini diatur ke True. Saat diatur ke False, metode Refresh harus digunakan untuk mengambil iklan lain.

    <UI:AdControl AdUnitId="{AdUnitID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="True" />
    
  2. Periksa panggilan ke metode Refresh . Saat menggunakan refresh otomatis, Refresh tidak dapat digunakan untuk mengambil iklan lain. Saat menggunakan refresh manual, Refresh harus dipanggil hanya setelah minimal 30 hingga 60 detik tergantung pada koneksi data perangkat saat ini.

    Cuplikan kode berikut menunjukkan contoh cara menggunakan metode Refresh . Cuplikan pertama adalah markup UI XAML.

    <UI:AdControl x:Name="adControl1"
                  AdUnitId="{AdUnit_ID}"
                  ApplicationId="{ApplicationID}"
                  Width="728" Height="90"
                  IsAutoRefreshEnabled="False" />
    

    Cuplikan kode ini menunjukkan contoh kode C# di belakang markup UI.

    public RefreshAds()
    {
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => adControl1.Refresh();
        timer.Start();
    }
    
  3. AdControl berulah secara normal. Terkadang iklan yang sama akan muncul lebih dari sekali berturut-turut yang memberikan tampilan bahwa iklan tidak di-refresh.

C#

AdControl tidak muncul

  1. Pastikan bahwa kemampuan Internet (Klien) dipilih di Package.appxmanifest.

  2. Pastikan AdControl dibuat instans. Jika AdControl tidak dibuat, adControl tidak akan tersedia.

    using Microsoft.Advertising.WinRT.UI;
    
    namespace AdControlExample
    {
        public sealed partial class MainPage : Page
        {
            AdControl myAdControl;
            
            public MainPage()
            {
                this.InitializeComponent();
                
                myAdControl = new AdControl()
                {
                    ApplicationId = "{ApplicationID}",
                    AdUnitId = "{AdUnitID}",
                    Height = 90,
                    Width = 728
                };
            }
        }
    }
    
  3. Periksa ID aplikasi dan ID unit iklan. ID ini harus cocok dengan ID aplikasi dan ID unit iklan yang Anda peroleh di Pusat Mitra. Untuk informasi selengkapnya, lihat Menyiapkan unit iklan di aplikasi Anda.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    
  4. Periksa parameter Tinggi dan Lebar. Ini harus diatur ke salah satu ukuran iklan yang didukung untuk iklan banner.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;adControl.Width = 728;
    
  5. Pastikan AdControl ditambahkan ke elemen induk. Untuk menampilkan, AdControl harus ditambahkan sebagai anak ke kontrol induk (misalnya, StackPanel atau Grid).

    ContentPanel.Children.Add(adControl);
    
  6. Periksa parameter Margin. AdControl harus berada di dalam area yang dapat dilihat.

  7. Periksa properti Visibilitas. Properti Visibilitas opsional harus diatur ke Terlihat.

    adControl = new AdControl();
    adControl.ApplicationId = "{ApplicationID}";
    adControl.AdUnitId = "{AdUnitID}";
    adControl.Height = 90;
    adControl.Width = 728;
    adControl.Visibility = System.Windows.Visibility.Visible;
    
  8. Periksa induk AdControl. Induk harus aktif dan terlihat.

  9. Nilai langsung untuk ApplicationId dan AdUnitId tidak boleh diuji di emulator. Untuk memastikan AdControl berfungsi seperti yang diharapkan, gunakan nilai pengujian untuk ApplicationId dan AdUnitId.

  1. Periksa kembali semua langkah di bagian AdControl yang tidak muncul di atas.

  2. Tangani peristiwa ErrorOccurred, dan gunakan pesan yang diteruskan ke penanganan aktivitas untuk menentukan apakah kesalahan terjadi dan jenis kesalahan apa yang dilemparkan. Lihat Penanganan kesalahan di panduan XAML/C# untuk informasi selengkapnya.

    Contoh berikut menunjukkan kode dasar yang diperlukan untuk menerapkan panggilan kesalahan. Kode XAML ini mendefinisikan TextBlock yang digunakan untuk menampilkan pesan kesalahan.

    <TextBlock x:Name="TextBlock1" TextWrapping="Wrap" Width="500" Height="250" />
    

    Kode C# ini mengambil pesan kesalahan dan menampilkannya di TextBlock.

    using Microsoft.Advertising.WinRT.UI;
    
    namespace AdControlExample
    {
        public partial class MainPage : Page
        {
            AdControl myAdControl;
            
            public MainPage()
            {
                this.InitializeComponent();
                
                myAdControl = new AdControl();
                myAdControl.ApplicationId = "{ApplicationID}";
                myAdControl.AdUnitId = "{AdUnitID}";
                myAdControl.Height = 90;
                myAdControl.Width = 728;
                
                myAdControl.ErrorOccurred += (s,e) =>
                {
                    TextBlock1.Text = e.Error.Message;
                };
            }
        }
    }
    

    Kesalahan paling umum yang menyebabkan kotak hitam adalah "Tidak ada iklan yang tersedia." Kesalahan ini berarti tidak ada iklan yang tersedia untuk dikembalikan dari permintaan.

  3. AdControl berulah secara normal. Terkadang iklan yang sama akan muncul lebih dari sekali berturut-turut yang memberikan tampilan bahwa iklan tidak di-refresh.

Iklan tidak di-refresh

  1. Periksa apakah properti IsAutoRefreshEnabled adControl Anda diatur ke false. Secara default, properti opsional ini diatur ke true. Saat diatur ke false, metode Refresh harus digunakan untuk mengambil iklan lain.

  2. Periksa panggilan ke metode Refresh . Saat menggunakan refresh otomatis (IsAutoRefreshEnabled adalah true), Refresh tidak dapat digunakan untuk mengambil iklan lain. Saat menggunakan refresh manual (IsAutoRefreshEnabled salah), Refresh harus dipanggil hanya setelah minimal 30 hingga 60 detik tergantung pada koneksi data perangkat saat ini.

    Contoh berikut menunjukkan cara memanggil metode Refresh .

    AdControl myAdControl;
    
    public MainPage()
    {
        InitializeComponent();
    
        myAdControl = new AdControl();
        myAdControl.ApplicationId = "{ApplicationID}";
        myAdControl.AdUnitId = "{AdUnitID}";
        myAdControl.Height = 90;
        myAdControl.Width = 728;
        myAdControl.IsAutoRefreshEnabled = false;
    
        ContentPanel.Children.Add(myAdControl);
    
        var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(60) };
        timer.Tick += (s, e) => myAdControl.Refresh();
        timer.Start();
    }
    
  3. AdControl berulah secara normal. Terkadang iklan yang sama akan muncul lebih dari sekali berturut-turut yang memberikan tampilan bahwa iklan tidak di-refresh.