在 react-native 中检测设备操作系统(不使用平台 api)

Posted

技术标签:

【中文标题】在 react-native 中检测设备操作系统(不使用平台 api)【英文标题】:Detecting the device OS in react-native (without using the platform api) 【发布时间】:2021-09-15 14:16:06 【问题描述】:

我正在尝试检测应用程序是在 android 还是 androidTV 上运行,但由于我问过 here 的问题,我无法使用 react-native's platform api。

还有其他软件包可以让我这样做吗?或者我可以自己用javascript写吗?

【问题讨论】:

【参考方案1】:

您可以使用来自react-native-device-info https://github.com/react-native-device-info/react-native-device-info#getDeviceType 的getDeviceType 助手

import React from 'react';
import  View, Text  from 'react-native';
import  getDeviceType  from 'react-native-device-info';

const deviceType = getDeviceType();

const App = () => 
  return (
    <View>
      <Text>deviceType</Text>
    </View>
  );
;

export default App;

【讨论】:

import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo'; ^^^^^^ SyntaxError: Cannot use import statement outside a module 我在尝试像这样导入时遇到此错误const info = require('react-native-device-info'); 您使用的是 Expo 还是 RN CLI? 我正在使用 RN CLI 你用的是什么版本的react-native包? react-native-tvos@^0.63.4-0【参考方案2】:

我不知道这是否会解决您的特定用例,但您可以通过在文件名中指定每个平台的特定文件:

index.android.js
index.ios.js

React Native 会根据平台选择使用哪个文件。

【讨论】:

我想为android和androidtv指定 搞砸了,只是重新阅读问题,您需要考虑创建自己的 NativeModule 来检测它是 android 还是 androidTV,检查 reactnative.dev/docs/native-modules-android【参考方案3】:

从 React Native 尝试平台模块

import  Platform  from "react-native"

isTV === Platform.constants.uiMode === "tv"

https://reactnative.dev/docs/platform#properties

【讨论】:

以上是关于在 react-native 中检测设备操作系统(不使用平台 api)的主要内容,如果未能解决你的问题,请参考以下文章

React-Native .apk 文件在更高版本的 android 设备中失败

在 react-native.config.js 中检测开发环境

在 React-Native 移动应用程序中检测角速度

在 React-Native 中检测和处理慢速互联网连接

你如何检测是不是在 react-native 中点击了屏幕的右半部分?

以真实设备为目标时,无法在 IOS 中构建 react-native