React Native의 장치 정보입니다.
iOS Podfile은 최소 iOS 10으로 이동해야 합니다. 이 모듈의 v7은 더 이상 iOS9를 지원하지 않습니다.
npm 사용:
npm install --save react-native-device-info
또는 실을 사용하여:
yarn add react-native-device-info
Install Referrer 추적을 사용하려면 Proguard 구성에 이 구성을 추가해야 합니다.
-keep class com.android.installreferrer.api.** {
*;
}
릴리스 APK에서 hasGms() 관련 문제가 발생하는 경우 Proguard 구성에 다음 규칙을 추가하세요.
-keep class com.google.android.gms.common.** {*;}
이 모듈의 기본값은 AndroidX입니다. android/build.gradle
파일의 "ext" 블록에서 이와 유사한 라이브러리 버전을 구성해야 합니다.
.. .
ext {
// dependency versions
We have 3 options for deviceId :
// Option 1 (latest):
firebaseIidVersion = " 19.0.1 " // default: "19.0.1"
// Option 2 (legacy GooglePlay dependency but using AndroidX):
googlePlayServicesIidVersion = " 17.0.0 " // default: "17.0.0" - AndroidX
// Option 3 (legacy GooglePlay dependency before AndroidX):
googlePlayServicesIidVersion = " 16.0.1 "
// include as needed:
compileSdkVersion = " 28 " // default: 28 (28 is required for AndroidX)
targetSdkVersion = " 28 " // default: 28 (28 is required for AndroidX)
supportLibVersion = ' 1.0.2 ' // Use '28.0.0' or don't specify for old libraries, '1.0.2' or similar for AndroidX
mediaCompatVersion = ' 1.0.1 ' // Do not specify if using old libraries, specify '1.0.1' or similar for androidx.media:media dependency
supportV4Version = ' 1.0.0 ' // Do not specify if using old libraries, specify '1.0.0' or similar for androidx.legacy:legacy-support-v4 dependency
}
.. .
AndroidX가 아닌 버전이 필요한 경우 역방향 모드에서 jetifier 패키지를 사용해야 하며 해당 패키지와 함께 제공되는 설명서도 있습니다.
네이티브 모듈의 링크는 새로운 반응 네이티브 개발자에게 문제를 일으키는 빈번한 소스이며 "RNDeviceInfo가 null입니다" 등과 같은 오류가 발생합니다. 이러한 이유로 자동 링크가 구현되었으며 프로젝트에서 사용해야 합니다.
자동 링크는 모든 플랫폼에서 지원됩니다(React 네이티브의 창도 >= 0.63!).
이전 버전에서는 수동으로 연결해야 합니다. 이전 반응 네이티브 버전에 대한 지원은 제공되지 않지만 원할 경우 이 README의 이전 버전을 참조할 수 있습니다. 최신 버전의 반응 네이티브로 업그레이드하세요. 필요한 경우 인터넷에서 upgrade-helper
도구를 사용하십시오.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
많은 API는 플랫폼별로 다릅니다. 플랫폼에 대한 구현이 없는 경우 수신하게 되는 "기본" 반환 값은 문자열의 경우 "unknown"
, 숫자의 경우 -1
, 부울의 경우 false
입니다. 배열과 객체는 비어 있습니다(각각 []
및 {}
).
대부분의 API는 Promise를 반환하지만 동기적으로 작동하는 끝에 Sync
있는 해당 API도 있습니다. 예를 들어, 앱 시작의 첫 번째 부분에서 비동기 호출을 방지하기 위해 앱 부트스트랩 중에 isCameraPresentSync()
호출하는 것을 선호할 수 있습니다.
getUserAgentSync에 대한 참고사항
비동기 메서드 getUserAgent
두 플랫폼 모두에서 사용할 수 있지만 getUserAgentSync
는 Android에서만 지원됩니다.
이 저장소의 예제 앱은 모든 단일 API의 예제 사용법을 보여줍니다. 질문이 있는 경우 예제 앱을 참조하고, 문제가 있다고 생각되면 보고하기 전에 예제 앱을 사용하여 재현할 수 있는지 확인하세요. 감사합니다.
방법 | 반환 유형 | iOS | 기계적 인조 인간 | 윈도우 | 편물 | 비전OS |
---|---|---|---|---|---|---|
getAndroidId() | Promise<string> | ✅ | ||||
getApi레벨() | Promise<number> | ✅ | ||||
getApplicationName() | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise<Object> | ✅ | ✅ | ✅ | ||
getBaseOs() | Promise<string> | ✅ | ✅ | ✅ | ||
getBuildId() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getBattery레벨() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
getBootloader() | Promise<string> | ✅ | ||||
getBrand() | string | ✅ | ✅ | ✅ | ✅ | |
getBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
getBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise<boolean> | ✅ | ✅ | ✅ | ||
getCarrier() | Promise<string> | ✅ | ✅ | |||
get코드명() | Promise<string> | ✅ | ||||
getDevice() | Promise<string> | ✅ | ||||
getDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
getDeviceType() | string | ✅ | ✅ | ✅ | ||
getDisplay() | Promise<string> | ✅ | ||||
getDeviceName() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getDeviceToken() | Promise<string> | ✅ | ✅ | |||
getFirstInstallTime() | Promise<number> | ✅ | ✅ | ✅ | ✅ | |
지문 획득() | Promise<string> | ✅ | ||||
getFontScale() | Promise<number> | ✅ | ✅ | ✅ | ||
getFreeDisk스토리지() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
getFreeDiskStorageOld() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
하드웨어 가져오기() | Promise<string> | ✅ | ||||
getHost() | Promise<string> | ✅ | ✅ | |||
getHostNames() | Promise<string[]> | ✅ | ||||
getIp주소() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getIncremental() | Promise<string> | ✅ | ||||
getInstallerPackageName() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise<string> | ✅ | ✅ | ✅ | ||
getInstanceId() | Promise<string> | ✅ | ||||
getLastUpdateTime() | Promise<number> | ✅ | ||||
getMac주소() | Promise<string> | ✅ | ✅ | ✅ | ||
getManufacturer() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getMaxMemory() | Promise<number> | ✅ | ✅ | ✅ | ||
getModel() | string | ✅ | ✅ | ✅ | ✅ | |
파워스테이트() | Promise<object> | ✅ | ✅ | ✅ | ✅ | ✅ |
제품 가져오기() | Promise<string> | ✅ | ||||
getPreviewSdkInt() | Promise<number> | ✅ | ||||
getReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
get일련번호() | Promise<string> | ✅ | ✅ | |||
getSecurityPatch() | Promise<string> | ✅ | ||||
getStartupTime() | Promise<number> | ✅ | ✅ | ✅ | ||
getSystemAvailableFeatures() | Promise<string[]> | ✅ | ||||
getSystemName() | string | ✅ | ✅ | ✅ | ✅ | |
getSystemVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getTags() | Promise<string> | ✅ | ||||
getType() | Promise<string> | ✅ | ||||
getTotalDiskCapacity() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalDiskCapacityOld() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalMemory() | Promise<number> | ✅ | ✅ | ✅ | ✅ | |
getUniqueId() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getUsedMemory() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
getUserAgent() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
getUserAgentSync() | string | ✅ | ✅ | |||
버전 가져오기() | string | ✅ | ✅ | ✅ | ✅ | |
밝기를 얻습니다() | Promise<number> | ✅ | ||||
hasGms() | Promise<boolean> | ✅ | ||||
hasHms() | Promise<boolean> | ✅ | ||||
노치() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasSystemFeature() | Promise<boolean> | ✅ | ||||
isAirplaneMode() | Promise<boolean> | ✅ | ✅ | |||
isBatteryCharging() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | ✅ |
isEmulator() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
isKeyboardConnected() | Promise<bool> | ✅ | ||||
isLandscape() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
isLocation활성화() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
isMouseConnected() | Promise<bool> | ✅ | ||||
isHeadphonesConnected() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isWiredHeadphonesConnected() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isBluetooth헤드폰연결됨() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
is태블릿() | boolean | ✅ | ✅ | ✅ | ✅ | |
isLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isTabletMode() | Promise<bool> | ✅ | ||||
지원되는32BitAbis() | Promise<string[]> | ✅ | ||||
지원되는64BitAbis() | Promise<string[]> | ✅ | ||||
지원되는Abis() | Promise<string[]> | ✅ | ✅ | ✅ | ✅ | |
syncUniqueId() | Promise<string> | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise<string[]> | ✅ |
API 수준을 가져옵니다.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
API 레벨 보기
ANDROID_ID를 가져옵니다. 적절한 사용법은 API 문서를 참조하세요.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
애플리케이션 이름을 가져옵니다.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
제품의 기반이 되는 기본 OS 빌드입니다.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
장치의 배터리 수준을 0과 1 사이로 구성된 부동 소수점으로 가져옵니다.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
실제 배터리 수준을 얻으려면 애플리케이션에 대한 배터리 모니터링 모드를 활성화하십시오. 다음 코드를 추가하세요.
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
AppDelegate.m 애플리케이션:didFinishLaunchingWithOptions:
iOS 시뮬레이터에서는 -1을 반환합니다.
시스템 부트로더 버전 번호입니다.
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
장치 브랜드를 가져옵니다.
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
애플리케이션 빌드 번호를 가져옵니다.
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
애플리케이션 번들 식별자를 가져옵니다.
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
현재 장치에 카메라가 있는지 알려줍니다.
DeviceInfo . isCameraPresent ( )
. then ( ( isCameraPresent ) => {
// true or false
} )
. catch ( ( cameraAccessException ) => {
// is thrown if a camera device could not be queried or opened by the CameraManager on Android
} ) ;
- 카메라의 핫 추가/제거가 지원됩니다.
- 카메라의 물리적 존재 상태를 반환합니다. 카메라가 있지만 앱에 카메라 사용 권한이 없는 경우 isCameraPresent는 여전히 true를 반환합니다.
이동통신사 이름(네트워크 운영자)을 가져옵니다.
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
현재 개발 코드명 또는 릴리스 빌드인 경우 "REL" 문자열입니다.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
산업 디자인의 이름입니다.
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
장치 ID를 가져옵니다.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
사용자에게 표시하기 위한 빌드 ID 문자열입니다.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
장치 이름을 가져옵니다.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
이전에는 android.permission.BLUETOOTH가 필요했지만 v3의 새로운 구현에서는 필요하지 않습니다. 이 API에 대해 AndroidManifest.xml이 있는 경우 이를 제거할 수 있습니다. iOS 16 이상에서는 사용자 정의 장치 이름에 액세스하려면 권한이 필요합니다. 그렇지 않으면 일반 값이 반환됩니다(예: 'iPad', 'iPhone')
장치 토큰을 가져옵니다(DeviceCheck 참조). 실제 기기에서는 iOS 11.0 이상에서만 사용할 수 있습니다. getDeviceToken이 지원되지 않으면 약속이 거부됩니다. 예외 처리에 주의하세요.
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
앱이 처음 설치된 시간을 밀리초 단위로 가져옵니다.
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
이 빌드를 고유하게 식별하는 문자열입니다.
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
장치 글꼴 크기를 가져옵니다. 글꼴 크기는 현재 시스템 글꼴과 "일반" 글꼴 크기의 비율입니다. 따라서 일반 텍스트가 10pt이고 시스템 글꼴이 현재 15pt인 경우 글꼴 크기는 1.5가 됩니다. 이는 접근성 설정이 지정되었는지 확인하는 데 사용할 수 있습니다. 장치에 따라 변경되었습니다. 글꼴 크기가 상당히 큰 경우(> 2.0) 특정 보기를 다시 레이아웃할 수 있습니다.
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
루트 및 데이터 파일 시스템 계산을 모두 고려하여 사용 가능한 저장소 크기(바이트)를 가져오는 방법입니다.
iOS 에서 이 메소드는 다음과 같은 선택적 인수를 허용합니다.
'total'
: volumeAvailableCapacityKey
사용합니다.'important'
: volumeAvailableCapacityForImportantUsageKey
를 사용합니다.'opportunistic'
: volumeAvailableCapacityForOpportunisticUsageKey
사용합니다.자세한 내용은 볼륨 저장 용량 확인에 대한 Apple 설명서를 참조하십시오.
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
Android용 이 메서드에서 사용하는 API는 v6.0.0에서 변경되었습니다. 이전 버전은 아래에서 getFreeDiskStorageOld()
로 유지관리되었습니다. iOS에서 getFreeDiskStorage()
및 getFreeDiskStorageOld()
동일한 값을 반환합니다.
사용 가능한 저장소 크기(바이트)를 가져오는 메서드의 이전 구현입니다.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
개발자.Android.com에서:
이 메서드는 API 레벨 29에서 더 이상 사용되지 않습니다.
기본 공유/외부 저장소 디렉터리를 반환합니다.
참고: 여기서 "외부"라는 단어를 혼동하지 마십시오. 이 디렉터리는 미디어/공유 저장소로 생각하는 것이 더 좋습니다. 상대적으로 많은 양의 데이터를 보유할 수 있고 모든 애플리케이션에서 공유되는(권한을 적용하지 않음) 파일 시스템입니다. 전통적으로 이는 SD 카드이지만 보호되는 내부 저장소와는 별개로 장치에 내장 저장소로 구현될 수도 있고 컴퓨터에 파일 시스템으로 마운트될 수도 있습니다.
하드웨어 이름(커널 명령줄 또는 /proc에서).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
호스트 이름
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
더 이상 사용되지 않음 장치의 현재 IP 주소를 가져옵니다. (Wi-Fi에서만) React-native-netinfo/netinfo 또는 React-native-network-info로 전환
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
iOS에 대한 지원이 0.22.0에 추가되었습니다.
이 빌드를 나타내기 위해 기본 소스 제어에서 사용되는 내부 값입니다.
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
이 빌드를 나타내기 위해 기본 소스 제어에서 사용되는 내부 값입니다.
DeviceInfo . getInstallerPackageName ( ) . then ( ( installerPackageName ) => {
// Play Store: "com.android.vending"
// Amazon: "com.amazon.venezia"
// Samsung App Store: "com.sec.android.app.samsungapps"
// iOS: "AppStore", "TestFlight", "Other"
} ) ;
애플리케이션 설치 시 리퍼러 문자열을 가져옵니다.
DeviceInfo . getInstallReferrer ( ) . then ( ( installReferrer ) => {
// If the app was installed from https://play.google.com/store/apps/details?id=com.myapp&referrer=my_install_referrer
// the result will be "my_install_referrer"
} ) ;
애플리케이션 인스턴스 ID를 가져옵니다.
이는 다음 소스에서 다음 순서로 인스턴스 ID를 가져오려고 시도합니다.
react-native-device-info
의 instanceId
키 아래 값firebaseBomVersion
또는 firebaseIidVersion
Gradle ext에 정의된 경우 - 더 이상 사용되지 않음 )googlePlayServicesIidVersion
또는 googlePlayServicesVersion
gradle ext에 정의된 경우 - 더 이상 사용되지 않음 )더 이상 사용되지 않는 소스를 사용하는 경우 생성된 인스턴스 ID는 공유 기본 설정에 저장되므로 이 주요 버전의 React-native-device-info 동안 안정적입니다.
React-native-device-info의 향후 버전에서는 Firebase IID 및 GMS IID 구현이 제거될 예정이며, 모든 향후 값은 SharedPreferences에 저장된 값(있는 경우)이거나 새로운 임의의 UUID가 저장될 것입니다. 향후 해당 앱 설치에 사용됩니다.
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
https://developers.google.com/instance-id/를 참조하세요.