Я занимаюсь этой проблемой уже несколько дней.
Вчера было выпущено обновление для Xamarin.Azure.NotificationHubs.iOS NuGet пакета.
Способ регистрации для центра уведомлений СЕЙЧАС отличается в примере по ссылке на Github для пакета nuget, чем в документации Microsoft Azure.
Я сузил проблему, которую считаю верной, до получения правильной строки соединения. Ошибка возникает в этой строке: var hub = new SBNotificationHub (connectionString, HubName);
------ Документальный способ регистрации с концентратором («старый» способ, работает толькодля iOS 12 для меня):
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
Hub = new SBNotificationHub(Constants.ListenConnectionString, Constants.NotificationHubName);
Hub.UnregisterAllAsync (deviceToken, (error) => {
if (error != null)
{
System.Diagnostics.Debug.WriteLine("Error calling Unregister: {0}", error.ToString());
return;
}
NSSet tags = null; // create tags if you want
Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => {
if (errorCallback != null)
System.Diagnostics.Debug.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
});
});
}
------ Пример кода Github, обновленный вчера для пакета nuget Xamarin.Azure.NotificationHubs.iOS:
public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
{
// Connection string from your azure dashboard
var cs = SBConnectionString.CreateListenAccess(
new NSUrl("sb://" + HUB_NAME + "-ns.servicebus.windows.net/"),
HUB_LISTEN_SECRET);
// Register our info with Azure
var hub = new SBNotificationHub (cs, HUB_NAME);
hub.RegisterNative (deviceToken, null, err => {
if (err != null) {
Console.WriteLine("Error: " + err.Description);
homeViewController.RegisteredForNotifications ("Error: " + err.Description);
} else {
Console.WriteLine("Success");
homeViewController.RegisteredForNotifications ("Successfully registered for notifications");
}
});
}
ИЛИ то же самоеКод из другой документации Azure также обновлен 13 часов назад на данный момент:
public override void RegisteredForRemoteNotifications (UIApplication app, NSData deviceToken)
{
// Connection string from your azure dashboard
var cs = SBConnectionString.CreateListenAccess(
new NSUrl("sb://yourservicebus-ns.servicebus.windows.net/"),
"YOUR-KEY");
// Register our info with Azure
var hub = new SBNotificationHub (cs, "your-hub-name");
hub.RegisterNativeAsync (deviceToken, null, err => {
if (err != null)
Console.WriteLine("Error: " + err.Description);
else
Console.WriteLine("Success");
});
}
Я не могу создать строку подключения должным образом. На портале Azure строка подключения выглядит следующим образом на вкладке Политики доступа к концентратору уведомлений:
Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=ListenSharedPolicyName;SharedAccessKey=AccessKey
Как правильно создать строку подключения? Что является частью служебной шины, которая является ключевой (или секретной) частью именно, почему существует часть "-ns".
До сих пор лучшей попыткой было создание строки подключения, подобной этой:
public override void RegisteredForRemoteNotifications(
UIApplication application, NSData deviceToken)
{
try
{
var cs = SBConnectionString.CreateListenAccess(
new NSUrl("sb://" + AppConstants.HUBNAME + "-ns.servicebus.windows.net/"),
AppConstants.AccessKey);
var hub = new SBNotificationHub(cs, AppConstants.DEV3_HUBNAME);
// await hub.UnregisterAllAsync(deviceToken);
hub.RegisterNative(deviceToken, null, err => {
if (err != null)
{
Console.WriteLine("Error: " + err.Description);
//homeViewController.RegisteredForNotifications("Error: " + err.Description);
}
else
{
Console.WriteLine("Success");
//homeViewController.RegisteredForNotifications("Successfully registered for notifications");
}
});
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
Но я однажды получил эту ошибку:
Не удалось инициализировать экземпляр типа 'Foundation.NSUrl': собственный метод initWithString: возвратил ноль. Можно игнорировать это условие, установив для ObjCRuntime.Class.ThrowOnInitFailure значение false.
И в большинстве случаев это:
================================================================= Собственная отчетность о сбоях ================================================================= Получил SIGSEGV при выполнении нативного кода. Обычно это указывает на фатальную ошибку в моно среде выполнения или в одной из собственных библиотек, используемых вашим
приложением.
====================================================================== Собственная трассировка стека: ======================================================================= 0x10473c190 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: (null) 0x104732a00 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: (null) контейнеры 0x10473fc54 - / private / var / Application / var / /le / var //3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS. A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x1029903c4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D10OSAPA/MyAppName.iOS: (нуль) 0x102997b70 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: / ноль 0/099 0) 099/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: (ноль) 0x1029980cc - / private / var / Containers / Bundle / Application / 3DE84EC0-A042-83-83-83--B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x102995e74 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppNi.iOS.i.OS.i.Si.Same.i.Si.Same.i.Same.i.OS.Same.i.OS.Same.i.OS.Same.i.OS.Same.i.Same.i.Same.i.OS.Same.i.OS.Same.IOS.Same.i.SAM.IPS.IAM.OS.SAM.IPS.IOS.OS.AMS.OS.AMS.INS.OS.AMS.INS.INS.OS.AMS (имя файла):null) 0x102993aec - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: (null) контейнеры 0x102992824 - / private / var / - / private / var //3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS. .app / MyAppName.iOS: (ноль) 0x104702694 -/private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: (нуль) 0x1029da3ac - / private / var / Containers / Bundle / Application / 3D0840 / 0E0EC0-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x102d59af4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676AppMa.iOS: (ноль) 0x104742fb4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: контейнеры mono_pmip 0x1047dc68 0/10 / bud/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS: mono_pmip 0x1047dfb40 - /private/var/containers/Bundle/Application/3DE84EC0-AD106A264667676676:/ контейнеры / Пачка / Применение / 3DE84EC0-A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x19bd632f8 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore/ 0 --19blib056.bd0d0d0d0d0d0d0d0d0d6. /CoreFoundation.framework/CoreFoundation: 0x197cb08bc - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation: CFRunLoopRunSpecific 0x1a1b1c328 - /System/Library/PrivateFrameworks /raphs/guard_Game.dll: GSFПриложение / 3DE84EC0-A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x104742fb4 - / личное / var / контейнеры / Bundle / приложение / 3DE84EC0-A042-42E6-83016 B233D10 MyPA. iOS.app/MyAppName.iOS: mono_pmip 0x1047dc688 - / private / var / Containers / Bundle / Application / 3DE84EC0-A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: mono_pmip 0x1047e1834 - / частный / var / контейнеры / Bundle / приложение / 3DE84EC0-A042-42E6-8301N2A10 MyDa. iOS.app/MyAppName.iOS: mono_pmip 0x104727df0 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS / 0/0/0/004: 08 (0): 08 (0): 048 (0): 08 (0): 048 (0) /var / Containers / Bundle / Приложение / 3DE84EC0-A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: _Z9__isctypeim 0x1029d8f34 - / частное / var / Containers / Bundle / Приложение / 3DE84EC0-A-42-83-83-83-83-83-83-83-83-83-83-42-68-42-80-83-80-80-80-80-80-80-80-80-80-803/3803-803-83-80-809- (0) - / 0-80--80B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x197b3b460 - /usr/lib/system/libdyld.dylib:
============================================================================ BasicОтчет об адресе неисправности ====================================================================== Память вокруг собственного указателя инструкций (0x197a46f44): 0x197a46f34 c0 03 5f d6 1f 20 03 0x19bd466d4 - / Система / Библиотека / PrivateFrameworks / UIKitCore.framework / UIKitCore: UIApplicationMain 0x103683020 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAxll_public/MyAxName_app_Mi / 0NBN (): null: (0/0): null: (0): (0) 0 (0). var / Containers / Bundle / Приложение / 3DE84EC0-A042-42E6-8301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x1035dbc04 - / private / var / container / Bundle / Приложение / 3DE84EC0-A042-42E68301-B233D104676A / MyAppName.iOS.app / MyAppName.iOS: (ноль) 0x1029d9064 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppNi.iOS: Mi(ноль) d5 1f 20 03 d5 01 ec 7c 92 .._ ... .. .... |. 0x197a46f44 20 00 c0 3d c3 f9 ff 10 62 04 c1 3c 02 0c 40 92 .. = .... б. . <.. @. 0x197a46f54 63 00 02 cb 61 00 c0 3d 00 1c a1 4e 05 00 00 14 c ... a .. = ... N .... 0x197a46f64 1f 20 03 d5 1f 20 03 d5 1f 20 03 d5 20 0c c1 3c,... ... ... . <</p>
====================================================================== Managed Stacktrace: ======================================================================== в <0xffffffff> в ApiDefinition.Messaging:void_objc_msgSend_IntPtr_IntPtr_IntPtr <0x00007> в WindowsAzure.Messaging.SBNotificationHub: RegisterNative <0x00333>
в MyAppName.iOS.AppDelegate: RegisteredForRemoteNotifications <0x002db> в System.Object: runtime_invoke_dynamic <0x00103> в <0xffffffff> в UIKit.UIApplication: UIApplicationMain <0x00007> в UIKit.UIApplication: Main <0x0002b> в UIKit.UIApplication: Main <0x00043> в MyAppName.iOS.Application: Main <0x000a3> в
System.Object: runtime_invoke_dynamic <0x00103>