Meteor Cordova应用程序:如何在iOS或Android上运行不同的代码
我们需要在iOS或Android上运行不同的代码 一种方法是在包文件的开始(在所有代码运行之前)运行包中的不同代码 Meteor.isCordova允许确定是在Cordova上还是在浏览器上 如何在Cordova内部确定是在iOS还是Android上 以下是一些不起作用的代码,因为在此阶段尚未定义Platform.isIOS():Meteor Cordova应用程序:如何在iOS或Android上运行不同的代码,cordova,meteor,Cordova,Meteor,我们需要在iOS或Android上运行不同的代码 一种方法是在包文件的开始(在所有代码运行之前)运行包中的不同代码 Meteor.isCordova允许确定是在Cordova上还是在浏览器上 如何在Cordova内部确定是在iOS还是Android上 以下是一些不起作用的代码,因为在此阶段尚未定义Platform.isIOS(): if (Meteor.isCordova && Platform.isIOS()) { Meteor.startup(function ()
if (Meteor.isCordova && Platform.isIOS()) {
Meteor.startup(function () {
console.log('Using plugin for iOS');
});
} else {
console.log('Using plugin for Android');
}
这与这里提出的问题不同:
因为关键是要在Meteor构建过程中更早地检测到这一点(也不要使用PhoneGap本身)。这里提供的答案在当前环境下不起作用
Template.registerHelper('ios',function(){
return ( navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false );
});
And another for Android:
Template.registerHelper('android',function(){
return navigator.userAgent.toLowerCase().indexOf("android") > -1;
});
然后
在Cordova中,您可以使用检索有关正在运行的设备的信息 一旦安装,您将使用
device.platform
以确定正在哪个平台上运行
例如:
if (device.platform === 'Android') {
// Android only code
}
if (device.platform === 'iOS') {
// iOS only code
}
最后,对于这种情况,我们最好的解决办法是创建两个独立的应用程序服务器实例:一个用于ios和android。然后,我们将每种设备上的cordova版本的应用程序指向相应的服务器实例和url(ios.server.com、android.server.com)。它们都指向同一个Mongo数据库,所以所有的用户信息等最终都在同一个地方 这不是最优雅的解决方案,但确实有效。通过使软件包与这两个平台兼容,最终可能是一个更好的结果,我们可能会这样做,但这使我们能够启动并运行
这有一个小的好处,即将负载分离到两个实例中,从而便于分别处理这两种情况,并通过不同的服务器实例分别控制和监视它们的负载,等等。创建合并项目主目录中的文件夹(不在www中)在里面创建iphone/android文件夹。然后添加依赖于平台的文件,cordova将在构建应用程序时复制该文件 如果您在www目录中有相同的文件,您应该使用相同的路径创建新文件,例如merges/android/js/controllers/myController.js将特定文件夹的文件替换为www/js/controllers/myController.js
注意:如果您只想替换all文件中的一个函数,这是可以完成的,但更复杂。要做到这一点,您应该使用Cordova Hooks。阅读相关内容,并创建一个脚本,将代码的特定部分复制到您想要的文件中…依赖导航器的答案的可能副本不起作用,因为在此阶段尚未定义。副本中的第二个答案不使用
navigator
。我无法使其起作用。模板本身在这个阶段还没有定义,所以我得到package.js:9:1:Template没有定义。谢谢你的帮助。我无法让它工作,设备在onDeviceReady之后才定义(这在现阶段还不是真的,我迫不及待地等待,否则就我所知,设备永远不会准备好)。谢谢。也许可以尝试一些类似于为每个平台合并的方法,这些方法可以更改一些CSS类,您可以使用这些类在运行时计算出哪个平台。查看在Cordova中设置合并功能的示例。或者为每个平台使用一个预构建钩子&让钩子脚本将“ios”类添加到ios的HTML主体中,将“android”添加到android主体中,然后使用标准domapi计算出哪个主体类和您所在的平台。
if (device.platform === 'Android') {
// Android only code
}
if (device.platform === 'iOS') {
// iOS only code
}