Поделиться через


Нативная реклама

Предупреждение

С 1 июня 2020 года платформа монетизации рекламы Microsoft для приложения Windows UWP будет закрыта. Подробнее

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

Для рекламодателей собственные объявления обеспечивают высокопроизводительные размещения, так как рекламный интерфейс тесно интегрирован в приложение и пользователи, поэтому, как правило, взаимодействуют с этими типами объявлений.

Замечание

В настоящее время собственные объявления поддерживаются только для приложений UWP на основе XAML для Windows 10 и Windows 11. Поддержка приложений UWP, написанных с помощью HTML и JavaScript, планируется в будущем выпуске пакета SDK Microsoft Advertising.

Предпосылки

  • Установите пакет Microsoft Advertising SDK с помощью Visual Studio 2015 или более поздней версии Visual Studio. См. инструкции по установке в этой статье.

Интеграция собственного объявления в приложение

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

  1. В Visual Studio откройте проект или создайте новый проект.

    Замечание

    Если вы используете существующий проект, откройте файл Package.appxmanifest в проекте и убедитесь, что выбрана функция Интернет (Клиент). Вашему приложению нужна эта возможность для получения тестовой рекламы и живой рекламы.

  2. Если ваш проект нацелен на Any CPU, обновите его, чтобы использовать результаты сборки, соответствующие определённой архитектуре (например, x86). Если ваш проект нацелен на Any CPU, вы не сможете успешно добавить ссылку на Microsoft Advertising SDK на следующих шагах. Дополнительные сведения см. в разделе Ошибки справочника, вызванные целевым использованием параметра Any CPU в вашем проекте.

  3. Добавьте ссылку на пакет SDK Microsoft Advertising в проекте:

    1. В окне Обозреватель решений щелкните правой кнопкой мыши на элементе Referencesи выберите Добавить ссылку…
    2. В Reference Managerразверните Universal Windows, щелкните Extensions, а затем установите флажок рядом с Microsoft Advertising SDK для XAML (версия 10.0).
    3. В диспетчере ссылокнажмите кнопку "ОК".
  4. В соответствующем файле кода в приложении (например, в MainPage.xaml.cs или файле кода для другой страницы) добавьте следующие ссылки на пространство имен.

    using Microsoft.Advertising.WinRT.UI;
    using Windows.UI.Xaml.Media.Imaging;
    
  5. В соответствующем расположении в приложении (например, на MainPage другой странице) объявите объект NativeAdsManagerV2 и несколько строковых полей, представляющих идентификатор приложения и идентификатор рекламного блока для собственного объявления. Следующий пример кода назначает поля myAppId и myAdUnitId тестовым значениям и для нативных объявлений.

    Замечание

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

    NativeAdsManagerV2 myNativeAdsManager = null;
    string myAppId = "d25517cb-12d4-4699-8bdc-52040c712cab";
    string myAdUnitId = "test";
    
  6. В коде, который выполняется при запуске (например, в конструкторе страницы), создайте экземпляр объекта NativeAdsManagerV2 и свяжите обработчики событий для событий AdReady и ErrorOccurred объекта.

    myNativeAdsManager = new NativeAdsManagerV2(myAppId, myAdUnitId);
    myNativeAdsManager.AdReady += MyNativeAd_AdReady;
    myNativeAdsManager.ErrorOccurred += MyNativeAdsManager_ErrorOccurred;
    
  7. Когда вы будете готовы показать нативную рекламу, вызовите метод RequestAd, чтобы загрузить объявление.

    myNativeAdsManager.RequestAd();
    
  8. Когда собственное объявление готово для вашего приложения, вызывается обработчик события AdReady, а объект NativeAdV2, который представляет это объявление, передается в параметр e. Используйте свойства NativeAdV2 , чтобы получить каждый элемент собственного объявления и отобразить эти элементы на странице. Не забудьте также вызвать метод RegisterAdContainer , чтобы зарегистрировать элемент пользовательского интерфейса, который выступает в качестве контейнера для собственного объявления; Это необходимо для правильного отслеживания впечатлений и щелчков объявлений.

    Замечание

    Некоторые элементы собственного объявления являются обязательными и всегда должны отображаться в приложении. Дополнительные сведения см. в наших рекомендациях для нативной рекламы.

    Например, предположим, что ваше приложение содержит страницу MainPage (или другую) со следующим элементом StackPanel. Этот StackPanel содержит ряд элементов управления, отображающих различные элементы собственного объявления, включая заголовок, описание, изображения, текст 'Спонсорство' и кнопку, которая будет показывать текст с призывом к действию.

    <StackPanel x:Name="NativeAdContainer" Background="#555555" Width="Auto" Height="Auto"
                Orientation="Vertical">
        <Image x:Name="AdIconImage" HorizontalAlignment="Left" VerticalAlignment="Center"
               Margin="20,20,20,20"/>
        <TextBlock x:Name="TitleTextBlock" HorizontalAlignment="Left" VerticalAlignment="Center"
               Text="The ad title will go here" FontSize="24" Foreground="White" Margin="20,0,0,10"/>
        <TextBlock x:Name="DescriptionTextBlock" HorizontalAlignment="Left" VerticalAlignment="Center"
                   Foreground="White" TextWrapping="Wrap" Text="The ad description will go here"
                   Margin="20,0,0,0" Visibility="Collapsed"/>
        <Image x:Name="MainImageImage" HorizontalAlignment="Left"
               VerticalAlignment="Center" Margin="20,20,20,20" Visibility="Collapsed"/>
        <Button x:Name="CallToActionButton" Background="Gray" Foreground="White"
                HorizontalAlignment="Left" VerticalAlignment="Center" Width="Auto" Height="Auto"
                Content="The call to action text will go here" Margin="20,20,20,20"
                Visibility="Collapsed"/>
        <StackPanel x:Name="SponsoredByStackPanel" Orientation="Horizontal" Margin="20,20,20,20">
            <TextBlock x:Name="SponsoredByTextBlock" Text="The ad sponsored by text will go here"
                       FontSize="24" Foreground="White" Margin="20,0,0,0" HorizontalAlignment="Left"
                       VerticalAlignment="Center" Visibility="Collapsed"/>
            <Image x:Name="IconImageImage" Margin="40,20,20,20" HorizontalAlignment="Left"
                   VerticalAlignment="Center" Visibility="Collapsed"/>
        </StackPanel>
    </StackPanel>
    

    В следующем примере кода показан обработчик событий AdReady , который отображает каждый элемент собственного объявления в элементах управления в StackPanel , а затем вызывает метод RegisterAdContainer для регистрации StackPanel. Этот код предполагает, что его запуск происходит из файла кода страницы, содержащей StackPanel.

    void MyNativeAd_AdReady(object sender, NativeAdReadyEventArgs e)
    {
        NativeAdV2 nativeAd = e.NativeAd;
    
        // Show the ad icon.
        if (nativeAd.AdIcon != null)
        {
            AdIconImage.Source = nativeAd.AdIcon.Source;
    
            // Adjust the Image control to the height and width of the 
            // provided ad icon.
            AdIconImage.Height = nativeAd.AdIcon.Height;
            AdIconImage.Width = nativeAd.AdIcon.Width;
        }
    
        // Show the ad title.
        TitleTextBlock.Text = nativeAd.Title;
    
        // Show the ad description.
        if (!string.IsNullOrEmpty(nativeAd.Description))
        {
            DescriptionTextBlock.Text = nativeAd.Description;
            DescriptionTextBlock.Visibility = Visibility.Visible;
        }
    
        // Display the first main image for the ad. Note that the service
        // might provide multiple main images. 
        if (nativeAd.MainImages.Count > 0)
        {
            NativeImage mainImage = nativeAd.MainImages[0];
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.UriSource = new Uri(mainImage.Url);
            MainImageImage.Source = bitmapImage;
    
            // Adjust the Image control to the height and width of the 
            // main image.
            MainImageImage.Height = mainImage.Height;
            MainImageImage.Width = mainImage.Width;
            MainImageImage.Visibility = Visibility.Visible;
        }
    
        // Add the call to action string to the button.
        if (!string.IsNullOrEmpty(nativeAd.CallToActionText))
        {
            CallToActionButton.Content = nativeAd.CallToActionText;
            CallToActionButton.Visibility = Visibility.Visible;
        }
    
        // Show the ad sponsored by value.
        if (!string.IsNullOrEmpty(nativeAd.SponsoredBy))
        {
            SponsoredByTextBlock.Text = nativeAd.SponsoredBy;
            SponsoredByTextBlock.Visibility = Visibility.Visible;
        }
    
        // Show the icon image for the ad.
        if (nativeAd.IconImage != null)
        {
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.UriSource = new Uri(nativeAd.IconImage.Url);
            IconImageImage.Source = bitmapImage;
    
            // Adjust the Image control to the height and width of the 
            // icon image.
            IconImageImage.Height = nativeAd.IconImage.Height;
            IconImageImage.Width = nativeAd.IconImage.Width;
            IconImageImage.Visibility = Visibility.Visible;
        }
    
        // Register the container of the controls that display
        // the native ad elements for clicks/impressions.
        nativeAd.RegisterAdContainer(NativeAdContainer);
    }
    
  9. Определите обработчик событий для события ErrorOccurred для обработки ошибок, связанных с собственным объявлением. В следующем примере записывается информация об ошибке в окно вывода Visual Studio во время тестирования.

    private void MyNativeAdsManager_ErrorOccurred(object sender, NativeAdErrorEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("NativeAd error " + e.ErrorMessage +
            " ErrorCode: " + e.ErrorCode.ToString());
    }
    
  10. Скомпилируйте и запустите приложение, чтобы увидеть его с помощью тестового объявления.

