,所以我的应用程序运行,通知起初正常工作。但是过了一会儿就停止了。
我尝试通过Firebase控制台发送,并返回成功,但该应用程序未收到通知。该应用程序在后台,并且较早起作用,应用程序或服务器端都没有更改代码。
如果我重新安装了该应用程序(获取新的令牌(,则通知将恢复正常(按预期工作(,但是如果令牌到期,则不应firebase Console返回错误(注册令牌错误或其他内容(?<<<<<</p>
我使用该应用程序只有几天了,所以代币会到期(文档说令牌将在6个月内到期(?而且我知道,每当用户运行我的应用程序时,实际上强制执行令牌刷新是一种不好的方法。
所以我做错了什么?因为如果我调试我的应用程序,一切正常。获得令牌,收到通知。
是的,通过FCM控制台发送通知并通过服务器产生相同的结果;成功,但没有通知。
OntokenRefresh代码看起来像以下内容:
namespace FCMClient
{
[Service]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyFirebaseIIDService : FirebaseInstanceIdService
{
const string TAG = "MyFirebaseIIDService";
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
Log.Debug(TAG, "Refreshed token: " + refreshedToken);
SendRegistrationToServer(refreshedToken);
}
void SendRegistrationToServer(string token)
{
//a post request to my server
}
}
}
感谢您的任何见解。
这总是发生在我身上,这是一种错误或某些东西,我必须每次清洁和重建,这不会在发布时发生,您可以删除firebase实例并获取新的每当您调试时,每次运行应用程序时。
您可以将其写在您上
Task.Run(() => {
var instanceid = FirebaseInstanceId.Instance;
instanceid.DeleteInstanceId();
Log.Debug("TAG", "{0} {1}", instanceid.Token, instanceid.GetToken(this.GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope)); });
在firebase Console中添加调试指纹似乎可以解决问题。