Framework 7 & Cordova-plugin-fcm (iOS) - PullRequest
       26

Framework 7 & Cordova-plugin-fcm (iOS)

0 голосов
/ 20 ноября 2018

У меня большая проблема с использованием framework7 и Cordova-plugin-fcm.Вот мой код:

var app = new Framework7({
  root: '#app',
  theme: 'ios',
  tapHold: true,
  pushState: true,
  domCache: true,
    swipeout: {
    noFollow: true,
    removeElements: false,
  },
  init: false,
  on: {
    init: function () {
      setTimeout(gethetok, 20000);

      function gethetok() {
      FCMPlugin.getToken(function(token) {
        localStorage.fcmtok=token;
        console.log(token);
        if (token===null) {
          console.log('error');
        }
        FCMPlugin.onNotification(function(data) {
            console.log(data);
            if (data.wasTapped) {
      
               alert(JSON.stringify(data));
          } else {
       
           alert(JSON.stringify(data));
             }
        });
    });
  }
 }

Когда я тестирую свое приложение в XCode, я могу получить Instance Id от Firebase через несколько секунд (вот почему я включил "setTimeout (gethetok, 20000);").Я сделал все шаги правильно (включая GoogleService-info.plist и т. Д.).Я протестировал этот токен через консоль и могу получить уведомление.Моя проблема заключается в том, что я не могу сохранить через localStorage значение (идентификатор экземпляра).Я что-то не так делаю?

1 Ответ

0 голосов
/ 21 ноября 2018

Чтобы установить локальное хранилище, вам нужно написать его так:

// Set 
localStorage.setItem('yourKey','yourValue');

// get
var tkn=localStorage.getItem('yourKey'); 

Также убедитесь, что

Поместите загруженный файл 'GoogleService-Info.plist' вкорневая папка проекта Cordova для компиляции IOS.

Примечание: Я думаю, что вы можете использовать async / await .. или любое другое решение, чтобы убедиться, что вы получаете необходимые данные, вложенные в setTimeout(). ...иначе, если вы используете его только для тестирования ... не загружайте его в производство с setTimeout.

Удачи.

Обновление: @Billy Pap findответ, добавив Cordova.js в голову.

...