代码之家  ›  专栏  ›  技术社区  ›  variable

离子本机插件-平台检查-防止通过“离子服务”运行时浏览器中的代码中断

  •  0
  • variable  · 技术社区  · 6 年前

    我刚接触到爱奥尼亚开发,正在使用下面的代码(单击按钮事件),以确保在使用“爱奥尼亚服务”的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-check的输出究竟是什么?对于Android和iOS,平台是Cordova吗?我是否还应该写下检查这个.platform.is(‘android’)和这个.platform.is(‘ios’)的信息?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rathnakara S    6 年前

    取决于用户所处的平台, is(platformName) 将 返回 true false . 请注意,同一个应用程序可以返回 对于 多个平台名称。例如,从iPad上运行的应用程序 会回来 平台名称: mobile , ios , ipad , 和 tablet . 另外,如果应用程序是从科尔多瓦运行的,那么 cordova 如果是从网页浏览器运行 然后是iPad mobileweb 将是 .

    现在回答你的问题

    当它在一个真实的设备上运行时,if-check的输出究竟是什么?

    如果您是应用程序(Android、iOS、Windows),则使用cordova框架构建并安装到相应的设备中,则此.platform.is(“cordova”)将返回true。

    另一方面,如果您将应用程序托管在任何Web服务器上,并尝试通过移动浏览器访问它,则此.platform.is(“cordova”)将返回false。

    对于Android和iOS,是Cordova平台 ?

    是的,仅当您从Cordova框架创建了本机应用程序(.apk,.ipa)时。

    如果您从移动设备访问浏览器中的Web应用程序,则平台不是Cordova。

    我是否还应该写下检查这个.platform.is(‘android’)和这个.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/