Framework 7和Cordova-plugin-fcm(iOS)

时间:2018-11-20 15:24:58

标签: ios firebase cordova html-framework-7 cordova-plugin-fcm

使用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中测试我的应用程序时,几秒钟后我可以从Firebase接收实例ID(这就是为什么我包含“ setTimeout(gethetok,20000);”)。我已经正确完成了所有步骤(包括GoogleService-info.plist等)。我已经通过控制台测试了此令牌,并且可以收到通知。我的问题是我无法通过localStorage存储值(实例ID)。我在做错什么吗?

1 个答案:

答案 0 :(得分:0)

要设置本地存储,您需要这样编写:

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

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

还要确保

  

将下载的文件“ GoogleService-Info.plist”放入科尔多瓦   IOS编译的项目根目录。

注意:我认为您可以使用async / await ..或任何其他解决方案来确保您嵌套了所需的数据,setTimeout(). ...否则,如果仅将其用于测试用例...不能使用setTimeout将其上传到生产环境。

祝你好运。

更新: @Billy Pap通过在头部添加Cordova.js来找到答案。