React-Native 获取iPhone手机型号

React-Native 获取iPhone手机型号
1、在xcode,在app(项目名)目录下,新建两个文件,文件名可以自定义:
IphonePlatform.h
IphonePlatform.m

IphonePlatform.h:

//TODO Iphone型号
#ifndef IphonePlatform_h
#define IphonePlatform_h


#endif /* IphonePlatform_h */

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface IphonePlatformManager : NSObject <RCTBridgeModule>

@end

IphonePlatform.m:

//TODO Iphone型号
#import <Foundation/Foundation.h>
#import <sys/utsname.h>

#import "IphonePlatform.h"
@implementation IphonePlatformManager

@synthesize bridge = _bridge;

//AppVersion:对接React-Native js的模块名称
RCT_EXPORT_MODULE(IphonePlatform);
//对外提供调用方法,Promise
RCT_REMAP_METHOD(getPlatform,
                  resolve:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
{
  struct utsname systemInfo;
  uname(&systemInfo);
  NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
  resolve(platform);
}

@end

react-native项目,在src/lib(目录自定义,我这里是放到lib)目录下,新建IphonePlatform.ts(文件名可以自定义)文件,文件内容:

import { NativeModules } from 'react-native';
export default NativeModules.IphonePlatform;

封装成工具方法:

import IphonePlatform from './IphonePlatform';

/**
 * 工具方法:获取Iphone型号
 */
function getIphonePlatform(): {
  platform: number | null;
} {
  const [data, setData] = useState<number | null>(null);
  useEffect(() => {
    if (Platform.OS === 'ios') {
      (async () => {
        const platform = await IphonePlatform.getPlatform();
        const version14 = ['iPhone14,7', 'iPhone14,8', 'iPhone15,2', 'iPhone15,3'];
        const version13 = ['iPhone14,4', 'iPhone14,5', 'iPhone14,2', 'iPhone14,3'];
        const version12 = ['iPhone13,1', 'iPhone13,2', 'iPhone13,3', 'iPhone13,4'];
        if (version14.includes(platform)) {
          setData(14);
        }
        else if (version13.includes(platform)) {
          setData(13);
        }
        else if (version12.includes(platform)) {
          setData(12);
        }
        else {
          setData(0);
        }
      })();
    }
    // 安卓返回0
    else {
      setData(0);
    }
  }, []);

  return {
    platform: data,
  };
}

// 使用方式:
const { platform: iPhonePlatform } = getIphonePlatform();

iPhone型号Identifier对应的iPhone版本在这里可以查看:
https://www.theiphonewiki.com/wiki/Models

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值