Start Debugging
2012-09-16 更新日 2023-11-05 windows-phone Edit on GitHub

AdMob が Windows Phone アプリをクラッシュさせる。代替手段は?

AdMob のせいで Windows Phone アプリが WebBrowser.InvokeScript 経由でクラッシュしていました。本記事では stack trace と原因、InnerActive のような代替広告ネットワークを紹介します。

少し前、global publisher ではなく devcenter のデベロッパーアカウントで初めてアプリを公開したのですが、ほんの数日後 (というより数週間後) に、アプリのクラッシュレポートが届くようになりました。原因を突き止められないかと stack trace データをダウンロードしましたが、運が悪く、原因についてはほとんど何も得られませんでした。分かっているのは、ブラウザーが絡んでいるということだけです。

私の stack trace は次のとおりです。

Frame    Image             Function                                                   Offset
0        coredll.dll       xxx_RaiseException                                         19
1        mscoree3_7.dll                                                               436172
2        mscoree3_7.dll                                                               383681
3        mscoree3_7.dll                                                               540620
4                          TransitionStub                                             0
5                          Microsoft.Phone.Controls.NativeMethods.ValidateHResult     236
6                          Microsoft.Phone.Controls.WebBrowserInterop.InvokeScript    128
7                          Microsoft.Phone.Controls.WebBrowser.InvokeScript           84
8                          .__c__DisplayClass36._RunScripts_b__34                     228
9        mscoree3_7.dll                                                               428848
10       mscoree3_7.dll                                                               222523
11       mscoree3_7.dll                                                               221143
12                         System.Reflection.RuntimeMethodInfo.InternalInvoke         112
13                         System.Reflection.RuntimeMethodInfo.InternalInvoke         1556
14                         System.Reflection.MethodBase.Invoke                        104
15                         System.Delegate.DynamicInvokeOne                           564
16                         System.MulticastDelegate.DynamicInvokeImpl                 84
17                         System.Windows.Threading.DispatcherOperation.Invoke        80
18                         System.Windows.Threading.Dispatcher.Dispatch               404
19                         System.Windows.Threading.Dispatcher.OnInvoke               56

そこで次の疑問: 私のアプリで web browser を使っているのはどこか? 答え: ありません。広告部分以外には。そして登場するのが AdMob です。少し検索してみると、この問題を抱えているのは私だけではなく、よく似た stack trace を持つ開発者がたくさんいて、皆 AdMob で広告を表示していることが分かりました。

AdMob の Google グループでも、この種の issue やクラッシュで溢れているのに、解決のための動きはありません。回避策はあるにはあります — unhandled exception を handled としてマークしてアプリのクラッシュを防ぐ、など — しかしそれをすると広告がクリック不可になり、望ましくありません。

そこで代替を探し始め、しばらくして InnerActive にたどり着きました。多くの開発者は Microsoft の Pub Center と AdMob の代替としてこれを推しているようで、HalfBrick や ZeptoLab のような有名パブリッシャーとのよい提携も見受けられます。試してみます。

ドキュメントとサポートされる広告の種類は少し見たところで、悪くなさそうです (少なくとも AdMob よりはずっと良さそう)。自分のアプリのひとつに広告を組み込んでみて、どうだったか報告します。

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< 戻る