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


Собственные объявления

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

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

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

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

Примечание.

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

Необходимые компоненты

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

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

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

    Примечание.

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

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

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

    1. В окне Обозреватель решений щелкните правой кнопкой мыши ссылки и выберите "Добавить ссылку...
    2. В диспетчере ссылок разверните универсальные окна, щелкните расширения и установите флажок рядом с пакетом SDK Microsoft Advertising для 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. Просмотрите отчеты о производительности рекламы в Центре партнеров.

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

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

Внимание

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