Flutter Firebase сообщений, приложение IOS не получает токен - PullRequest
0 голосов
/ 11 октября 2018

Я настроил передачу сообщений в базе данных Firebase в приложении.Он использует плагин Firebase .Я настроил в соответствии с разделом «Интеграция iOS» из readme.Firebase запускается в main.dart

void main() async {
  final FirebaseMessaging _firebaseMessaging = new FirebaseMessaging();
  _firebaseMessaging.requestNotificationPermissions();
  _firebaseMessaging.configure(onMessage: processMessage,
      onLaunch: processLaunch,
      onResume: processResume);
  String token = await _firebaseMessaging.getToken();
  print("fcm token is: $token");
  runApp(TestApp());
}

Future<dynamic> processMessage(Map<String, dynamic> map) async {
  print("received message:");
  print(map);
}

Future<dynamic> processLaunch(Map<String, dynamic> map) async {
  print("processing launch");
  print(map);
}

Future<dynamic> processResume(Map<String, dynamic> map) async {
  print("processing resume");
  print(map);
}

Проблема в том, что приложение не получает токен.Поэтому я развертываю приложение на физическом устройстве, приложение запускается, но не видит никаких выводов, связанных с fcm, и пользовательский интерфейс не отображается.Я вижу следующие журналы в IDEA:

5.10.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: .
5.10.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. If you'd prefer to manually integrate Firebase Messaging, add "FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow the instructions at:
https://firebase.google.com/docs/cloud-messaging/ios/client#method_swizzling_in_firebase_messaging

Где может быть проблема?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

По состоянию на 11 октября 2018 года реализация getToken неисправна (см. Проблемы 17699 и 20378 ).

Есть запрос на получение , чтобы исправить это, но он все еще ожидает ответа.

На данный момент, чтобы избежать проблем с getToken, я бы предложил послушать onTokenRefresh (это то, что я делаю).

Я не тестировал приведенный ниже код, но это всего лишь пример того, как вы должны адаптировать свой код.

String _token;

void main() async {
  final FirebaseMessaging _firebaseMessaging = new FirebaseMessaging();
  _firebaseMessaging.requestNotificationPermissions();

  Stream<String> fcmStream = _firebaseMessaging.onTokenRefresh;
  fcmStream.listen((token) {
    // saveToken(token);
    print("fcm token is: $token");
    _token = token;     
  });

  _firebaseMessaging.configure(onMessage: processMessage,
      onLaunch: processLaunch,
      onResume: processResume);

  runApp(TestApp());
}
0 голосов
/ 11 октября 2018

Это начало работать, когда я переместил код firebase на TestApp, похоже, что main.dart - неправильное место для кода fcm.Я поместил это в initState.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...