Xamarin.iOS无法在iOS 13.1.2中向Azure通知中心注册 [英] Xamarin.iOS cannot register with Azure Notification Hub in iOS 13.1.2

查看:59
本文介绍了Xamarin.iOS无法在iOS 13.1.2中向Azure通知中心注册的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经处理了几天这个问题.

I have been dealing with this issue for a few days now.

昨天,发布了 Xamarin.Azure.NotificationHubs.iOS NuGet 软件包的更新.

Yesterday an update was released for the Xamarin.Azure.NotificationHubs.iOS NuGet package.

在nuget软件包的Github链接上的示例中,与Microsoft Azure文档中的示例相比,现在注册通知中心的方式有所不同.

The way to register for the notification hub is NOW different in the sample on the Github link for the nuget package than in the Microsoft Azure documentation.

我缩小了获得正确连接字符串的范围. 错误发生在此行: var hub = new SBNotificationHub(connectionString,HubName);

I narrowed down the problem I believe to getting the right connection string. The Error occurs at this line: var hub = new SBNotificationHub(connectionString,HubName);

------向hub注册的文档方式(旧"方式,仅对我而言适用于iOS 12):

------Documentation way of registering with hub("old" way, works only for iOS 12 for me):

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示例代码昨天针对Xamarin.Azure.NotificationHubs.iOS nuget软件包进行了更新:

------Github sample code updated yesterday for the Xamarin.Azure.NotificationHubs.iOS nuget package:

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");
                }
            });
        }

不同天青文档中的相同代码也已在13小时前更新:

OR same code from different azure documenation also updated 13 hours ago as of now:

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 Portal上,通知中心访问策略"选项卡中的连接字符串如下所示:

I cannot seem to create the connection string properly. On Azure Portal the connection string looks like this in the Notification Hub Access policies tab:

Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=ListenSharedPolicyName;SharedAccessKey=AccessKey

如何正确创建连接字符串?这是服务总线部分,确切地是密钥(或秘密)部分,为什么会有"-ns"部分.

How to create the connection string properly please? Which is the servicebus part, which is the key(or the secret) part exactly, why is there the "-ns" part.

到目前为止,最好的尝试是创建连接字符串,如下所示:

Best attempt so far was creating the connection string like this:

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);
            }

但是我有一次遇到这个错误:

But I one time got this error:

无法初始化类型为'Foundation.NSUrl'的实例: 本机的"initWithString:"方法返回零.有可能忽略 通过将ObjCRuntime.Class.ThrowOnInitFailure设置为 错误.

Could not initialize an instance of the type 'Foundation.NSUrl': the native 'initWithString:' method returned nil. It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false.

在大多数情况下是这样:

And most of the times this:

================================================ ==================本机崩溃报告 ================================================== ===============执行本机代码时得到了SIGSEGV.这通常表明是致命的 mono运行时或您使用的本机库之一中的错误

================================================================= 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

================================================ ==================本机堆栈跟踪: ================================================== ============== 0x10473c190- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x104732a00- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x10473fc54- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :mono_pmip 0x197a47894-/usr/lib/system/libsystem_platform.dylib: 0x10299027c- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x1029903c4- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102997b70- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102998154- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x1029980cc- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102995e74- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102993aec- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102992824- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x104714530- /private/var/containers/Bundle/Application/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/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x102d59af4- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x104742fb4- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :mono_pmip 0x1047dc688- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :mono_pmip 0x1047dfb40- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :mono_pmip 0x10299ce1c- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x10299cb14- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x19bd632f8- /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore: 0x197a05610-/usr/lib/system/libdispatch.dylib: 0x197a06184-/usr/lib/system/libdispatch.dylib: 0x1979e935c-/usr/lib/system/libdispatch.dylib: 0x197cb63c4- /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation: 0x197cb13b8- /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation: 0x197cb08bc- /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation: CFRunLoopRunSpecific 0x1a1b1c328- /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices :GSEventRunModal 0x102d59af4- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x104742fb4- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.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- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :mono_pmip 0x104727df0- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x10488da04- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :_Z9__isctypeim 0x1029d8f34- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x197b3b460-/usr/lib/system/libdyld.dylib:

