2016年08月18日
川俣晶の縁側ソフトウェア技術雑記 total 3214 count

Microsoft Store Services SDK 10.0で、UWPがAdMediatorControlからAdControlに移行が強要される問題

Written By: 川俣 晶連絡先

問題 §

 Ad関係のSDKの名前がまた変わってMicrosoft Store Services SDK 10.0になった。ところが、これにはAdMediatorControlが入っていない。

解決 §

 AdMediatorControlからAdControlに移行する。

 移行は罠が多く全て説明しきれないが気づいたことをまとめる。

対象バージョン §

 古いプロジェクトを開くとこうなっているが、これでは必要なコントロールを追加できない。

<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10586.0" />

 以下のように直す。10240はもうサポートから外す。

<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10586.0" MaxVersionTested="10.0.14393.0" />

例外 §

 初期状態でAdControlを追加して実行すると以下の例外が出る。既定では実行が継続されるが出力ウィンドウには例外が発生した旨の情報が出てる。

MicrosoftAdvertising.Shared.AdException が発生しました。

Message: 例外がスローされました: 'MicrosoftAdvertising.Shared.AdException' (MicrosoftAdvertising.winmd の中)

追加情報:Required capabilities are missing from manifest (AppxManifest.xml): internetClient.

 これは8.1用のモジュールを自動的に参照してしまう問題なので、手動で参照先のモジュールをWin10用に切り換える。それで例外は出ない。普通に実行すると止まらない例外なので注意。

NoAd問題 §

 いくつかのサイズではNoAdAvailableというエラーコードが返ってくる。ErrorOccurredイベントをハンドリングして、エラーは確実に把握すること。

 コントロールサイズを間違えてもNoAdAvailableになる。

コントロールのサイズ §

 D&DでフォームにAdControlを作成すると、250x250サイズのコントロールを作成するが、そんなサイズのAdはない。300x600か728x90に変更する。