Cordova DeviceRady在iOS中未开火
我正在使用Ionic构建我的混合应用程序。 在Android上,我的应用程序运行得很好。现在我正在为iOS构建它,但我的全部内容都被包装在里面Cordova DeviceRady在iOS中未开火,ios,cordova,ionic-framework,Ios,Cordova,Ionic Framework,我正在使用Ionic构建我的混合应用程序。 在Android上,我的应用程序运行得很好。现在我正在为iOS构建它,但我的全部内容都被包装在里面 document.addEventListener('deviceready', function () { console.log('dashboard -> device ready'); // copy database to the device DbAccess.copyDb(); }, false); 不会在iOS中激发
document.addEventListener('deviceready', function () {
console.log('dashboard -> device ready');
// copy database to the device
DbAccess.copyDb();
}, false);
不会在iOS中激发
我用iOS模拟器试过了
$ ionic emulate ios --livereload
并检查了console.log
结果:
1 709252 log deviceready has not fired after 5 seconds.
2 709253 log Channel not fired: onCordovaInfoReady
我遵循了我在这里和通过谷歌找到的建议,但不幸的是没有任何成功(删除ios和重新添加等)
我的版本:
Cordova: 6.1.1
Ionic: 1.7.14
My index.html中的我的安全设置:
<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *">
e、 g:
当我用iOS模拟器测试它时,它仍然失败并在console.log中抛出“deviceready”错误。我用
$ionicPlatform.ready(function () {
...
})
它在真实的设备上工作,我从未在模拟器上测试过。
我不认为内容安全策略是您无法获得该活动的原因。我用
$ionicPlatform.ready(function () {
...
})
它在真实的设备上工作,我从未在模拟器上测试过。
我不认为内容安全策略是您无法获得该事件的原因。如果您使用的是Ionic,那么为什么您要手动使用
文档。addEventListener('deviceready',function()
the$ionicPlatform.ready
会给您与cordova的“deviceready”相同的结果,无需再次调用deviceready
另外,您不应该将ready函数放在控制器的custom函数中。不应该这样使用
$scope.logInSubmit = function (details) {}
$ionicPlatform.ready(function() {
console.log('dashboard -> device ready');
//you can load your plugins or custom objects inside this device ready
}
或
如果您查看爱奥尼亚的示例,您将更好地了解这两个项目(例如:爱奥尼亚启动myApp选项卡)
在Ionic中,您的代码可以是这样的
$scope.logInSubmit = function (details) {}
$ionicPlatform.ready(function() {
console.log('dashboard -> device ready');
//you can load your plugins or custom objects inside this device ready
}
如果您使用的是Ionic,那么手动使用
document.addEventListener('deviceready',function()
the$ionicPlatform.ready
的结果与cordova的“deviceready”相同,无需再次调用deviceready
另外,您不应该将ready函数放在控制器的custom函数中。不应该这样使用
$scope.logInSubmit = function (details) {}
$ionicPlatform.ready(function() {
console.log('dashboard -> device ready');
//you can load your plugins or custom objects inside this device ready
}
或
如果您查看爱奥尼亚的示例,您将更好地了解这两个项目(例如:爱奥尼亚启动myApp选项卡)
在Ionic中,您的代码可以是这样的
$scope.logInSubmit = function (details) {}
$ionicPlatform.ready(function() {
console.log('dashboard -> device ready');
//you can load your plugins or custom objects inside this device ready
}
谢谢@simon schüpbach!我现在更改了代码(请参阅我编辑的帖子),但在模拟器中仍然失败。我在我的内容安全策略中添加了gap://ready,之后,一切正常。谢谢@simon schüpbach!我现在更改了代码(请参阅我编辑的帖子)但它在模拟器中仍然失败。我在我的内容安全策略中添加了gap://ready,之后,一切正常。谢谢@Pyro!我不知道“document.addEventListener('devicerady',function()”已经包括“$ionicPlatform.ready”@Stefanblatmann补充参考:如果这个答案对你有帮助,请勾选正确答案。thanks@Pyro在控制器内部使用ready函数有什么不对?如果您想在控制器内部执行一些插件操作,则必须等待开发准备就绪。@SimonSchüpbach可以在任何控制器内部使用它。我是说,除了默认函数之外,在任何控制器的自定义函数中调用都是不好的。默认函数也更新了answerThank@Pyro!我不知道“document.addEventListener('devicerady',function()”已经包括“$ionicPlatform.ready”@Stefanblatmann补充参考:如果这个答案对你有帮助,请勾选正确答案。thanks@Pyro在控制器内部使用ready函数有什么不对?如果您想在控制器内部执行一些插件操作,则必须等待开发准备就绪。@SimonSchüpbach可以在任何控制器内部使用它。我是说,在任何控制器的自定义函数中调用都是不好的,除了默认函数之外。默认函数也更新了答案