当我收到通知并关闭应用程序时,在离子(v1)应用程序上的iOS上出现问题。我使用插件cordova-plugin-firebase。 小的“ 1”徽章很好地显示在图标上。但是,当我单击通知时(或仅通过单击应用程序图标打开应用程序时),应用程序会随机冻结在初始屏幕上。问题在于,有时该应用程序可以很好地打开,有时会冻结,而我还没有找出原因。
我认为Firebase插件可能未加载,因此我在代码中放置了许多安全措施和“ if”语句,但仍然冻结。
最重要的是,到目前为止,我还无法在控制台中捕获错误消息。每次我尝试捕获此错误时,实际上该应用程序都能很好地打开...
github上的问题:https://github.com/arnesson/cordova-plugin-firebase/issues/811
这是我的主控制器中有关通知管理的代码的摘录:
var firebase_ready = function() {
if(typeof cordova != "undefined" && cordova && typeof window.FirebasePlugin != "undefined" && window.FirebasePlugin) {
try {
var saveToken = function(token) { // Save token
if(token !== null && token !== ''){
window.localStorage.setItem('firebase_token',token);
onNotificationOpen();
}
};
var errorToken = function(err) { // Error token
console.log('error retrieving firebase token: ' + err);
};
var manageToken = function(success) {
if(success) {
window.FirebasePlugin.getToken(saveToken, errorToken);
window.FirebasePlugin.onTokenRefresh(saveToken, errorToken);
}
};
var onNotificationOpen = function() {
window.FirebasePlugin.onNotificationOpen(function(data){
//Notification received on device tray and tapped by the user. [In background]
if(typeof data != "undefined" && data && data.tap){
console.log('Notification BG');
} else if(typeof data != "undefined" && data){ // App in foreground
console.log('Notification FG');
if(typeof data.aps != "undefined" && data.aps && data.aps.badge) {
var badgeNum = angular.isNumber(data.aps.badge) ? parseInt(data.aps.badge) : 0;
window.FirebasePlugin.setBadgeNumber(badgeNum);
} else if(typeof data.notification != "undefined" && data.notification && data.notification.badge) {
var badgeNum = angular.isNumber(data.notification.badge) ? parseInt(data.notification.badge) : 0;
window.FirebasePlugin.setBadgeNumber(badgeNum);
}
}
}, function(msg){ console.log('onNotification callback successfully registered: ' + msg); },
function(err){ console.log('Error registering onNotification callback: ' + err); }
);
};
if($ionicPlatform.is('ios')) {
window.FirebasePlugin.hasPermission(function(data){
if(!data.isEnabled) {
window.FirebasePlugin.grantPermission(manageToken, errorToken);
} else {
manageToken(true);
}
});
}
} catch(e) { console.log('Error firebase: ' + e); }
}
};
$ionicPlatform.ready(function() {
$timeout(function() { // I tried with a timeout here without any success
firebase_ready();
},200);
});