【发布时间】:2017-01-13 06:39:34
【问题描述】:
我使用 Xamarin 和集成的 FCM(Firebase 云消息传递)开发了一个 iOS 应用程序来推送通知。它在开发阶段运行良好,但在通过试飞进行 Beta 测试时,FCM 令牌会在一段时间后(在 5-10 分钟之间)自动重新生成或刷新。
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}");
});
}
【问题讨论】:
-
那么这里的问题是什么?令牌在 App 上更新后,您需要在服务器上更新令牌。
-
在某些情况下,最初会生成一个初始(非 APNs 映射)令牌,然后当 APNs 准备就绪时,FCM 会生成一个与 APNs 关联的新令牌,并通过令牌刷新回调返回该令牌。
-
@GirishM 会在几分钟(不到 10 分钟)后自动刷新。在服务器上更新令牌不是问题,我正在更新它。但问题是为什么它刷新了?它在开发人员模式下工作正常。我想解决这个问题,以便我可以解决它并减少我的服务器调用。
-
@ArthurThompson 继续刷新令牌。不仅是第一次,而且每隔几分钟。
标签: ios firebase xamarin.ios firebase-cloud-messaging