Ios FCM令牌在一段时间后刷新

Ios FCM令牌在一段时间后刷新,ios,firebase,xamarin.ios,firebase-cloud-messaging,Ios,Firebase,Xamarin.ios,Firebase Cloud Messaging,我已经开发了一个iOS应用程序,使用Xamarin和集成的FCM(Firebase Cloud Messaging)进行推送通知。它在开发阶段工作正常,但在通过试飞进行的beta测试中,FCM令牌会在一段时间后自动重新生成或刷新(在5-10分钟之间) 解决了。 我的观察是从相同的API 2不同的应用程序安装,这是造成问题。当我卸载了一个应用程序(这是以前的一个),只有捆绑ID是不同的)现在它的工作良好。几分钟后没有令牌自动刷新。那么这里有什么问题?在应用程序上更新令牌后,您需要更新服务器上的令牌

我已经开发了一个iOS应用程序,使用Xamarin和集成的FCM(Firebase Cloud Messaging)进行推送通知。它在开发阶段工作正常,但在通过试飞进行的beta测试中,FCM令牌会在一段时间后自动重新生成或刷新(在5-10分钟之间)

解决了。
我的观察是从相同的API 2不同的应用程序安装,这是造成问题。当我卸载了一个应用程序(这是以前的一个),只有捆绑ID是不同的)现在它的工作良好。几分钟后没有令牌自动刷新。

那么这里有什么问题?在应用程序上更新令牌后,您需要更新服务器上的令牌。在某些情况下,最初会生成初始(非APNs映射)令牌,然后当APNs准备就绪时,FCM会生成一个与APNs关联的新令牌,并通过令牌刷新回调返回该令牌。@GirishM几分钟后(少于10分钟)会自动刷新它。更新服务器上的令牌不是问题,我正在更新它。但问题是为什么它会被刷新?它在开发者模式下运行良好。我想解决这个问题,这样我就可以解决它并减少服务器调用。@ArthurThompson继续刷新令牌。不仅是第一次,而且每隔几分钟。
void TokenRefreshNotification(object sender, NSNotificationEventArgs e)
    {
        // This method will be fired everytime a new token is generated, including the first
        // time. So if you need to retrieve the token as soon as it is available this is where that
        // should be done.
        //var refreshedToken = InstanceId.SharedInstance.Token;
        var token = InstanceId.SharedInstance.Token;
        WriteLog("Token Refresh");
        ConnectToFCM();

        // TODO: If necessary send token to application server.
    }
    public static void ConnectToFCM()
    {
        Messaging.SharedInstance.Connect(error =>
        {
            if (InstanceId.SharedInstance.Token != null)
            {
                var token = InstanceId.SharedInstance.Token;
                //                    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Unknown)

                //                    ApnsTokenType = ApnsTokenType.Unknown;
                if (!Settings.DeviceId.Equals(token))
                {
                    Settings.DeviceId = token;
                    Console.WriteLine("Token Updated");
                }
            }

            Console.WriteLine($"Token: {InstanceId.SharedInstance.Token}");
        });
    }