Выпуск приложения с помощью динамических объявлений

Убедившись, что собственная реализация рекламы успешно отображает тестовую рекламу, выполните следующие инструкции, чтобы настроить приложение для отображения реальных объявлений и отправки обновленного приложения в Магазин.

  1. Убедитесь, что ваша реализация нативной рекламы соответствует нашим рекомендациям для нативных объявлений.

  2. В Центре партнеров перейдите на страницу рекламы для приложений и создайтерекламный блок. Для типа рекламного блока укажите Native. Запишите идентификатор рекламного блока и идентификатор приложения.

    Замечание

    Значения идентификатора приложения для тестовых рекламных единиц и динамических рекламных единиц UWP имеют разные форматы. Тестовые значения идентификаторов приложения — это GUID. При создании динамического рекламного блока UWP в Центре партнеров значение идентификатора приложения для рекламного блока всегда совпадает с идентификатором Магазина для вашего приложения (например, значение идентификатора магазина выглядит как 9NBLGGH4R315).

  3. Вы можете при необходимости включить медиатор рекламы для нативного объявления, настроив параметры в разделе настройки медиатора на странице встроенной рекламы. Рекламный посредник позволяет максимизировать доход от рекламы и возможности продвижения приложений, отображая рекламу из нескольких рекламных сетей.

  4. В коде замените тестовые значения единиц рекламы (т. е. параметры applicationId и adUnitId конструктора NativeAdsManagerV2 ) динамическими значениями, созданными в Центре партнеров.

  5. Отправьте ваше приложение в магазин, используя Центр партнеров.

  6. Просмотрите отчёты о результатах рекламы в Партнёрском центре.

Управление рекламными блоками для нескольких нативных объявлений в приложении

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

Это важно

Каждый рекламный блок можно использовать только в одном приложении. Если вы используете рекламный блок в нескольких приложениях, объявления для этого рекламного блока не будут показываться.