WindowsPhone8 広告収益の選択肢に関して/WP Advent Calendar 2013 二日目

Windows Phone Advent Calendar 2013 二日目

WindowsPhone8での収益方法としては「課金」と「広告」があります。
「広告」は「Microsoft Advertising」を使用する方法が一般的でしたが、「Google admob」用の「Google Mobile Ads SDK」がWindowsPhone8に対応しました。

ただこれに伴って「WindowsPhone7」が非対応になっているため、以前のバージョンをWindowsPhone7向けに実装している方は移行を考えるべきかもしれません。

さて、組み込む方法ですが下記のような感じです
1:SDKをDL後、解凍してわかりやすい場所へ移動させておきます。
2:VisualStudioでソリューションを開いて「ツールボックス」からアイテムの追加を選択します。
3:「WindowsPhoneComponent」でDLLの参照をクリックし「GoogleAds.dll」を参照します。
4:「AdView」をアイテムとして追加します。
5:「AdView」を配置して「Format=”YOUR_AD_FORMAT”」を「Banner」または「SmartBanner」に変更
6:「AdUnitID=”MY_AD_UNIT_ID”」は「Google admob」であらかじめUnitIDを作成しておいて書き換えます。
7:「Microsoft Advertising」と「Google Mobile Ads」を使用する際、「WMAppManifest.xml」の「機能」を下記のように指定しています。
「Google Mobile Ads」は「ID_CAP_WEBBROWSERCOMPONENT」が必須です。
機能イメージ
8:「Microsoft Advertising」は「AdRefreshed」「ErrorOccurred」で「Google Mobile Ads」は「ReceivedAd」「FailedToReceiveAd」で広告取得の成功/失敗を確認できます。

表示される量は「Microsoft Advertising」よりも自分がテストしている感じでは多く出ています。
というわけでアプリ作って「Microsoft Advertising」と「Google admob」両対応で頑張りましょう。

こんなネタでいいのかなー

※追記
 もしかするとですが、広告によってはMusicHbの再生とバッティングする可能性があるようです。
 自分の環境では起きないのですが、WPストア審査で「5.1.2」違反でという形で
The application terminates unexpectedly in response to user input.
Steps to Reproduce:
1. Play music on the device from the Music + Videos Hub.
2. Launch the application.
3. Pause the music playing from the Music + Videos Hub.
4. Observe the application unexpectedly terminates.
 とレポートが返ってきました。
 対処として「ID_CAP_MEDIALIB_AUDIO」「ID_CAP_MEDIALIB_PLAYBACK」を有効にして現在再提出しています。

 同じレポートで帰ってきたので違うかもしれません。

Flyoutを別XAMLにしたときのメモ

Flyoutをストアアプリで使用する場合、多くは、使用するXAMLページに直接描くと思うのですが、これを別XAMLにしてアタッチすることもできます。

別XAMLとして作成する場合、とりあえず「追加>新しい項目>ポップアップの設定」で「SettingsFlyout」を継承したXAMLを作成して

「SettingsFlyout」を「Flyout」にCSもXAMLも書き換えます。

XAML上では「Flyout」で使用できない「IconSource」「Title」「d:DesignWidth」を削除します。

問題点として「Flyout」では「FindName」が使用できないため、「Binding」などに制限がかかります。
「DataContext」でデータバインドはできるので、これを利用してデータのやり取りをすることになります。

作成したXAMLは「FlyoutBase.AttachedFlyout」にアタッチしておきます。
外部とのやり取りは、「Flyout」にイベントを作成公開してやり取りします。

オープン、クローズはベースのイベントとして使用できるので、クローズ時にデータを初期化します。
名前を追うことはできないので、FrameworkElementを追いかけるか、下記のようにバインドしたプロパティデータをリセットして初期化します。

        private void Flyout_Closed(object sender, object e)
        {
            var con = this.Content;

            ((StackPanel)con).DataContext = new NewProp();
        }

手間がかかるので、使用するXAMLページにFlyoutを書き込んだほうが名前の仕様もできるので分離するのでなければそのほうがいいでしょう。

WinRT XAML Toolkit – Composition

WinRT XAML Toolkit – CompositionWinRT XAML ToolkitにWriteableBitmapやChart等が含まれています。
NuGetのパッケージマネージャーコンソール経由で現在「1.5.4」が導入可能です。

CompositionにはSharpDXも含まれているので、少し容量が大きくなるのでWriteableBitmapやChart(グラフ)が必要なくWinRT XAML Toolkitに含まれているコンポーネントが必要な場合はComposition無しのWinRT XAML Toolkitを入れましょう。

Chart(グラフ)を使用する場合はツールボックスに表示されないので。
XAMLに下記を追加

xmlns:Charting="using:WinRTXamlToolkit.Controls.DataVisualization.Charting"

XAMLでの実態(線グラフ)

						<Charting:Chart x:Uid="LineChart" x:Name="LineChart" Title="グラフ" BorderBrush="#FF191B30" Foreground="#FF191B30">
							<Charting:LineSeries x:Name="LineSeries"
								Title="線タイトル"        
								IndependentValueBinding="{Binding Name}"
								DependentValueBinding="{Binding Value}"
								IsSelectionEnabled="True">
								<Charting:LineSeries.DataContext>
									<Style TargetType="Charting:LineDataPoint">
										<Setter Property="Background" Value="DarkBlue"/>
									</Style>
								</Charting:LineSeries.DataContext>
							</Charting:LineSeries>
						</Charting:Chart>

コード側の実装例

            ChartItems = new ObservableCollection(GraphList);
            ((LineSeries)Chart.Series[0]).ItemsSource = ChartItems ;

