我是离子开发的新手,正在使用以下代码(点击按钮事件)来确保在使用"离子服务"的web浏览器上执行时,本机插件调用代码不会中断/出错:
if (!this.platform.is('cordova')) {
console.warn('Push notifications not initialized. Cordova is not available - Run in physical device');
return;
}
--other wise run the native code..
我的问题是,当它在真实设备上运行时,if检查的输出究竟是什么?对于Android和iOS,平台是cordova吗?如果检查this.platform.is('Android')和this.platform.is('iOS'),我应该也写吗?
根据用户所在的平台,
is(platformName)
将返回CCD_ 2或CCD_。请注意,同一应用程序可以返回true
多个平台名称。例如,从iPad运行的应用程序将返回平台名称mobile
、ios
、ipad
的true
,和CCD_ 9。此外,如果该应用程序是从Cordova运行的,那么cordova
是真的,如果它是在则iPad的CCD_ 11将是CCD_。
现在回答您的问题
当它在真实设备上运行时,if检查的输出究竟是什么
如果您的应用程序(android、ios、windows)是使用cordova框架构建的,并安装到相应的设备中,那么this.platform.is("cordova")将返回true。
另一方面,如果您在任何web服务器上托管应用程序,并尝试通过移动浏览器访问它,那么this.platform.is('cordova')将返回false。
对于Android和iOS,平台是cordova 吗
是的,前提是您已经从cordova框架创建了本机应用程序(.apk,.ipa)。
如果您从移动设备访问浏览器中的web应用程序,则该平台不是cordova。
如果检查this.platform.is('Android')和this.platform.is('iOS'),我应该也写吗
取决于具体情况,在大多数情况下,如果您已经从cordova框架生成了本机应用程序(.apk,.ipa),并且您对这两个平台都有一些通用代码,那么这个.platform.is('cordova')就足够了。
您可以查看下表以获取参考
| Platform Name | Description |
* |-----------------|------------------------------------|
* | android | on a device running Android. |
* | cordova | on a device running Cordova. |
* | core | on a desktop device. |
* | ios | on a device running iOS. |
* | ipad | on an iPad device. |
* | iphone | on an iPhone device. |
* | mobile | on a mobile device. |
* | mobileweb | in a browser on a mobile device. |
* | phablet | on a phablet device. |
* | tablet | on a tablet device. |
* | windows | on a device running Windows. |
参考:https://ionicframework.com/docs/v3/api/platform/Platform/