Windowsストアアプリケーション:アプリケーションを公開停止するには?

土曜日 , 10, 11月 2012 Leave a comment

 EC-CUBE大全が起動せずにシャットダウンするようになった。

 すぐにアプリを公開停止したいのでストアのストアで停止方法を調べてみる。

 (エラーの修正は後ほどで)

 

 ストアの記述を探すと以下のような文言が、

 

アプリをストアから削除する

このアプリをストアで販売しない場合は、他のリリースを提出し、すべてのマーケットをオフにしてください。 さらに詳しく

 

 全てのマーケットをオフにして提出?

 この方法しかないとするとアプリを非公開にするには審査待ちに並ばないといけないということになる。

 となると問題は審査通過が通常のアプリ申請と同じぐらい日数がかかるかどうか?

 

 すぐ審査が終わるといいのだが、結果も見たいので指定された方法で審査に出してみた。

 (これ審査落ちしたら笑い事じゃないぞ)

 

デバッグ編

 

 アプリの取り下げの準備ができた。

 そろそろ更新したいと思っていたので、機能追加の肩慣らしにプロジェクトを眺めてみる。

 

 このアプリは「Windows 8アプリ開発テンプレート」を利用して作成している。同じテンプレート(NewsReader テンプレート XAML/C# 用)を使っていて、この情報が役立つ人がいるかもしれない。

 (当時のものなので利用したテンプレートは最新ではない)

 

 

 

 起動すると上記のようなエラー。

 

 Value Cannot  be null

 

 RSSの値を利用しているところで値のチェックが甘いところがあると推測。

 コードを眺めるとRSSの一つ一つに読み込み処理、値をパースする処理があるので一つ一つ追ってみる必要がありそう。

 (コードを共有していないのは、読み手が非プログラマーでもさわり安くするためだろうか)

 

                    NewsDataItem i = g1.Items[0];
                    XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText09);
                    tileXml.GetElementsByTagName("text").Item(0).InnerText = i.Title;
                    tileXml.GetElementsByTagName("text").Item(1).InnerText = i.Description;
                    TileNotification tileNotification = new TileNotification(tileXml);
                    tileNotification.Tag = g1.UniqueId;
                    tileNotification.ExpirationTime = DateTimeOffset.Now.AddHours(6);
                    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);

 

 この部分でi.Titleかi.Descriptionがnullだとエラーになりますね。

 実際のデータもRSSのdescriptionがnullでした。

 というわけでチェック処理を追加。

 

                    if (i.Title != null && i.Description != null)
                    {
                        tileXml.GetElementsByTagName("text").Item(0).InnerText = i.Title;
                        tileXml.GetElementsByTagName("text").Item(1).InnerText = i.Description;
                        TileNotification tileNotification = new TileNotification(tileXml);
                        tileNotification.Tag = g1.UniqueId;
                        tileNotification.ExpirationTime = DateTimeOffset.Now.AddHours(6);
                        TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
                    }

 

 最新版の1.9を見ると・・・

 

                if (g1.Items.Count > 0)
                {
                    NewsDataItem i = g1.Items[0];
                    XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText09);
                    tileXml.GetElementsByTagName("text").Item(0).InnerText = i.Title;
                    tileXml.GetElementsByTagName("text").Item(1).InnerText = i.Description;
                    TileNotification tileNotification = new TileNotification(tileXml);
                    tileNotification.Tag = g1.UniqueId;
                    tileNotification.ExpirationTime = DateTimeOffset.Now.AddHours(6);
                    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
                }

 

 こっちでも起きそうですね。

 というわけでNewsReader テンプレート XAML/C# 用を利用している人は注意ですね。


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です