Не получаю уведомления Twilio Chat Pu sh (Ioni c & Firebase) - PullRequest
0 голосов
/ 31 января 2020

У меня проблема, которую я пытался отладить в течение нескольких дней и потерял надежду. У меня есть мобильное приложение Ioni c с бэкэндом Firebase. Я пытаюсь написать чат Twilio. Я сейчас пытаюсь заставить его работать на iOS. Вот что я сделал до сих пор:

  1. Я создал ключ авторизации APN в учетной записи разработчика Apple. (Я также проверил это, используя сертификат APN)
  2. Я добавил ключ авторизации APN в консоль Firebase. (Я также проверил это, используя сертификат APN)
  3. Я проверил отправку уведомления pu sh с консоли Firebase, и мне удалось его успешно получить. пока никаких проблем.
  4. Затем я добавил секретный ключ FCM в Twilio.
  5. Настроил мое приложение Ioni c для получения токена FCM с использованием Ioni c Firebase SDK (https://github.com/dpa99c/cordova-plugin-firebasex). После получения токена FCM я передаю токен FCM Twilio.
  6. Настроил приложение Ioni c для обработки уведомления при получении уведомления.
  7. Попытка отправки сообщения чата. Уведомление не получено. Когда я открываю приложение, я вижу, что Firebase SDK правильно регистрирует уведомления.

Почему я не получаю уведомление, когда приложение не открыто? Лог c явно работает, потому что Firebase SDK действительно получает уведомление, когда я открываю приложение. Это также, похоже, не является проблемой с какими-либо настройками приложения, потому что я смог получить уведомление, когда приложение находится в фоновом режиме, при отправке уведомления непосредственно из Firebase.

Это мой внутренний код, который генерирует токен доступа Twilio:

    // Twilio credentials and ids are defined here...

    const chatGrant = new ChatGrant({
        serviceSid: twilioServiceSid,
        pushCredentialSid: credentialSid
    });

    const token = new AccessToken(twilioAccountSid, twilioApiKey, twilioApiSecret, {
        identity: uid
    });

    token.addGrant(chatGrant);
    return token.toJwt();

Это фрагмент моего кода Ioni c, который получает токен FCM с устройства и передает его Twilio

async getToken(): Promise<string> {

  let token: string;

  if (this.platform.is('ios')) {
    const hasPermission = await this.firebaseNative.hasPermission();

    if (!hasPermission) {
      try {
        await this.firebaseNative.grantPermission();
      } catch (e) {
        console.error('Error granting permission', e);
        throw e;
      }
    }

    try {
      token = await this.firebaseNative.getToken();
    } catch (e) {
      console.error('Error getting FCM token', e);
      throw e;
    }

  }

  return token;
}

setPushRegistrationId(token: string) {
    return this.twilioClient.setPushRegistrationId('fcm', token);
}

getToken().then(async (token) => {
    console.log('fcm token: ' + token);
    setPushRegistrationId(token)
        .then(() => console.log('Added registration token'))
        .catch(e => console.error('Error registering fcm token', e));

}).catch(e => {
    console.error('Error getting FCM token', e);
    console.error(e);
});

Пожалуйста, помогите! Спасибо 10

1 Ответ

0 голосов
/ 31 марта 2020

Недавно я обнаружил, что Twilio отправляет только данные для FCM. Это означает, что вам нужно обрабатывать фоновые нажатия и решать, отображать их локально или нет.

...