App Center のクラッシュ (Cordova)
重要
Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。
注意
Cordova アプリのサポートは 2022 年 4 月に終了しました。 詳細については、 App Center ブログを参照してください。
App Center のクラッシュでは、アプリがクラッシュするたびにクラッシュ ログが自動的に生成されます。 ログは最初にデバイスのストレージに書き込まれ、ユーザーがアプリを再度起動すると、クラッシュ レポートが App Center に送信されます。 クラッシュの収集は、ベータアプリとライブアプリの両方で機能します。つまり、App Storeに送信されたアプリです。 クラッシュ ログには、クラッシュの修正に役立つ貴重な情報が含まれています。
アプリケーションで SDK をまだ設定していない場合は、はじめにセクションに従います。
App Center のクラッシュには、SDK を簡単にテストするためのテスト クラッシュを生成する API が用意されています。 この API はテスト/ベータ アプリでのみ使用でき、運用アプリでは何も行いません。
AppCenter.Crashes.generateTestCrash();
注意
このクラッシュを App Center に送信するには、Cordova アプリをリリース モードでコンパイルする必要があります。
App Center のクラッシュには、アプリがクラッシュした場合に備えて詳細情報を提供する 2 つの API があります。
SDK を起動した後は、いつでも、アプリが前のセッションでメモリ警告を受け取ったかどうかをチェックできます。
var success = function(hadLowMemoryWarning) {
console.log(`there was ${hadLowMemoryWarning ? "a" : "no"} memory warning`);
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.hasReceivedMemoryWarningInLastSession(success, error);
注意
場合によっては、デバイスのメモリ不足を実行しても追跡可能なイベントがトリガーされないことがあります。
SDK を起動した後は、いつでも、前の起動でアプリがクラッシュした場合にチェックできます。
var success = function(didCrash) {
console.log("there was " + (didCrash ? "a" : "no") + " crash");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.hasCrashedInLastSession(success, error);
これは、クラッシュが発生した後にアプリの動作または UI を調整する場合に便利です。 開発者の中には、ユーザーに対して申し訳ない内容を表示したり、クラッシュが発生した後に連絡を取ったりしたい場合があります。
アプリが以前にクラッシュした場合は、最後のクラッシュに関する詳細を取得できます。
var success = function(crashReport) {
//do something with crash report
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.lastSessionCrashReport(success, error);
App Center のクラッシュは、クラッシュ ログを App Center に送信する前と送信する前に、開発者が追加のアクションを実行する機能を提供します。
の基本設定 APPCENTER_CRASHES_ALWAYS_SEND
の値を変更することで、クラッシュ レポートを自動的に送信したり、JavaScript でクラッシュを処理したりするように SDK を構成config.xml。 JavaScript でクラッシュを処理するには、 に false
設定します。
<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />
その後、メソッドを使用 AppCenter.Crashes.process(processFunction, errorCallback)
してクラッシュ処理をカスタマイズできます。
特定のsendCallback
クラッシュを処理する必要があるかどうかを判断する場合は、 にを渡false
します。 たとえば、無視する必要があり、App Center に送信したくないシステム レベルのクラッシュが発生する可能性があります。
var errorCallback = function(error) {
console.error(error);
};
var processFunction = function(attachments, sendCallback) {
sendCallback(false); //crash won't be sent
};
AppCenter.Crashes.process(processFunction, errorCallback);
それ以外の場合は、 関数に sendCallback
を渡true
すと、クラッシュが送信されます。
var errorCallback = function(error) {
console.error(error);
};
var processFunction = function(attachments, sendCallback) {
sendCallback(true); //crash will be sent
};
AppCenter.Crashes.process(processFunction, errorCallback);
注意
この機能を使用するには、config.xml の基本設定の値を に設定APPCENTER_CRASHES_ALWAYS_SEND
するfalse
必要があります。
この機能は、JavaScript での クラッシュの処理 に依存します。
バイナリ添付ファイルとテキスト添付ファイルをクラッシュ レポートに追加できます。 SDK によってクラッシュと共に送信されるため、App Center ポータルで確認できます。 次のコールバックは、以前のアプリケーションの起動から格納されたクラッシュを送信する直前に呼び出されますが、クラッシュ時には呼び出されません。 その名前はミニダンプ ファイル用に予約されているため、添付ファイルの名前minidump.dmp
が付かないようにしてください。 テキストと画像をクラッシュに添付する方法の例を次に示します。
var errorCallback = function(error) {
console.error(error);
};
var processFunction = function(attachments, sendCallback) {
for (var i = 0; i < attachments.length; i++) {
attachments[i].addTextAttachment('Hello text attachment!', 'hello.txt');
var imageAsBase64string = '...';
attachments[i].addBinaryAttachment(imageAsBase64string, 'logo.png', 'image/png');
}
sendCallback(true); //crash will be sent
};
AppCenter.Crashes.process(processFunction, errorCallback);
注意
この機能を使用するには、config.xml の基本設定の値を に設定APPCENTER_CRASHES_ALWAYS_SEND
するfalse
必要があります。
この機能は、JavaScript での クラッシュの処理 に依存します。
注意
現在、サイズ制限は Android では 1.4 MB、iOS では 7 MB です。 より大きな添付ファイルを送信しようとすると、エラーが発生します。
実行時に App Center のクラッシュを有効または無効にすることができます。 無効にした場合、SDK はアプリのクラッシュ レポートを実行しません。
var success = function() {
console.log("crashes disabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.setEnabled(false, success, error);
App Center のクラッシュを再度有効にするには、同じ API を使用しますが、 パラメーターとして を渡 true
します。
var success = function() {
console.log("crashes enabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.setEnabled(true, success, error);
状態は、アプリケーションの起動間でデバイスのストレージに保持されます。
App Center のクラッシュが有効になっているかどうかをチェックすることもできます。
var success = function(result) {
console.log("crashes " + (result) ? "enabled" : "disabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);