Flutter中的Firebase(FCM)注册令牌

aja*_*tla 6 java android firebase flutter firebase-cloud-messaging

我正在尝试从Java Rest Api(使用Firebase Admin sdk)向我的Flutter应用程序发送通知,似乎它需要设备令牌才能发送通知,而我找不到如何获取该令牌。我是Flutter和android的新手,可能缺少任何关键步骤。如果可以,请你帮助我。谢谢。

Rah*_*dik 7

将此添加到包的pubspec.yaml文件中:

dependencies:
  firebase_messaging: ^4.0.0+1
Run Code Online (Sandbox Code Playgroud)

您可以从命令行安装软件包:

使用Flutter:

$ flutter packages get
Run Code Online (Sandbox Code Playgroud)

现在,在Dart代码中,您可以使用:

import 'package:firebase_messaging/firebase_messaging.dart';
Run Code Online (Sandbox Code Playgroud)

实现方式:

FirebaseMessaging _firebaseMessaging = FirebaseMessaging();



@override
void initState() {
  super.initState();
  firebaseCloudMessaging_Listeners();
}

void firebaseCloudMessaging_Listeners() {
  if (Platform.isIOS) iOS_Permission();

  _firebaseMessaging.getToken().then((token){
    print(token);
  });

  _firebaseMessaging.configure(
    onMessage: (Map<String, dynamic> message) async {
      print('on message $message');
    },
    onResume: (Map<String, dynamic> message) async {
      print('on resume $message');
    },
    onLaunch: (Map<String, dynamic> message) async {
      print('on launch $message');
    },
  );
}

void iOS_Permission() {
  _firebaseMessaging.requestNotificationPermissions(
      IosNotificationSettings(sound: true, badge: true, alert: true)
  );
  _firebaseMessaging.onIosSettingsRegistered
      .listen((IosNotificationSettings settings)
  {
    print("Settings registered: $settings");
  });
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请逐步参考链接

希望这对您有帮助

  • 为了即使在应用程序打开或正在运行时也显示通知,您可以使用 flutter_local_notifications 依赖项。请检查此 git 存储库以获取更多信息 https://github.com/nitishk72/firebase_messaging_flutter/blob/master/lib/main.dart (3认同)

Neh*_*waj 6

你可以使用 firebase 消息插件来发送通知。通过此代码,您可以在控制台中打印 Token。

final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.configure(
    onLaunch: (Map<String, dynamic> message) {
      print('onLaunch called');
    },
    onResume: (Map<String, dynamic> message) {
      print('onResume called');
    },
    onMessage: (Map<String, dynamic> message) {
      print('onMessage called');
    },
  );
  _firebaseMessaging.subscribeToTopic('all');
  _firebaseMessaging.requestNotificationPermissions(IosNotificationSettings(
    sound: true,
    badge: true,
    alert: true,
  ));
  _firebaseMessaging.onIosSettingsRegistered
      .listen((IosNotificationSettings settings) {
    print('Hello');
  });
  _firebaseMessaging.getToken().then((token) {
    print(token); // Print the Token in Console
  });
}
Run Code Online (Sandbox Code Playgroud)


Cop*_*oad 6

使用firebase_messaging: ^10.0.0,您可以使用直接获取令牌

String? token = await FirebaseMessaging.instance.getToken();
Run Code Online (Sandbox Code Playgroud)

或者

FirebaseMessaging.instance.getToken().then((value) {
  String? token = value;
});
Run Code Online (Sandbox Code Playgroud)


Far*_*Haq -11

不过我不清楚你的问题。对于 FCM,您必须扩展 FirebaseMessagingService。

例子:

class PNPFirebaseMessagingService : FirebaseMessagingService() {
  override fun onNewToken(token: String?) {
     // you can collect token from here
  }
}
Run Code Online (Sandbox Code Playgroud)