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 のクラッシュは、クラッシュ ログを App Center に送信する前と送信する前に、開発者が追加のアクションを実行する機能を提供します。

JavaScript でのクラッシュの処理

の基本設定 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 のクラッシュを有効または無効にする

実行時に 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 のクラッシュが有効になっているかどうかを確認する

App Center のクラッシュが有効になっているかどうかをチェックすることもできます。

var success = function(result) {
    console.log("crashes " + (result) ? "enabled" : "disabled");
}

var error = function(error) {
    console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);