因此,FirebaseInstanceIdService
发出警告,它已被贬值且已过时。
OnTokenRefresh()
不再起作用,我们应该使用:
public void onNewToken(String s) {
Log.d("FCM_TOKEN", s);
// save in SharedPreference for future use
}
但是-为了在MainActivity中获得令牌,我以前使用过:
FirebaseInstanceId.Instance.Token
这也不推荐使用,我只能为此找到Java解决方案:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String token = instanceIdResult.getToken();
Log.d("FCM_TOKEN",token);
}
});
能否让我知道如何在C#(Xamarin)中获取当前令牌?
问题2:在C#中,OnNewToken()
的这种实现是否可行:
public class MessagingService : FirebaseMessagingService
{
const string TAG = "MyFirebaseMsgService";
public override void OnNewToken(string token)
{
Log.Debug(TAG, "Refreshed token: " + token);
SendToServer(token);
}
}
谢谢你!
答案 0 :(得分:-1)
1)我也正在为我的项目使用Firebase Cloud Messaging。我不认为弃用FirebaseInstanceId.Instance.Token
有两个原因。首先,我没有您所说的任何警告。其次,Microsoft的FCM Notifications Walkthrough最近进行了更新,并且没有提到不赞成使用该属性。
2) FirebaseMessagingService
用于处理收到的通知(或消息),而不用于处理令牌。例如,如果您的应用服务器正在向客户端(设备)发送消息(how to send a message),则FirebaseMessagingService
是您在客户端接收和处理消息的地方。另外,如果您在类 FirebaseMessagingService -> “转到定义” 上右键单击,您会发现没有 一个OnNewToken()
覆盖。
第1季度和第2季度走到一起,我猜您希望通过以下类似方式检索注册令牌并将其发送到您的应用服务器。
[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)
{
// send token to app server
}
}
以上代码是从演练中提取的。我的解释是简短而不完整的。您应该阅读本演练以更好地理解。