3
votes

HI !

I’m trying to add notifications on my xamarin iOS app with Azure Notification Hub.

After following this tutorial ( https://docs.microsoft.com/en-us/azure/notification-hubs/xamarin-notification-hubs-ios-push-notification-apns-get-started ) , i’m encountering an issue on my appdelegate.cs file : the RegisteredForRemoteNotifications method is never triggered so my app cannot register on my hub.

All permissions for notifications have been completed, settings too, I did a lot of research and none of the solutions worked in my case. I have already tried Xamarin.iOS RegisteredForRemoteNotifications not called

In my FinishedLaunching method i have :

if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
{
        UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound, (granted, error) => 
        {
            if (granted)
            {
                    InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
            }
        });
}
else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
{
        var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());
        UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
        UIApplication.SharedApplication.RegisterForRemoteNotifications();
}
else
{
        UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
        UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
}

And my RegisteredForRemoteNotifications method is :

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {
            Hub = new SBNotificationHub(Constants.ListenConnectionString, Constants.NotificationHubPath);

            Hub.UnregisterAllAsync(deviceToken, (error) => {
                if (error != null)
                {
                        Console.WriteLine("Error calling Unregister: {0}", error.ToString());
                        return;
                }

            NSSet tags = null; // create tags if you want
            Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => {
                    if (errorCallback != null)
                        Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
            });
        });
    }
1
are you testing the app on emulator ? or a real device ?Ronak Shethia
on a real deviceAndyClergot

1 Answers

1
votes

Have you checked the provisioning profiles?

Go to https://developer.apple.com/ > Account > Certificates > Provisioning Profiles

enter image description here

One is needed for production and one for development. Create it and download it on your Mac.

I hope that helps.