如何使用 Ionic 4 检测平台

2024-02-24

如何使用 Ionic 4 检测浏览器和移动网络平台,因为当我在桌面浏览器中尝试使用以下代码时,它没有落入‘core’健康)状况。

if (this.platform.is('core')) {
    alert('core platform');
  } else {
    alert('something else');
  }

当我在 chrome 开发者工具中进行调试时,它显示'安卓'平台如下快照所示。

谁能帮助我如何检测 Ionic 4 中的平台或者有什么替代方案?


对于我的用例,我想要一些东西来区分native and browser平台。也就是说,我的应用程序是在浏览器还是本机移动设备中运行。这是我想出的服务:

import { Injectable } from '@angular/core';
import {Platform} from '@ionic/angular';


type CurrentPlatform = 'browser' | 'native';

@Injectable({
  providedIn: 'root'
})
export class CurrentPlatformService {

  private _currentPlatform: CurrentPlatform;

  constructor(private platform: Platform) {
    this.setCurrentPlatform();
  }

  get currentPlatform() {
    return this._currentPlatform;
  }

  isNative() {
    return this._currentPlatform === 'native';
  }
  isBrowser() {
    return this._currentPlatform === 'browser';
  }

  private setCurrentPlatform() {
    // Are we on mobile platform? Yes if platform is ios or android, but not desktop or mobileweb, no otherwise
    if (
        this.platform.is('ios')
        || this.platform.is('android')
        && !( this.platform.is('desktop') || this.platform.is('mobileweb') ) ) {
      this._currentPlatform = 'mobile';
    } else {
      this._currentPlatform = 'browser';
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Ionic 4 检测平台 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 如何使用 Angular 2 动画实现翻转效果?

    我一直在我的项目中使用纯CSS翻转卡片 但这个解决方案不是合适的 有人可以通过点击按钮来呈现角度 2 的翻转吗 我在 angularjs 中找到了一个https codepen io Zbeyer pen oXQrZg https code
  • 在 Angular 中深度复制对象

    AngularJS 有angular copy 深度复制对象和数组 Angular 也有类似的东西吗 您还可以使用 JSON parse JSON stringify Object 如果它在你的范围内 那么它就存在于每个 Angular 组
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • Typescript 模块解析的根路径

    我有两个使用打字稿的项目 一个是核心项目 moduleA 另一个是业务项目 moduleB 项目B使用项目A的模块 ts文件 位于 scripts文件夹 我想通过以下方式为projectB指定模块解析根文件夹projectA scripts
  • Angular - 为每个请求设置标头

    我需要在用户登录后为每个后续请求设置一些授权标头 要为特定请求设置标头 import Headers from angular2 http var headers new Headers headers append headerName
  • 第二个函数参数的条件类型

    我有以下功能 function doSomething param1 string param2 string return param1 param2 我也有基于 json 的类型 其结构看起来与此类似 a1 b1 something1
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • Angular 5 - 在加载数据之前停止未定义对象的错误

    防止控制台中因仍未定义的对象而出现错误的最佳方法是什么 假设我有这个 name string constructor private data DataService this data name subscribe res gt this
  • 资产未考虑基本 href url - 未找到错误

    我刚刚在 Webform 项目中复制了 Angular 构建脚本 并将该项目部署到 IIS 中 注意 我只复制了脚本文件 没有单独部署在 IIS 中 我已将 Angular dist 文件夹复制到 Webform 项目的 Scripts 文
  • 编辑角度材质的表格单元格填充

    当我使用开发人员工具检查该元素时 它显示零填充 但是当我查看它并将鼠标悬停在它上面时 它非常清楚地在单元格内具有填充 我不知道这是从哪里来的 并且设置td padding 0 important 什么也没做 感知到的填充是由以下原因引起的d
  • tsc-watch 是否消耗 TSC_NONPOLLING_WATCHER?

    我正在从事微服务集成项目 我使用同时运行 8 个打字稿服务tsc watch preserveWatchOutput onSuccess node build index js 即使我根本不编写源代码 这些进程也会消耗 70 的 CPU 我
  • 如何转义角度 HttpParams?

    在 Angular 服务中 我使用 HttpParams 将字符串发送到服务 get phone string Observable
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • 使用服务中的可观察量测试错误情况

    假设我有一个订阅服务功能的组件 export class Component ngOnInit this service doStuff subscribe data IData gt doThings data error Error g
  • Angular 以什么方式解决重复的指令/组件选择器?

    如果我包含两个模块 它们都使用相同的选择器定义组件或指令 可以说a routerLink ModuleA 使用选择器定义指令a routerLink ModuleB 使用选择器定义指令a routerLink AppModule 包括模块和
  • 观众:覆盖单个测试的提供者(角度通用)

    我构建了一个小型角度应用程序 现在正在编写单元测试 到目前为止一切顺利 但是当我尝试测试我的 authGuard 时 我遇到了一些问题 我在用观众 https github com ngneat spectator 我在规范的提供者部分中提
  • 如何禁用 ng2-dragula 上的某些元素的拖动

    我想在顶部显示名称组并取消其上的拖动事件 如何禁用移动某些元素 例如该组名称位于顶部 我的代码是 dragulaService drag subscribe value gt console log drag value 0 我的模板 di
  • Typescript,装饰异步函数

    我正在尝试用一些异步函数 2 来装饰异步函数 1 E g function func2 param return target any propertyKey string descriptor PropertyDescriptor gt
  • 如何在角度材料的下拉菜单中显示表单?

    我想展示一个简单的form 如下图所示 作为dropdown当icon被点击 我查看了角材料的组件列表 但找不到任何合适的组件 有menu https material angular io components menu overview

随机推荐

  • ISR 和中断处理程序之间有区别吗?

    我正在研究操作系统 并且遇到了 ISR 和中断处理程序这两个术语 它们是同一机制的两个词吗 如果不是 有什么区别 中断处理程序和 ISR 没有区别 Wiki http en wikipedia org wiki Interrupt hand
  • 如何保持Javascript数组排序,而不对其进行排序

    我有一个 Node js 应用程序 我必须经常执行以下操作 检查特定数组是否已包含特定元素 如果元素确实存在 则更新它 如果元素不存在 则将其推入数组 然后使用下划线 sortBy对其进行排序 为了检查该元素是否已存在于数组中 我使用这个二
  • 资源解释为样式表但使用 mime 类型文本普通问题进行传输?

    我正在 Apache 2 2 中工作 我的本地主机打开了我的网页 但没有应用 CSS 也没有加载背景图像 我不知道为什么 使用 Chrome 开发者工具时 我收到以下警告 resource interpreted as stylesheet
  • Delphi 7 到 Delphi XE2 .res 文件问题

    当我在 Delphi XE2 中打开 Delphi 7 项目并打开项目选项时 出现错误 Unable to set Icon Cannot open file AppName Icon ico The system cannot find
  • 在深度嵌套的目录树中定义子项目

    如何在嵌套目录树中定义子项目 其中子项目文件夹不是根项目的直接子项目 root lala A lulu B 现在我想将 A 和 B 添加为子项目 如果我做 settings gradle include lala A lulu B 然后 l
  • AFNetworking SSL 固定过期证书

    如果 iOS 应用程序使用 ssl pinning 如何更新过期的 ssl 证书 似乎只有应用程序更新才能更新证书 但不更新应用程序的用户将不会收到此更新 关键是要理解可能的值 https github com AFNetworking A
  • 如何在文档中嵌入作用域 html (css)

    我需要能够将从远程 api 获取的 HTML 片段 嵌套元素和 CSS 嵌入到我的文档中 这样它们的 CSS 就不会影响我的整个文档 我需要获取 随机 gmail 消息 HTML 并将它们嵌入到我的网站中 问题是大多数消息都有 CSS 标签
  • ES6 中的二维数组

    长话短说 我正在寻找一种使用 ES6 创建和填充 2D 数组的方法 以避免for循环 创建的数组应包含全 0 我尝试了很多不同的方法 所以我无法发布所有这些方法 var r c 5 5 var m Array r fill Array c
  • 如何阻止 Visual Studio“总是”检查解决方案文件?

    显然没有任何原因 每次我打开解决方案时 Visual Studio 都会检查 sln 文件 如果我将它与以前的版本进行比较 没有任何变化 但这确实令人沮丧 因为每个人都检查了解决方案 我使用的是 VS 2008 和 TFS 2008 都是
  • IOS UIImageView 显示为黑色背景

    所以我有这个可扩展的函数UIImages 我用它来初始化UIImageView带有图像 我的问题是 当显示图像时 它周围总是有一个黑色矩形 尽管图像是背景完全透明的 png 这是缩放方法以及初始化UIImageView UIImage im
  • AngularJS 错误:缩小后的 $injector:modulerr

    嘿伙计们我收到一个错误Error injector modulerr当我缩小 Angular JS 1 应用程序时 到目前为止 我已经研究过这是我调用依赖项的方式HomeController但是我不确定我可能哪里出错了 我注意到这里有一些预
  • JavaScript 括号将原始类型转换为对象

    如果数字是原始类型 为什么我可以这样做 gt 12345 toString 12345 括号是将原始类型转换为Number 不 括号只是让解析器理解 不是小数点 12345 toString 也会起作用 每当您访问原始数字的属性时 原始数字
  • 如何在 scrapy pipelines.py 文件中导入 django 模型

    我正在尝试在 pipelines py 中导入一个 django 应用程序的模型 以使用 django orm 保存数据 我在第一个涉及的 django 应用程序 app1 中创建了一个 scrapy 项目 scrapy project 顺
  • 如何更改 MDI 子窗口图标?

    看下图 我已经创建了Sub Window动态地 我尝试使用setWindowIcon函数如下 mdiWindows gt setWindowIcon QIcon icon ico 但效果不佳 另请参阅以下代码 MDI 窗口创建 QWidge
  • 如何使用 Google Apps 脚本显示 Google Drive 图像?

    如果我使用 Google 教程页面中的以下内容来加载图像 则效果很好 第一个 Google 涂鸦 app add app createImage http www google com logos googleburn jpg 但如果我尝试
  • 在控制器中访问另一个 CakePHP 模型的最佳方法是什么?

    假设我有两个这样的控制器Table1sController and Table2sController 对应型号 Table1sModel Table2sModel In the Table1sController 我懂了 this gt
  • 在本机 iPhone 应用程序中的 UIWebView 中使用 InnerHTML 是否存在错误?

    我有一个相当大的 HTML JS CSS 应用程序 在 iPhone 上使用 Safari 作为 Web 应用程序运行时效果非常好 当在本机 iPhone 应用程序中的 UIWebView 中运行相同的应用程序时 在 jQuery 中调用创
  • Vim,如何自动删除“_”的空行?

    怎样才能让Vim总是删除内容到 当我们删除空行时 N dd or d motion EDIT1 例如 我写过 Hello 某处 然后用yy 然后我将光标移动到其他地方 删除一些空白行N dd到 而没有明确指示寄存器 然后我可以走一条正确的线
  • (撰写)Common Lisp

    我们在 P Graham 的 ANSI Common Lisp 第 110 页 中找到了这个函数构建器来实现组合 参数是 n gt 0 带引号的函数名称 我不完全理解它 所以我将在这里引用代码并在下面指出我的问题 defun compose
  • 如何使用 Ionic 4 检测平台

    如何使用 Ionic 4 检测浏览器和移动网络平台 因为当我在桌面浏览器中尝试使用以下代码时 它没有落入 core 健康 状况 if this platform is core alert core platform else alert