我写了一个脚本来检测是否有wifi连接。但是,我注意到,如果应用程序在没有wifi连接的情况下启动,则启动画面将加载,然后我将获得白屏。控制台显示此错误:
无法加载资源:net :: ERR_INTERNET_DISCONNECTED
这是我检测wifi的脚本,它位于&ion; $ ionicPlatform.ready':
$rootScope.$on('$cordovaNetwork:offline', function(event, networkState)
{
connectionerror($ionicPopup)
})
//display error msg and close the app.
function connectionerror($ionicPopup,$scope)
{
var myPopup = $ionicPopup.show({
title: 'Network Error',
content: 'No internet connectivity detected. Please try again.',
buttons: [
{
text: '<b>Retry</b>',
type: 'button-positive',
onTap: function(e)
{
if (!$cordovaNetwork.isOnline())
{
e.preventDefault();
}
else
{
$state.reload();
}
}
}]
});
}
如何修复它以便在启动画面后,如果没有wifi,则会显示消息?
答案 0 :(得分:0)
当您尝试从PC加载资源时,会发生错误。如果您正在运行离子服务或离子服务直播并断开wifi,应用程序将尝试使用wifi从您的电脑加载模板并且无法完成。
要测试该脚本,您应该构建应用程序并在设备上运行它。
如果它正常工作,控制器应该以不同的方式工作。看起来应该更像这样:
.controller('controller', function($scope, $rootScope, $state, $ionicPopup, $cordovaNetwork){
$rootScope.$on('$cordovaNetwork:offline', function(event, networkState)
{
connectionerror()
})
//display error msg and close the app.
function connectionerror()
{
var myPopup = $ionicPopup.show({
title: 'Network Error',
content: 'No internet connectivity detected. Please try again.',
buttons: [
{
text: '<b>Retry</b>',
type: 'button-positive',
onTap: function(e)
{
if (!$cordovaNetwork.isOnline())
{
e.preventDefault();
}
else
{
//go to a state like index or home instead of reload. Reload resets the application and should be avioded in single page apps
$state.go('...');
}
}
}]
});
}
})