离子原生插件 - 平台检查 - 防止通过"离子服务"运行时浏览器中的代码中断



我是离子开发的新手,正在使用以下代码(点击按钮事件)来确保在使用"离子服务"的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运行的应用程序将返回平台名称mobileiosipadtrue,和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/

相关内容

  • 没有找到相关文章

最新更新