線グラフ以外にも、円グラフ、棒グラフなどが可能です

TABLET PC – Enhanced Tablet Driver 7.1.2

WACOMのタブレットPC向けドライバが7.1.2になりWindows8.1に対応しているようです。
Surface Pro / Pro2で「Wintab対応(Photoshopなどでの筆圧検知)」をする場合には必要です。
自己責任でどうぞ。

ダウンロード先(英語):Wacom Feel Driver | Wacom Americas

SQLite for Windows Runtime to Windows 8.1

以前の環境を引き継いでの開発の場合「SQLite for Windows Runtime」が利用している「Microsoft Visual C++ Runtime Package」がVer11.0なためWindows8.1用には使用できません。

SQLite Download Page
に「sqlite-winrt81-3080002.vsix」があるので、これをDLしてインストールすることで、Windows8.1用ストアアプリでも使用できるようになります。

インストールすると参照からWindows拡張に「SQLite for Windows Runtime (Windows 8.1)」があるのでこれを有効化して使用することができます。

新規で開発環境を作った場合なら「拡張機能と更新プログラム」でSQLiteを検索することで「SQLite for Windows Runtime (Windows 8.1)」が表示されるかもしれませんが、出てこない場合は同じくDLしてインストールしましょう。

ループスライドパズルを公開しました

ループしながらスライドする画像を移動させて正解画像をそろえるパズル、「ループスライドパズル」を公開しました。

パズルは「3×3」「4×4」「5×5」があり、「5×5」はアイテム課金による有料となっていることをご了承ください。

ループスライドパズル
ループスライドパズル、ステージ選択画面

WindowsStoreLinkImage
*対応言語:日本語; English; 簡体字中国語; español; português
*É um quebra-cabeça para alinhar a imagem correta para mover a imagem para deslizar enquanto loop.
*这是一个益智对准正确的图像,移动图像滑动while循环。
*Es un rompecabezas para alinear la imagen correcta para mover la imagen a resbalarse al bucle.
*It is a puzzle to align the correct image to move the image to slide while loop.

ストアアプリでの「ゲームの評価証明書」「GDF」関係

Windowsストアアプリ、WindowsPhoneアプリでゲームカテゴリのアプリを提出する際に、一部地域向けには「ゲームの評価証明書の取得」が必要になります。
※以下「Windowsストアアプリ」向けのURLで、基本的にはWindowsPhoneでも一緒ですが確認をお願いします。

またゲームの内容に応じて「年齢区分とレーティング機関」に示された年齢区分設定なども必要です。

基本的にゲームカテゴリの場合「韓国」「南アフリカ」「台湾」「ブラジル」「ロシア」にはゲームの評価証明書がない場合出すことができません。
他の国でも必須ではないとなっていますが、内容によっては念のため取得しておいたほうが良い場合もあると思います。

この中で「ブラジル」「ロシア」に関しては自己評価の上で「PEGI」で代用可能であり、「ESRB」「PEGI」ともにオンラインフォームによる申請で即時入手が可能で、申請はしやすいと思われます。

「台湾」も「CSRR」は自己評価でとなっているのですが、アップする提出書類がよくわからないため、自分は今のところ手を出していません。

さて、ストアに登録の際には「ESRB」「PEGI」の書類(PDF)をアップする必要があるのですが、それだけではなく「ゲーム定義ファイル(GDF)」が必要になります。

「ゲーム定義ファイル(GDF)」は「GDF ファイルの作成」を見ていただくと簡単に作成可能です。
以前はDLLファイルを作成などがあったのですが、現在は必要なく作成されたXMLファイルのみでよいようです。

「自己評価」はGDF作成時に登録することで有効になるようです。
「GDF」と「ゲームの評価証明書」をアップして申請することになりますが、再申請の際などに「ゲームの評価証明書」は問題ないのですが、「GDF」は再アップする必要があるようです。
 毎回確認してアップしなおすように癖をつけておかないと、これが理由で「要件6.2」違反という事で審査に落ちるので注意しましょう。

Google Mobile Ads SDK for WindowsPhone8

Google Mobile Ads SDKのWindowsPhone8対応ベータ版が公開されたようです。

これに伴いWindowsPhone7向けの提供が終了、またベータ版のためAndroid、iOS版より機能が制限されているようです。

ただ、これでMS Ad以外の選択肢が増えたことはよいことですね。

8から8.1へのストアアプリコンバート時の注意点メモ

Windows8ストアアプリからWindows8.1ストアアプリへコンバートして行う場合、ユーザーコントロールの扱いに注意が必要な模様

自分が起きた現象としては、ユーザーコントロールを別プロジェクト(ソリューションは同一)に逃がしていたアプリを8.1用に移植しながら作業していたところ、Debug、Releaseともに問題なく動作していましたが、ストアアプリをパッケージ化して、WACKでの検証際見ていたところ、ユーザーコントロールが動作していませんでした。

困ったことにWACKではタイトルのみが動作検証で表示されるところなため、もし内部だけだった場合まったく気が付かず治すことができなかったと思われます。

この現象の回避は、プロジェクトを分けずに、メインのプロジェクトでユーザーコントロールを再度新規に作成して動かすことでWACKで見える範囲では問題ないことを確認したので、この状態で再申請しています。

これのいやらしいところは、パッケージ化していない限り顕在化してこないことです。
もしかしたら初めから8.1用で作成していた場合は起きない可能性もありますが、今回は8用を移植コンバートしたため、そこまでの確認はしていませんので、今後の開発の際に確認してみようかなと思いますが、ちょっと手間ですねこれ。

もし同じような構成で8.1にコンバートされている方は注意してみてはいかがでしょうか?