[Huawei Developers] devwithzachary:
The Huawei AppGallery Connect Crash service is a free to use crash analytics service which is supported on a wide range of platforms and frameworks.

Today lets take a look at how we can use in in a Xamarin, a hybrid framework and specifically set it up to work on iOS devices. This guide will start with a blank application but of course you can just as easily follow along and integrate into a pre-existing application!

Preparing the Xamarin Environment and Configuring Your Project​

You need to install Visual Studio for MAC first, and then select Mobile development with .NET in Visual Studio to install the Xamarin environment.

Create a project in AppGallery Connect and enable HUAWEI Analytics.

Right-click your project and choose Manage NuGet Packages.

Find the Huawei.Agconnect.iOS.Crash package and install it.

Find the Huawei.Agconnect.iOS.AgconnectCore package, select the 1.2.0.300 version, and install it.

Add the plist file from your AppGallery Project to the project directory.

Set Build Action to BundleResource.

Developing Your App​

Start by Configure the layout of your app for the testing of the crash service, in this example we will create three buttons to trigger different tests.

Double-click main.storyboard to launch Xcode, and create the MakeCrash, CatchException, and CustomReport buttons

In the MainActivity.cs file, call AGConnectCrash.Instance.TestIt to trigger a crash, call AGConnectCrash.Instance.SetUserId to set a custom user ID, call AGConnectCrash.Instance.SetCustomKey to set the key and value for a custom key-value pair, call AGConnectCrash.Instance.Log to set the log level, and call AGConnectCrash.Instance.RecordException to record a non-fatal exception.

This could look something like:

using System;
using UIKit;
using Huawei.Agconnect.Crash;
using Foundation;

namespace crashios0512
{
public partial class ViewController : UIViewController
{
public ViewController(IntPtr handle) : base(handle)
{
}

public override void ViewDidLoad()
{
base.ViewDidLoad();
// You can configure additional functions as required.
}

public override void DidReceiveMemoryWarning()
{
base.DidReceiveMemoryWarning();
// Delete the cached data or images that are no longer used.
}

partial void MakeCrash(UIKit.UIButton sender)
{
AGCCrash.GetSharedInstance().TestIt();
}

partial void CatchException(UIKit.UIButton sender)
{
AGCCrash.GetSharedInstance().RecordError(new Foundation.NSError());
}

partial void CustomReport(UIKit.UIButton sender)
{
AGCCrash.GetSharedInstance().SetUserId("testuser");
AGCCrash.GetSharedInstance().Log("default info level");
AGCCrash.GetSharedInstance().SetCustomValue(new NSString("test"), "this is string value");
AGCCrash.GetSharedInstance().LogWithLevel(AGCCrashLogLevel.Warning, "this is warning log level");
AGCCrash.GetSharedInstance().SetCustomValue(new NSNumber(123), "this is number");

}
}
}

View Crash Report​

Tap MakeCrash, CatchException, and CustomReport in sequence, and check the report in AppGallery Connect.

View the crash statistics.

Check the exceptions

Diagnose the causes of exceptions.

Check the custom key-value pairs.

View the custom log levels

View custom user IDs.

For details, please refer to:

Crash for iOS

Codelab of Crash for iOS