Флаттер: невозможно отправить уведомления Firebase pu sh - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь отправить FireBase Pu sh уведомления через флаттер. Ниже приведен код

Future<Map<String, dynamic>> sendAndRetrieveMessage(String fcmToken, String title, String msg) async {

    await _firebaseMessaging.requestNotificationPermissions(
      const IosNotificationSettings(
          sound: true, badge: true, alert: true, provisional: false),
    );

    await http.post(
      'https://fcm.googleapis.com/fcm/send',
      headers: <String, String>{
        'Content-Type': 'application/json',
        'Authorization': 'key=$serverToken',
      },
      body: convert.jsonEncode(
        <String, dynamic>{
          'notification': <String, dynamic>{'body': msg, 'title': title},
          'priority': 'high',
          'data': <String, dynamic>{
            'click_action': 'FLUTTER_NOTIFICATION_CLICK',
            'id': '1',
            'status': 'done'
          },
          'to': fcmToken,
        },
      ),
    ).then((http.Response response){
      final int statusCode = response.statusCode;

        print("RESPONSE: " + response.body);
        print("STATUS CODE: " + statusCode.toString());

        if (statusCode < 200 || statusCode > 400 || response.body == null) {
          throw new Exception("Error while fetching data");
        }
    });
  }

Ниже приведена ошибка, которую я получаю

RESPONSE: {"multicast_id":8498089791993785359,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"NotRegistered"}]}

Удивительно, но я могу использовать тот же токен FCM через консоль пользовательского интерфейса Firebase для отправки сообщений. Это просто работает.

Обновление

для поля to. Если я использую код await _firebaseMessaging.getToken(), я не получаю сообщение об ошибке, и оно передается. Выше предназначен для получения FCM того же пользователя, который является string.

Я знаю, что мой токен fcm других пользователей не является неправильным, потому что при использовании в консоли Firebase он работает.

В чем здесь проблема?

1 Ответ

0 голосов
/ 24 апреля 2020

Ошибка была простой ошибкой, я понял это. В приложении для получения уведомлений я регистрировал себя в FCM на странице register , а также на странице login . Я сохраняю только токен, сгенерированный при регистрации, поэтому у меня просто нет нового токена, сгенерированного на странице входа.

Решение состоит в том, чтобы удалить код регистрации FCM на странице login .

...