我正在使用firebase云消息发送通知到设备。问题是设备令牌在应用程序的每次运行中重新生成并添加到firestore中的id不同。我希望它在应用程序的第一次安装中只生成一次。这是我的代码:
Future init() async {
_firebaseMessaging.getToken().then((token) {
saveTokens(token);
});
}
Future<void> saveTokens(var token) async {
try {
await _firestore.collection('deviceTokens').add({
'token': token,
});
} catch (e) {
print(e);
}
}
这就是我在main()中调用它的方式:
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
await _msgService.init();
// testFirestore();
FirebaseMessaging.onBackgroundMessage(_messageHandler);
这是_messageHandler函数:
Future<void> _messageHandler(RemoteMessage message) async {
print(
'background message ${message.notification!.body} + ${message.notification!.title}');
}
2条答案
按热度按时间laik7k3q1#
实际上,令牌仅在以下情况之一刷新:
所以你需要检查你的firebase集合,如果你的token(在
getToken()
上获得的)在添加之前已经保存了,如果它已经存在于你的数据库中,不要保存它。例如:
34gzjxbg2#
注册令牌可能会在以下情况下更改:
更多信息:
init state
)