================================================================= Native stacktrace: ================================================================= 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/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : mono_pmip 0x197a47894 - /usr/lib/system/libsystem_platform.dylib : 0x10299027c - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1029903c4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102997b70 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102998154 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1029980cc - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102995e74 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102993aec - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102992824 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x104714530 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x104702694 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1029da3ac - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x102d59af4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x104742fb4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : mono_pmip 0x1047dc688 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : mono_pmip 0x1047dfb40 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : mono_pmip 0x10299ce1c - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x10299cb14 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x19bd632f8 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : 0x197a05610 - /usr/lib/system/libdispatch.dylib : 0x197a06184 - /usr/lib/system/libdispatch.dylib : 0x1979e935c - /usr/lib/system/libdispatch.dylib : 0x197cb63c4 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : 0x197cb13b8 - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : 0x197cb08bc - /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation : CFRunLoopRunSpecific 0x1a1b1c328 - /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices : GSEventRunModal 0x102d59af4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x104742fb4 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.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 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : mono_pmip 0x104727df0 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x10488da04 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : _Z9__isctypeim 0x1029d8f34 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x197b3b460 - /usr/lib/system/libdyld.dylib :

================================================ ==================基本故障地址报告 ================================================== ===============本地指令指针(0x197a46f44)周围的内存:0x197a46f34 c0 03 5f d6 1f 20 03 0x19bd466d4- /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore: UIApplicationMain 0x103683020- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x1035dbc7c- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x1035dbc04- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(空)0x1029d9064- /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS :(null)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 .. = .. b. .... @. 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. ........ .

================================================================= Basic Fault Address Reporting ================================================================= Memory around native instruction pointer (0x197a46f44): 0x197a46f34 c0 03 5f d6 1f 20 03 0x19bd466d4 - /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore : UIApplicationMain 0x103683020 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1035dbc7c - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1035dbc04 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 0x1029d9064 - /private/var/containers/Bundle/Application/3DE84EC0-A042-42E6-8301-B233D104676A/MyAppName.iOS.app/MyAppName.iOS : (null) 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 .. =....b. .<.. @. 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 . ... ... .. . .<

================================================ ==================托管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>,位于

================================================================= Managed Stacktrace: ================================================================= at <0xffffffff> at ApiDefinition.Messaging:void_objc_msgSend_IntPtr_IntPtr_IntPtr <0x00007> at WindowsAzure.Messaging.SBNotificationHub:RegisterNative <0x00333>
at MyAppName.iOS.AppDelegate:RegisteredForRemoteNotifications <0x002db> at System.Object:runtime_invoke_dynamic <0x00103> at <0xffffffff> at UIKit.UIApplication:UIApplicationMain <0x00007> at UIKit.UIApplication:Main <0x0002b> at UIKit.UIApplication:Main <0x00043> at MyAppName.iOS.Application:Main <0x000a3> at

推荐答案

如果有人遇到相同的问题,我可以完成此工作,以下是工作代码. 与NuGet包一起使用:

I made this work if anyone has the same issue, below is the working code. Works with NuGet package:

Xamarin.Azure.NotificationHubs.iOS v2.0.4

Xamarin.Azure.NotificationHubs.iOS v2.0.4

  try
     {
           AzureNotifHub = new SBNotificationHub(HUB_LISTENSHARED_CONNSTRING, HUBNAME);

          // update registration with Azure Notification Hub
           await AzureNotifHub.UnregisterAllAsync(deviceToken);


           var tags = new NSSet(AppConstants.IOSSUBSCRIPTIONTAGS.ToArray());
           await AzureNotifHub.RegisterNativeAsync(deviceToken, tags);

           var templateExpiration = DateTime.Now.AddDays(120).ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-US"));
                    await AzureNotifHub.RegisterTemplateAsync(deviceToken, "defaultTemplate", AppConstants.IOS_APNS_TEMPLATE_BODY, templateExpiration, tags);
      }
      catch (Exception ex)
      {
           Debug.WriteLine(ex.Message);
      }

这篇关于Xamarin.iOS无法在iOS 13.1.2中向Azure通知中心注册的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