FCM Messaging.SharedInstance.FcmToken не установлен при первой регистрации в моем приложении Xamarin.iOS - PullRequest
0 голосов
/ 06 февраля 2019

Мы используем Xamarin.Firebase.iOS.CloudMessaging для получения Push-уведомлений.

Работает нормально, за исключением одной причуды.

При первой установке приложения RegisteredForRemoteNotificationsвызывается, но Messaging.SharedInstance.Fcmtoken не установлено.

Когда приложение впоследствии запускается, оно устанавливается .

Нам нужен токен FCM, чтобы мы могли отправить его внаш внутренний сервер.

Как я могу получить токен FCM при первой установке?

Мой код:

    public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {
        // NOTE that the token passed in here is the Apple APNS token.
        // We need the Firebase FCM Token -  this is what is used to manage token sending in Firebase.

        Messaging.SharedInstance.ApnsToken = deviceToken;

        // Why is this empty the first time the app runs?
        var fcmToken = Messaging.SharedInstance.FcmToken;

        Debug.WriteLine($"RegisteredForRemoteNotifications token:'{deviceToken}'");

        // This method can be called with no FCM Token set - so only do something when we've got the token
        if (!string.IsNullOrEmpty(fcmToken))
        {
            Debug.WriteLine($"RegisteredForRemoteNotifications fcmtoken:'{Messaging.SharedInstance.FcmToken}'");

            // Subscribe to a 'news' topic so we can send to just those subscribed to this topic
            Messaging.SharedInstance.Subscribe("news");

            // TODO - we will need to send the fcmToken to the back-end server, with the user details, so that the back-end server
            // can then manage notifications and send targetted Notifications to the specific user (e.g. a warning that their policy is expiring soon).
            //SendPushNotificationTokenToTempcoverServer(fcmToken);
        }

    }

1 Ответ

0 голосов
/ 06 февраля 2019

Решение состоит в том, чтобы пометить класс AppDelegate как IMessagingDelegate.После этого вместо метода RegisteredForRemoteNotifications вызывается метод DidReceiveRegistrationToken.

В нем в качестве аргумента token указан токен FCM.

...