Собственная ошибка Xamarin.iOS SIGSEGV при регистрации push-уведомлений с помощью концентратора в Azure - PullRequest
0 голосов
/ 29 сентября 2019

Я использую этот метод в проекте iOS моего проекта приложения Xamarin для регистрации в концентраторе уведомлений в Azure для разработки (концентратор и приложение настроены для разработки с помощью сертификатов и обеспечения на портале для разработчиков Apple, ключевое слово в правах). plist установлен в dev, концентратор имеет загруженный сертификат p12 dev).

Этот метод (и, следовательно, приложение) прекрасно работает на моем iPhone 5S в режиме dev.

Но на моем iPhone 8Кроме того, я получаю эту ошибку:

=================================================================
    Native Crash Reporting
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

=================================================================
    Native stacktrace:
=================================================================
    0x103ef09c8 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x103ee67b0 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x103ef4ff0 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : mono_pmip
    0x195cdf894 - /usr/lib/system/libsystem_platform.dylib : <redacted>
    0x10214029c - /private/var/containers/Bundle/Applica
    tion/10179C87-9D6C-4E2B-90AD-57BF86C9C934/ShakeAlarmRR1.iOS.app/ShakeAlarmRR1.iOS : (null)
    0x1021403fc - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x102147ff8 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x102147b38 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x102146364 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x102145768 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x102144620 - /private/var/containers/Bundle/Application/10179C87-9D6C-4E2B-90AD- 
    57BF86C9C934/myapp.iOS.app/myapp.iOS : (null)
    0x1963b90b0 - /System/Library/Frameworks/Foundation.framework/Foundation : <redacted>
    0x195ced1ec - /usr/lib/system/libsystem_pthread.dylib : _pthread_start
    0x195cf0aec - /usr/lib/system/libsystem_pthread.dylib : thread_start

=================================================================
    Basic Fault Address Reporting
=================================================================
Memory around native instruction pointer (0x195cdef44):0x195cdef34  c0 03 5f d6 1f 20 03 d5 1f 20 03 
d5 01 ec 7c 92  .._.. ... ....|.
0x195cdef44  20 00 c0 3d c3 f9 ff 10 62 04 c1 3c 02 0c 40 92   ..
=....b..<..@.
0x195cdef54  63 00 02 cb 61 00 c0 3d 00 1c a1 4e 05 00 00 14  c...a..=...N....
0x195cdef64  1f 20 03 d5 1f 20 03 d5 1f 20 03 d5 20 0c c1 3c  . ... ... .. ..<

В AppDelegate.cs:

public override void RegisteredForRemoteNotifications(
            UIApplication application, NSData deviceToken)
        {
            AzureNotifHub = new SBNotificationHub(AppConstants.AZURE_DEVNOTIFHUB3_LISTENSHARED, 
  AppConstants.DEV_NOTIFHUB3);

            // update registration with Azure Notification Hub
            AzureNotifHub.UnregisterAllAsync(deviceToken, (error) =>
            {
                if (error != null)
                {
                    Debug.WriteLine($"Unable to call unregister {error}");
                    return;
                }

                var tags = new NSSet(AppConstants.IOSSUBSCRIPTIONTAGS.ToArray());
                AzureNotifHub.RegisterNativeAsync(deviceToken, tags, (errorCallback) =>
                {
                    if (errorCallback != null)
                    {
                        Debug.WriteLine($"RegisterNativeAsync error: {errorCallback}");
                    }
                });

                var templateExpiration = 
 DateTime.Now.AddDays(120).ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en- 
 US"));
                AzureNotifHub.RegisterTemplateAsync(deviceToken, "defaultTemplate", 
 AppConstants.IOS_APNS_TEMPLATE_BODY, templateExpiration, tags, (errorCallback) =>
                {
                    if (errorCallback != null)
                    {
                        if (errorCallback != null)
                        {
                            Debug.WriteLine($"RegisterTemplateAsync error: {errorCallback}");
                        }
                    }
                });
            });

Сейчас я использую iPhone 8 Plus в режиме разработки. На этом устройстве приложение было загружено из магазина приложений и, следовательно, ранее зарегистрировано в центре уведомлений в производственном режиме, не знаю, связано ли это с ним.

Также я использую ОС BETA ios 13.

Что могло вызвать эту ошибку и как ее исправить?

1 Ответ

1 голос
/ 03 октября 2019

Кажется, проблема в том, что this

NSData.description изменилось при связывании с iOS13 / Catalina, так что если вы используете это для создания строковой версииваш push-токен, у вас будут некоторые проблемы

Вам необходимо иметь последнюю версию пакета NotificationHub. Если это не исправлено в версии iOS для пакета Xamarin, вам придется создать проблему на их Github

...