Как зарегистрировать обработчик событий для TrackError в AppCenter SDK для C#?

Я регистрирую обработчики событий перед вызовом TrackError, но они никогда не вызываются. Да, события произошли, потому что ошибки появились в AppCenter.

//On loading app
Crashes.SentErrorReport += (sender, args) => { System.Diagnostics.Process.GetCurrentProcess().Kill(); };
Crashes.FailedToSendErrorReport += (sender, args) => { System.Diagnostics.Process.GetCurrentProcess().Kill(); };

AppCenter.Start("{App secret here}" +
       "android={App secret here}" +
       "ios={App secret here}",
       typeof(Analytics), typeof(Crashes));

//Elsewhere in the app
Crashes.TrackError(exception, comments, attachments);

Следуя этой документации: https://docs.microsoft.com/en-us/appcenter/sdk/crashes/xamarin


person Sean Anderson    schedule 05.01.2020    source источник
comment
Вы пытались настроить их после запуска AppCenter?   -  person Jason    schedule 06.01.2020
comment
@ Джейсон Да. Затем я просмотрел документацию и увидел, где сказано, что они должны быть зарегистрированы перед вызовом AppCenter.Start.   -  person Sean Anderson    schedule 06.01.2020


Ответы (2)


Эта функция не поддерживается для обработанных исключений, также называемых ошибками в App Center (тех, о которых сообщает разработчик с помощью Crashes.trackError вручную).

События запускаются только при сбоях (необработанные исключения, приводящие к выходу приложения). Также эти события вызываются после перезапуска аварийного процесса.

person Guillaume Perrot    schedule 07.01.2020
comment
Спасибо @Guillaume Perrot. Это прямо указано в документации? Я проглядел это? - person Sean Anderson; 07.01.2020
comment
В документе просто упоминается, что это для журналов сбоев. Мы не настаивали на разнице между ошибками сбоя и обработанными ошибками, поэтому я могу рассмотреть возможность регистрации ошибки, чтобы прояснить эту разницу. Раздел «Обрабатываемые ошибки» был добавлен позже в продукт в конце страницы в качестве постепенного изменения. - person Guillaume Perrot; 07.01.2020

Они никогда не вызываются, потому что два обработчика событий больше не входят в область Page/Fragment/UIViewController. (Страница в Xamarin.Forms, Фрагмент в Xamarin.Android, UIViewController в Xamarin.iOS)

Вам нужно будет переназначить обработчики событий на новой странице. Возможно, определите его в BasePage/BaseViewModel, от которого наследуются все остальные страницы.

person Saamer    schedule 06.01.2020
comment
А потом каждый раз вызывать AppCenter.Start? Не имеет смысла. - person Sean Anderson; 06.01.2020
comment
Нет, чувак, ты просто вызываешь AppCenter.Start один раз, но ты вызываешь это Crashes.SentErrorReport += (sender, args) => { System.Diagnostics.Process.GetCurrentProcess().Kill(); }; Crashes.FailedToSendErrorReport += (sender, args) => { System.Diagnostics.Process.GetCurrentProcess().Kill(); }; каждый раз - person Saamer; 06.01.2020
comment
Вы программируете только для UWP? Или это не работает для Android и iOS? - person Saamer; 06.01.2020