3

1人のユーザー(iPhone 5を使用)が、画面が真っ暗になった(スプラッシュ画面が真っ黒になっている)約15秒後に起動時にアプリがクラッシュすることを報告しています。ユーザーは、アプリデリゲートにチェックポイントを含めたTestFlightビルドをダウンロードしましたが、これらのチェックポイントを超えたという証拠は得られず、クラッシュレポートを受け取ることはありません。

ストーリーボードのエントリポイントを空白のViewControllerに変更したところ、チェックポイントを超えていることがわかります。ストーリーボードリソースの読み込みに時間がかかりすぎるため、Watchdogがアプリを一時停止していることに気付きましたが、4つの小さなタブバーアイコンを除いて、すべての画像が必要に応じてリアルタイムで作成されます。いくつかのオーディオファイルがありますが、それらはオンデマンドでロードされます。遅延を引き起こしている可能性のある他のリソースは考えられません。他の誰もこの問題を報告しておらず、私は困惑しています。

特に、TestFlightからのクラッシュレポートやチェックポイントが表示されない理由について、洞察をいただければ幸いです。

4

1 に答える 1

8

あなたの仮定は正しいです、ウォッチドッグはアプリを殺しました。これは、アプリが正しく起動せず、メインスレッドがブロックされているか、UIが読み込まれていないためにユーザーとのやり取りができないためです。

説明を理解しましたが、読み込み中にリソースを作成していますか?そして、おそらくメインスレッドでこれを行っていますか?古い/遅いデバイスが予想よりもはるかに長くかかる可能性があるメインスレッドでこれを行うのではなく、リソースを大量に消費するコードをバックグラウンドスレッドにオフロードするようにしてください。UIは常にレスポンシブである必要があり、メインスレッドは、処理の1秒に近い場所に到達する可能性のあるタスクに決して応答しないようにする必要があります。

もう1つの理由は、ストーリーボードとView Controllerの間のリンクが壊れており、実際にはそのデバイスタイプにロードされないことである可能性があります。

しかし、詳細がなければ、何が起こっているのかを正確に言うことは不可能です。

一般的に:アプリがiOSシステムによって強制終了された場合、たとえば、起動時間が超過したため、またはメモリの割り当てが多すぎるためにウォッチドッグによって強制終了された場合、クラッシュレポートを生成できるのはiOSのみです。

問題は、アプリが強制終了され、その場合、プロセスが強制終了されることです。そして、それはそのプロセス内で実行されているコードでは検出できません。また、iOSシステムベースのクラッシュレポーター以外のiOSのクラッシュレポートは、強制終了されたのと同じアプリプロセス内で実行されるため、クラッシュレポートを報告したり書き込んだりすることはできません。

次のページに、これに関する詳細が記載されています:http ://support.hockeyapp.net/kb/how-tos-faq/which-types-of-crashes-can-be-collected-on-ios-and-os- x(ただし、Testflightでは使用されないPLCrashReporterのコンテキストがあります。ただし、一般的なステートメントは同じです)

于 2013-03-20T14:50:22.413 に答える