在 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 中检测开发环境