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

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

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

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

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

Примечание

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

Предварительные требования

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

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

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

    Примечание

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

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

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

    1. В Обозревателе решений щелкните правой кнопкой мыши элемент Ссылки и выберите Добавить ссылку....
    2. В Диспетчере ссылок разверните раздел Универсальная платформа Windows, нажмите Расширения и выберите флажок рядом с 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. В Центре партнеров перейдите на страницу объявлений в приложении и создайте рекламное подразделение. В качестве типа группы объявлений укажите Собственная. Запомните идентификатор группы объявлений и идентификатор приложения.

    Примечание

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

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

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

  5. Отправьте приложение в Магазин с помощью Центра партнеров.

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

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

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

Важно!

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