18

同様の問題 (主に Windows Phone 7 に関するもの) に対するいくつかの散在する回答を見つけましたが、Windows Phone 8 広告のすべての要件を含む回答を投稿したいと思いました。

Windows Phone 8 で広告を設定する際に問題が発生しました。エミュレーターを実行するたびに、アプリは実行されるが広告が表示されないという問題に遭遇しました。

アプリは正常に実行されましたが、出力コンソールに次の例外が記録されていることに気付きました。

An exception of type 'Microsoft.Advertising.Shared.AdException' occurred in Microsoft.Advertising.Mobile.DLL and wasn't handled before a managed/native boundary

私が開発しているあるアプリでは広告が正常に表示されますが、別のアプリでは表示されず、例外には有用な情報が表示されません。

4

1 に答える 1

49

例外をキャッチする方法を見つけて、実際に問題が何であるかを確認しました (これは、マニフェスト ファイルに大量の機能がありませんでした)。AdControl から例外をキャッチして必要なデータを取得するために、次のコードをページに追加しました。

広告制御エラーをキャッチ

    public MainPage()
    {
        InitializeComponent();

        AdUnit.ErrorOccurred += AdUnit_ErrorOccurred;
    }

    void AdUnit_ErrorOccurred(object sender, Microsoft.Advertising.AdErrorEventArgs e)
    {
        throw new NotImplementedException();
    }

MEDIALIB 権限と PHONDIALER 権限がないことがわかりました。いくつかのテストを行った結果、広告を実行するアプリには次の権限が必要であることがわかりました。

必要な権限

ID_CAP_IDENTIFY_USER
ID_CAP_MEDIALIB_PHOTO
ID_CAP_NETWORKING
ID_CAP_PHONEDIALER
ID_CAP_WEBBROWSERCOMPONENT

パラメータの設定

私が読んだ他の投稿から、広告ユニットの幅/高さを適切に 480/80 に設定することも重要です。自動で最小寸法がない場合、広告は表示されません。

エミュレーターで表示するには、 test ApplicationId と AdUnitIdのみを使用できることを確認してください。PubCenter の資格情報は、公開されたアプリケーションでのみ機能します。

<UI:AdControl x:Name="AdUnit" Height="80" Width="480"
    AdUnitId="Image480_80" ApplicationId="test_client" />

失敗した/空の広告コントロールを非表示または交換

AdControl が失敗すると、広告に大きな空白が残ります。非表示にするか、別のネットワークの広告と入れ替えることができます。これを行うには、上記 ( AdUnit_ErrorOccurred) に示すように例外をキャッチし、以下を追加します。

隠れる:

AdUnit.Height = 0;
AdUnit.Visibility = System.Windows.Visibility.Collapsed;

可視性の設定はそれ自体では機能しませんでした。高さも 0 に設定する必要があります。

スワップ広告:

AdControl を非表示にする代わりに、http://www.adduplex.comなどのサービスから別の広告バーを表示できます。

于 2012-11-28T15:50:59.433 に答える