معلومات الجهاز لـ React Native.
سيحتاج ملف iOS Podfile الخاص بك إلى الانتقال إلى نظام التشغيل iOS 10 كحد أدنى. الإصدار 7 من هذه الوحدة لم يعد يدعم iOS9.
باستخدام npm:
npm install --save react-native-device-info
أو باستخدام الغزل:
yarn add react-native-device-info
إذا كنت تريد استخدام تتبع مُحيل التثبيت، فستحتاج إلى إضافة هذا التكوين إلى تكوين Proguard الخاص بك
-keep class com.android.installreferrer.api.** {
*;
}
إذا كنت تواجه مشكلات مع hasGms() في تطبيقات الإصدار الخاصة بك، فيرجى إضافة القاعدة التالية إلى تكوين Proguard الخاص بك
-keep class com.google.android.gms.common.** {*;}
هذه الوحدة افتراضيًا هي AndroidX، ويجب عليك تكوين إصدارات مكتبتك المشابهة لتلك الموجودة في كتلة "ext" الخاصة بملف android/build.gradle
.. .
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 is null" وما إلى ذلك. ولهذا السبب تم تنفيذ الارتباط التلقائي، ويجب استخدامه في مشروعك.
يتم دعم الارتباط التلقائي لجميع الأنظمة الأساسية (حتى النوافذ الموجودة على React الأصلي >= 0.63!)
تحتاج الإصدارات السابقة إلى القيام بالربط اليدوي. لا يتم تقديم أي دعم لهذه الإصدارات السابقة من التفاعل الأصلي ولكن يمكنك الرجوع إلى الإصدارات الأقدم من هذا الملف التمهيدي إذا أردت. الترقية إلى الإصدارات الحديثة من رد الفعل الأصلي. استخدم أداة upgrade-helper
على الإنترنت إذا لزم الأمر.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
لاحظ أن العديد من واجهات برمجة التطبيقات (APIs) خاصة بالنظام الأساسي. إذا لم يكن هناك تنفيذ للنظام الأساسي، فإن قيم الإرجاع "الافتراضية" التي ستتلقاها هي "unknown"
للسلسلة، -1
للرقم، false
للقيمة المنطقية. ستكون المصفوفات والكائنات فارغة ( []
و {}
على التوالي).
تُرجع معظم واجهات برمجة التطبيقات (APIs) وعدًا ولكنها تحتوي أيضًا على واجهة برمجة تطبيقات مقابلة مع Sync
في النهاية تعمل بشكل متزامن. على سبيل المثال، قد تفضل استدعاء isCameraPresentSync()
أثناء تشغيل تطبيقك لتجنب المكالمات غير المتزامنة أثناء الأجزاء الأولى من بدء تشغيل التطبيق.
ملاحظة حول getUserAgentSync
على الرغم من أن الطريقة غير المتزامنة getUserAgent
متاحة على كلا النظامين الأساسيين، إلا أن getUserAgentSync
مدعوم فقط على Android.
يعرض التطبيق النموذجي الموجود في هذا المستودع مثالًا لاستخدام كل واجهة برمجة تطبيقات فردية، واستشر التطبيق النموذجي إذا كانت لديك أسئلة، وإذا كنت تعتقد أنك ترى مشكلة، فتأكد من أنه يمكنك إعادة إنتاجها باستخدام التطبيق النموذجي قبل الإبلاغ عنها، شكرًا لك.
طريقة | نوع الإرجاع | دائرة الرقابة الداخلية | أندرويد | ويندوز | ويب | VisionOS |
---|---|---|---|---|---|---|
getAndroidId() | Promise | ✅ | ||||
getApiLevel() | Promise | ✅ | ||||
اسم التطبيق () | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise | ✅ | ✅ | ✅ | ||
getBaseOs() | Promise | ✅ | ✅ | ✅ | ||
getBuildId() | Promise | ✅ | ✅ | ✅ | ✅ | |
الحصول على مستوى البطارية () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getBootloader() | Promise | ✅ | ||||
الحصول على العلامة التجارية () | string | ✅ | ✅ | ✅ | ✅ | |
getBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
getBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
احصل على كاريير () | Promise | ✅ | ✅ | |||
الحصول على اسم الرمز () | Promise | ✅ | ||||
الحصول على الجهاز () | Promise | ✅ | ||||
معرف الجهاز () | string | ✅ | ✅ | ✅ | ✅ | |
getDeviceType() | string | ✅ | ✅ | ✅ | ||
الحصول على العرض () | Promise | ✅ | ||||
getDeviceName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getDeviceToken() | Promise | ✅ | ✅ | |||
getFirstInstallTime() | Promise | ✅ | ✅ | ✅ | ✅ | |
الحصول على بصمة () | Promise | ✅ | ||||
getFontScale() | Promise | ✅ | ✅ | ✅ | ||
الحصول على FreeDiskStorage() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
الحصول على FreeDiskStorageOld () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
الحصول على الأجهزة () | Promise | ✅ | ||||
احصل على المضيف () | Promise | ✅ | ✅ | |||
getHostNames() | Promise | ✅ | ||||
getIpAddress() | Promise | ✅ | ✅ | ✅ | ✅ | |
الحصول على تزايدي () | Promise | ✅ | ||||
getInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
getInstanceId() | Promise | ✅ | ||||
الحصول علىLastUpdateTime() | Promise | ✅ | ||||
الحصول على عنوان ماك () | Promise | ✅ | ✅ | ✅ | ||
getManufacturer() | Promise | ✅ | ✅ | ✅ | ✅ | |
getMaxMemory() | Promise | ✅ | ✅ | ✅ | ||
الحصول على النموذج () | string | ✅ | ✅ | ✅ | ✅ | |
الحصول على باور ستيت () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
الحصول على المنتج () | Promise | ✅ | ||||
الحصول علىPreviewSdkInt() | Promise | ✅ | ||||
الحصول على نسخة قابلة للقراءة () | string | ✅ | ✅ | ✅ | ✅ | |
الحصول على الرقم التسلسلي () | Promise | ✅ | ✅ | |||
getSecurityPatch() | Promise | ✅ | ||||
getStartupTime() | Promise | ✅ | ✅ | ✅ | ||
ميزات النظام المتوفرة () | Promise | ✅ | ||||
اسم النظام () | string | ✅ | ✅ | ✅ | ✅ | |
الحصول على SystemVersion () | string | ✅ | ✅ | ✅ | ✅ | |
الحصول على العلامات () | Promise | ✅ | ||||
الحصول على النوع () | Promise | ✅ | ||||
getTotalDiskCapacity() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalDiskCapacityOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalMemory() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUniqueId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUsedMemory() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getUserAgent() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUserAgentSync() | string | ✅ | ✅ | |||
الحصول على النسخة () | string | ✅ | ✅ | ✅ | ✅ | |
الحصول على السطوع () | Promise | ✅ | ||||
hasGms() | Promise | ✅ | ||||
hasHms() | Promise | ✅ | ||||
لديه نوتش () | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasSystemFeature() | Promise | ✅ | ||||
وضع الطائرة () | Promise | ✅ | ✅ | |||
isBatteryCharging() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
isEmulator() | Promise | ✅ | ✅ | ✅ | ✅ | |
isKeyboardConnected() | Promise | ✅ | ||||
isLandscape() | Promise | ✅ | ✅ | ✅ | ✅ | |
isLocationEnabled() | Promise | ✅ | ✅ | ✅ | ✅ | |
isMouseConnected() | Promise | ✅ | ||||
isHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isWiredHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isBluetoothHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise | ✅ | ✅ | ✅ | ✅ | |
isTablet() | boolean | ✅ | ✅ | ✅ | ✅ | |
isLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isTabletMode() | Promise | ✅ | ||||
المدعومة32BitAbis () | Promise | ✅ | ||||
مدعوم64BitAbis () | Promise | ✅ | ||||
مدعومأبيس () | Promise | ✅ | ✅ | ✅ | ✅ | |
متزامنةUniqueId () | Promise | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise | ✅ |
يحصل على مستوى API.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
راجع مستويات واجهة برمجة التطبيقات (API).
يحصل على ANDROID_ID. راجع وثائق API للاستخدام المناسب.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
يحصل على اسم التطبيق.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
يعتمد نظام التشغيل الأساسي الذي يبني المنتج عليه.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
يحصل على مستوى بطارية الجهاز كطفو يتكون بين 0 و1.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
لتتمكن من الحصول على مستوى البطارية الفعلي، قم بتمكين وضع مراقبة البطارية للتطبيق. أضف هذا الكود:
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
إلى تطبيق AppDelegate.m:didFinishLaunchingWithOptions:
إرجاع -1 على جهاز محاكاة iOS
رقم إصدار أداة تحميل النظام.
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 في إرجاع القيمة الحقيقية
يحصل على اسم الناقل (مشغل الشبكة).
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
الاسم الرمزي للتطوير الحالي، أو السلسلة "REL" إذا كان هذا إصدارًا.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
اسم التصميم الصناعي .
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
يحصل على معرف الجهاز.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
سلسلة معرف البناء مخصصة للعرض للمستخدم.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
يحصل على اسم الجهاز.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
كان هذا يتطلب android.permission.BLUETOOTH ولكن التنفيذ الجديد في الإصدار 3 لا يحتاج إليه. يمكنك إزالة ذلك من 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 في الإصدار 6.0.0. تم الاحتفاظ بالإصدار الأقدم أدناه باسم getFreeDiskStorageOld()
. على نظام التشغيل iOS، getFreeDiskStorage()
و getFreeDiskStorageOld()
بإرجاع نفس القيمة.
التنفيذ القديم للطريقة التي تحصل على حجم التخزين المتاح بالبايت.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
من موقع Developer.android.com:
تم إهمال هذه الطريقة في مستوى API 29.
قم بإرجاع دليل التخزين المشترك/الخارجي الأساسي.
ملحوظة: لا تخلط بينك وبين كلمة "خارجي" هنا. من الأفضل اعتبار هذا الدليل بمثابة وسائط/تخزين مشترك. إنه نظام ملفات يمكنه الاحتفاظ بكمية كبيرة نسبيًا من البيانات ويتم مشاركتها عبر جميع التطبيقات (لا يفرض الأذونات). تقليديًا، هذه بطاقة SD، ولكن يمكن أيضًا تنفيذها كتخزين مدمج في جهاز يختلف عن وحدة التخزين الداخلية المحمية ويمكن تركيبها كنظام ملفات على جهاز كمبيوتر.
اسم الجهاز (من سطر أوامر kernel أو /proc).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
اسم المضيف
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
مهمل للحصول على عنوان IP الحالي للجهاز. (لشبكة wifi فقط) قم بالتبديل إلى 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"
} ) ;
يحصل على معرف مثيل التطبيق.
يحاول هذا الحصول على معرف المثيل من هذه المصادر، بالترتيب التالي:
instanceId
الرئيسي في ملف SharedPreferences react-native-device-info
firebaseBomVersion
أو firebaseIidVersion
في ملحق gradle - مهمل )googlePlayServicesIidVersion
أو googlePlayServicesVersion
في ملحق gradle - مهمل )إذا كنت تستخدم المصادر المهملة، فسيتم تخزين معرف المثيل الذي تم إنشاؤه في التفضيلات المشتركة بحيث يكون مستقرًا أثناء هذا الإصدار الرئيسي من 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/
يحصل على الوقت الذي تم فيه تحديث التطبيق آخر مرة، بالمللي ثانية.
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
يحصل على عنوان MAC لمحول الشبكة.
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS: تُرجع هذه الطريقة دائمًا "02:00:00:00:00:00" نظرًا لأن استرداد عنوان MAC معطل منذ iOS 7
يحصل على الشركة المصنعة للجهاز.
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
إرجاع الحد الأقصى لحجم الذاكرة التي سيحاول الجهاز الافتراضي استخدامها، بالبايت.
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
يحصل على طراز الجهاز.
تحذير iOS: يتم الاحتفاظ بقائمة أسماء الأجهزة بواسطة المجتمع وقد تتأخر الأجهزة الجديدة. يوصى باستخدام getDeviceId()
لأنه أكثر موثوقية ومحدث دائمًا مع أجهزة iOS الجديدة. نحن نقبل طلبات السحب التي تضيف أجهزة iOS جديدة إلى القائمة بأسماء الأجهزة.
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
تمت إزالة getPhoneNumber(). تستخدم هذه الطريقة واجهات برمجة تطبيقات Android المهملة. يمكنك استخدام React-native-sim-cards-manager للحصول على رقم الهاتف.
يحصل على حالة طاقة الجهاز بما في ذلك مستوى البطارية، وما إذا كان متصلاً، وما إذا كان النظام يعمل حاليًا في وضع الطاقة المنخفضة. يعرض تحذيرًا على نظام التشغيل iOS إذا لم يتم تمكين مراقبة البطارية، أو إذا تمت محاولتها على أحد المحاكي (حيث لا تكون المراقبة ممكنة)
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
اسم المنتج الشامل.
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
مراجعة معاينة المطور لإصدار SDK التجريبي.
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
الحصول على نسخة قابلة للقراءة من قبل الإنسان (مثل getVersion() + '.' + getBuildNumber())
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
يحصل على الرقم التسلسلي للجهاز. سيكون "غير معروف" في جميع الحالات تقريبًا ما لم يكن لديك تطبيق مميز وتعرف ما تفعله.
DeviceInfo . getSerialNumber ( ) . then ( ( serialNumber ) => {
// iOS: unknown
// Android: ? (maybe a serial number, if your app is privileged)
// Windows: ? (a serial number, if your app has the "capability smbios")
} ) ;
إذا كنت تريد استخدام هذه الطريقة في نظام التشغيل windows، فيجب عليك إضافة إمكانية smbios في تطبيقك. يرجى اتباع هذه الوثائق لإضافة القدرة في ملف البيان الخاص بك.
مستوى تصحيح الأمان المرئي للمستخدم.
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
يحصل على اسم نظام تشغيل الجهاز.
let systemName = DeviceInfo . getSystemName ( ) ;
// iOS: "iOS" on newer iOS devices "iPhone OS" on older devices (including older iPad models), "iPadOS" for iPads using iPadOS 15.0 or higher.
// Android: "Android"
// Windows: ?
يحصل على الوقت الذي بدأت فيه عملية التطبيق الحالية، بالمللي ثانية.
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
يحصل على إصدار نظام تشغيل الجهاز.
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
يحصل على رقم بناء نظام التشغيل.
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
علامات مفصولة بفواصل تصف البناء.
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
نوع البناء.
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
الطريقة التي تحصل على الحجم الكامل للتخزين على القرص، بالبايت، مع الأخذ بعين الاعتبار حسابات نظام ملفات الجذر والبيانات.
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
تم تغيير واجهة برمجة التطبيقات المستخدمة بواسطة هذه الطريقة لنظام Android في الإصدار 6.0.0. تم الحفاظ على الإصدار الأقدم أدناه باسم getTotalDiskCapacityOld()
. على نظام التشغيل iOS، يُرجع getTotalDiskCapacity()
و getTotalDiskCapacityOld()
نفس القيمة.
التنفيذ القديم للطريقة التي تحصل على حجم تخزين القرص الكامل بالبايت.
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
يحصل على إجمالي ذاكرة الجهاز بالبايت.
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
يعتبر هذا المعرف معلومات حساسة في بعض متاجر التطبيقات (مثل Huawei أو Google Play) وقد يؤدي إلى إزالة تطبيقك أو رفضه، إذا تم استخدامه دون موافقة المستخدم أو لأغراض غير معتمدة. راجع سياسات المتجر لمزيد من المعلومات (انظر الملاحظات أدناه).
يحصل على معرف فريد للجهاز. على نظام Android، فهو مطابق حاليًا لـ getAndroidId()
في هذه الوحدة. على نظام التشغيل iOS، يستخدم معرف DeviceUID
uid. على نظام التشغيل Windows يستخدم Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
.
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS: هذا هو
IDFV
أو سلسلة عشوائية إذا كان IDFV غير متاح. بمجرد إنشاء UID، يتم تخزينه في iOS Keychain وNSUserDefaults. لذلك سيبقى كما هو حتى لو قمت بحذف التطبيق أو إعادة تعيين IDFV. يمكنك اعتباره بعناية معرفًا فريدًا ثابتًا. لا يمكن تغييره إلا في حالة قيام شخص ما بتجاوز القيم يدويًا في Keychain/NSUserDefaults أو إذا قامت Apple بتغيير تطبيقات Keychain وNSUserDefaults. احذر: يتم حساب IDFV باستخدام معرف الحزمة الخاص بك، وبالتالي سيكون مختلفًا في ملحقات التطبيق.- android: قبل إصدار Oreo، سيكون هذا المعرف (ANDROID_ID) هو نفسه دائمًا بمجرد إعداد هاتفك.
- android: سياسة Google Play، راجع "معرفات الأجهزة الثابتة". Huawei - إرشادات مراجعة AppGallery راجع "معرف الجهاز الدائم" و"الحصول على موافقة المستخدم".
هذه الطريقة مخصصة لنظام iOS.
يؤدي ذلك إلى مزامنة المعرف الفريد مع IDFV
أو تعيين سلسلة عشوائية جديدة.
على نظام التشغيل iOS، يستخدم معرف DeviceUID
uid. على الأنظمة الأساسية الأخرى، ما عليك سوى استدعاء getUniqueId()
في هذه الوحدة.
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- إذا قام المستخدم بنقل البيانات أو استعادتها من جهاز iOS إلى جهاز iOS آخر، فسيكون لديه جهازين مختلفين لهما نفس
uniqueId
في Keychain/NSUserDefaults. يمكن للمستخدم الاتصال بـsyncUniqueId()
على جهاز iOS جديد. سيؤدي ذلك إلى تحديثuniqueId
الخاص به منIDFV
أو سلسلة عشوائية.
يحصل على استخدام ذاكرة التطبيق بالبايت.
ملاحظة: هذه الطريقة مخصصة فقط لتصحيح الأخطاء أو إنشاء واجهة مستخدم لإدارة العمليات تواجه المستخدم.
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
تحصل هذه الطريقة على قائمة برامج ترميز الوسائط المدعومة.
DeviceInfo . getSupportedMediaTypeList ( ) . then ( ( string [ ] ) => {
// ["audio/mpeg", "audio/mp4a-latm", "audio/mp4a-latm", "audio/mp4a-latm", "audio/mp4a-latm", "video/avc", "video/3gpp", "video/hevc", "video/mp4v-es", "video/av01", "video/avc", "video/avc", "video/avc", "video/avc"]
} ) ;
يحصل على وكيل مستخدم الجهاز.
DeviceInfo . getUserAgent ( ) . then ( ( userAgent ) => {
// iOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143"
// tvOS: not available
// Android: "Mozilla/5.0 (Linux; Android 12; sdk_gphone64_arm64 Build/SE1A.220630.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36"
// Windows: ?
} ) ;
يحصل على نسخة التطبيق. ضع في الاعتبار أن سلسلة الإصدار هي عبارة عن جهاز/نظام تشغيل منسق ويمكن أن تحتوي على أي بيانات إضافية (مثل رقم الإصدار وما إلى ذلك). إذا كنت تريد التأكد من تنسيق الإصدار، يمكنك استخدام تعبير عادي للحصول على الجزء المطلوب من سلسلة الإصدار التي تم إرجاعها.
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
يخبرك إذا كان الجهاز في وضع الطائرة.
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- يعمل هذا فقط إذا تم تعطيل مصحح الأخطاء عن بعد.
يخبرك ما إذا كانت البطارية قيد الشحن حاليًا.
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
يخبرك إذا كان التطبيق يعمل في المحاكي.
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
يخبرك ما إذا كان الجهاز يحتوي على لوحة مفاتيح متصلة.
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
يخبرك إذا تم تعيين رقم PIN أو بصمة الإصبع للجهاز.
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
يقول إذا كان الجهاز لوحي.
let isTablet = DeviceInfo . isTablet ( ) ;
// true
يخبرك إذا كان الجهاز يحتوي على ذاكرة وصول عشوائي منخفضة.
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
يخبرنا إذا قام المستخدم بتغيير تكبير العرض إلى تكبير/تصغير
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
يخبرك إذا كان الجهاز في وضع الكمبيوتر اللوحي.
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
يخبرك ما إذا كان الجهاز حاليًا في الوضع الأفقي.
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
يخبرك ما إذا كان الجهاز يحتوي على ماوس متصل.
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
يخبرك ما إذا كان الجهاز يدعم خدمات Google للجوال.
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
لمعرفة ما إذا كان الجهاز يدعم خدمات Huawei Mobile Services.
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
يقول إذا كان الجهاز لديه درجة.
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
لمعرفة ما إذا كان الجهاز يحتوي على جزيرة ديناميكية.
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
يُرجع نوع الجهاز كسلسلة، والتي ستكون واحدة مما يلي:
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
قائمة مرتبة بواجهات ABI 32 بت التي يدعمها هذا الجهاز.
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
قائمة مرتبة بواجهات ABI 64 بت التي يدعمها هذا الجهاز.
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
إرجاع قائمة بإصدار بنية المعالج المدعومة
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
يخبرك ما إذا كان الجهاز يحتوي على ميزة نظام معينة.
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
إرجاع قائمة بميزات النظام المتوفرة على Android.
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
يخبرك ما إذا كان الجهاز قد تم إيقاف تشغيل خدمات الموقع عليه على مستوى الجهاز (لا يتعلق الأمر بالأذونات الخاصة بالتطبيق)
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
يخبرك ما إذا كان الجهاز متصلاً بسماعات رأس سلكية أو سماعات رأس بلوتوث
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
يخبرك ما إذا كان الجهاز متصلاً بسماعة رأس سلكية
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
يخبرك إذا كان الجهاز متصلاً بسماعة رأس بلوتوث
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
تُرجع كائنًا من موفري/خدمات الموقع الخاصة بالنظام الأساسي ، بقيمة boolean
سواء كانت متاحة حاليًا أم لا.
ملاحظة: تتطلب هذه الوظيفة الوصول إلى إذن الموقع على نظام Android
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
يحصل على مستوى السطوع الحالي للشاشة الرئيسية للجهاز. حاليا iOS فقط. إرجاع رقم بين 0.0 و1.0، ضمناً.
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
مدعوم في أنظمة التشغيل Windows وiOS وAndroid (دعم الويب لواجهات برمجة التطبيقات المتعلقة بالبطارية/الشحن).
يتم إطلاقه عندما يتغير مستوى البطارية؛ لا يتم إرسالها بشكل متكرر أكثر من مرة واحدة في الدقيقة.
import { useBatteryLevel } from 'react-native-device-info' ;
const batteryLevel = useBatteryLevel ( ) ; // 0.759999
< Text > { batteryLevel } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_batteryLevelDidChange' , ( level ) => {
// 0.759999
} ) ;
يتم تشغيله عندما يعتبر مستوى البطارية منخفضًا (عدة مرات حتى يتم الشحن)
منصة | نسبة مئوية |
---|---|
دائرة الرقابة الداخلية | 20 |
أندرويد | 15 |
ويب | 20 |
ويندوز | 20 |
import { useBatteryLevelIsLow } from 'react-native-device-info' ;
const batteryLevelIsLow = useBatteryLevelIsLow ( ) ; // 0.19
< Text > { batteryLevelIsLow } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_batteryLevelIsLow' , ( level ) => {
// 0.19
} ) ;
يتم تشغيله عندما تتغير حالة البطارية أو يدخل الجهاز في وضع توفير الطاقة، على سبيل المثال عندما يدخل الجهاز في وضع الشحن أو عندما يكون غير متصل بالكهرباء.
import { usePowerState } from 'react-native-device-info' ;
const powerState = usePowerState ( ) ;
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
< Text > { powerState } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native'
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo )
deviceInfoEmitter . addListener ( 'RNDeviceInfo_powerStateDidChange' , { powerState } = > {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
يحصل على الوقت الذي تم فيه تثبيت التطبيق لأول مرة، بالمللي ثانية.
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
يحصل على اسم الجهاز.
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
يخبرك ما إذا كان الجهاز يحتوي على ميزة نظام معينة.
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
معرفة ما إذا كان التطبيق يعمل في المحاكي.
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
يحصل على الشركة المصنعة للجهاز.
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
يخبرك ما إذا كان الجهاز متصلاً بسماعات رأس سلكية أو سماعات رأس بلوتوث.
يشترك هذا الخطاف في الحدث، RNDeviceInfo_headphoneConnectionDidChange
، ويقوم بتحديث حقل result
وفقًا لذلك.
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
يخبرك ما إذا كان الجهاز متصلاً بسماعة رأس سلكية.
يشترك هذا الخطاف في الحدث، RNDeviceInfo_headphoneWiredConnectionDidChange
، ويقوم بتحديث حقل result
وفقًا لذلك.
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
يخبرك ما إذا كان الجهاز متصلاً بسماعات البلوتوث.
يشترك هذا الخطاف في الحدث، RNDeviceInfo_headphoneBluetoothConnectionDidChange
، ويقوم بتحديث حقل result
وفقًا لذلك.
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
يحصل على مستوى السطوع الحالي للشاشة الرئيسية للجهاز. حاليا iOS فقط. إرجاع رقم بين 0.0 و1.0، ضمناً.
يشترك هذا الخطاف في الحدث، RNDeviceInfo_brightnessDidChange
، ويقوم بتحديث حقل brightness
وفقًا لذلك.
import { useBrightness } from 'react-native-device-info' ;
const brightness = useBrightness ( ) ; // 0.46578987897654567
< Text > { brightness } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_brightnessDidChange' , ( brightness ) => {
// 0.46578987897654567
} ) ;
=======
إذا كنت بحاجة إلى التحقق من نوع الجهاز من الجانب الأصلي، فيمكنك استخدام ما يلي:
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
عند تثبيت أو استخدام react-native-device-info
، قد تواجه المشكلات التالية:
يستخدم react-native-device-info
com.google.android.gms:play-services-gcm
لتوفير getInstanceId(). يمكن أن يؤدي هذا إلى حدوث تعارضات عند إنشاء تطبيق Android.
إذا كنت تستخدم إصدارًا مختلفًا من com.google.android.gms:play-services-gcm
في تطبيقك، فيمكنك تحديد متغير gradle googlePlayServicesVersion
في ملف build.gradle
الخاص بك لإخبار react-native-device-info
بالإصدار ينبغي أن يتطلب. راجع المشروع النموذجي المدرج هنا للحصول على عينة.
إذا كنت تستخدم مكتبة مختلفة تتعارض مع com.google.android.gms:play-services-gcm
وكنت متأكدًا من أنك تعرف ما تفعله بحيث يمكنك تجنب تعارضات الإصدارات، فيمكنك ببساطة تجاهل هذه التبعية في ملف Gradle الخاص بك:
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
يبدو أن هناك خطأ ناتجًا عن react-native link
. يمكنك حذف libRNDeviceInfo-tvOS.a
يدويًا في Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
.
هذا هو سجل مستوى النظام الذي يمكن إيقاف تشغيله عن طريق تنفيذ: xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
. للتراجع عن الأمر، يمكنك تنفيذ ما يلي: xcrun simctl spawn booted log config --mode "level:info" --subsystem com.apple.CoreTelephony
target 'yourTargetName' do
# See http://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
pod 'React' , :path => '../node_modules/react-native' , :subspecs => [
'Core' ,
'CxxBridge' , # Include this for RN >= 0.47
'DevSupport' , # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText' ,
'RCTNetwork' ,
'RCTWebSocket' , # Needed for debugging
'RCTAnimation' , # Needed for FlatList and animations running on native UI thread
# Add any other subspecs you want to use in your project
]
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga' , :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link - you may have multiple pods here, just an example
pod 'RNDeviceInfo' , path : '../node_modules/react-native-device-info'
end
# if you see errors about React duplicate definitions, this fixes it. The same works for yoga.
post_install do | installer |
installer . pods_project . targets . each do | target |
if target . name == "React"
target . remove_from_project
end
end
end
يحتوي react-native-device-info
على كود أصلي، ويجب الاستهزاء به. قد يعمل دعم Jest Snapshot بالرغم من ذلك.
إذا لم يكن لديك ملف إعداد Jest مكونًا، فيجب عليك إضافة ما يلي إلى إعدادات Jest وإنشاء ملف jest.setup.js في جذر المشروع:
setupFiles: [ '/jest.setup.js' ] ;
يجب عليك بعد ذلك إضافة ما يلي إلى ملف إعداد Jest الخاص بك للسخرية من الوحدة الأصلية لـ DeviceInfo:
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
الخروج من المشروع المثال لمزيد من المعلومات.
ستقوم بعض واجهات برمجة التطبيقات (مثل getBatteryState) بإصدار تحذيرات في ظروف معينة مثل tvOS أو محاكي iOS. لن يكون هذا مرئيًا في الإنتاج ولكن حتى في التطوير قد يكون مزعجًا. من المفيد الحصول على التحذيرات لأن هذه الأجهزة لا تُرجع أي حالة، وقد يكون ذلك مفاجئًا، مما يؤدي إلى مشكلات في دعم github. تهدف التحذيرات إلى تثقيفك كمطور. إذا كانت التحذيرات مزعجة، فيمكنك تجربة ذلك في التعليمات البرمجية الخاصة بك لمنعها:
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
راجع موقع CHANGELOG.md.
يرجى الاطلاع على contributing guide
.
تقديرًا للمطورين، تم جعل هذه المكتبة متوافقة في الإصدار 0.21.6 مع React-Native-dom وReact-Native-web من خلال توفير ملف polyfill فارغ لتجنب كسر البنيات.
فقط getUserAgent() سيعيد القيمة الصحيحة. ستُرجع جميع أساليب واجهة برمجة التطبيقات الأخرى قيمة "فارغة" من نوع الإرجاع الموثق الخاص بها: 0
للأرقام، ''
للسلاسل، false
للقيم المنطقية.