我在我的流星移动应用程序中使用Cordova的network information plugin。
全球助手
Template.registerHelper("equals", function (a, b) {
return (a == b);
});
Template.registerHelper ("networkType", function(){
return navigator.connection.type;
});
模板
{{#if equals networkType 'none' OR equals networkType 'unknown'}}
<div style="color:#f00;">WARNING: Looks like no Internet connection is active</div>
{{/if}}
它可以工作但仅在渲染模板时。如果我禁用wifi或3g连接,没有任何变化(我也尝试直接在模板中打印网络信息。它是静态的。)
如果网络连接类型不得暗示用户干预,如何使 networkInfo 全局帮助被动?
答案 0 :(得分:0)
这是未经测试但docs似乎很清楚:
鉴于您的模板代码,我将假设您只关心连接/未连接状态(不是不同设备可能不支持的特定连接类型)。此外,文档中的the browser-quirks部分表明Connedction.UNKNOWN是一个在线状态,所以我只检查Connection.NONE。
Meteor.startup(function(){
if (navigator.connection.type === Connection.NONE){
Session.set('networkState', 'Not Connected');
} else {
Session.set('networkState', 'Connected');
}
document.addEventListener("offline", function(){
Session.set('networkState', 'Not Connected');
}, false);
document.addEventListener("online", function(){
Session.set('networkState', 'Connected');
}, false);
});
Template.registerHelper ('networkOffline', function(){
return Session.get('networkState') === 'Not Connected';
}
{{#if networkOffline}}
<div style="color:#f00;">WARNING: Looks like no Internet connection is active</div>
{{/if}}
如果您需要在各种在线状态之间进行确定,则无法使用回调,并且需要设置轮询解决方案。用以下内容替换2个回调:
Meteor.setInterval(function(){
Session.set('networkState', navigator.connection.type);
}, 2000);