I know with React Native that we have the ability to determine whether iOS or Android is being run using the Platform
module, but how can we determine what device i
if using TypeScript, there is a type in react-native called PlatformIOSStatic
, you need to force-cast Platform
to PlatformIOSStatic
.
import { Platform, PlatformIOSStatic } from 'react-native'
if (Platform.OS === 'ios') {
const platformIOS = Platform as PlatformIOSStatic
console.log(platformIOS.isPad)
console.log(platformIOS.isTVOS)
}
The interface design here is pretty bad, hope RN team would improve it.
A good solution by @Maxwelll. A more accurate approach would be to measure the screen ratio. All iPhones are 16:9, all iPads are 3:4.
I used isTablet() to detect ipad with iphone https://github.com/rebeccahughes/react-native-device-info
import { isTablet } from 'react-native-device-info';
if (isTablet()) {
// try something
}
Simplest approach will be using the aspect ratio. The code will be:
import { Dimensions } from 'react-native';
const {height, width} = Dimensions.get('window');
const aspectRatio = height/width;
if(aspectRatio>1.6) {
// Code for Iphone
}
else {
// Code for Ipad
}
Aspect ratio of iPad is 4:3 (1.334) and aspect ratio of iPhone is 16:9 (1.778)
Make sure to check if you are on an iOS device using Platform.OS === 'ios'
method before applying the above logic.