如何在React Native中获取器械的当前国家/地区(iOS和Android)?

ehxuflar  于 2023-01-27  发布在  React
关注(0)|答案(5)|浏览(295)

我尝试获取设备的当前国家/地区,但没有找到任何内容。React Native中是否有这样的操作?我尝试使用react-native-device-info,但它也不支持,但在以前的版本中,它可以通过getDeviceCountry()获取。现在,对于最新版本,它显示错误:
类型错误:_reactNativeDeviceInfo.default.getDeviceCountry不是函数。(在“_reactNativeDeviceInfo.default.getDeviceCountry()”中,未定义“_reactNativeDeviceInfo.default.getDeviceCountry”)

wgmfuz8q

wgmfuz8q1#

根据react-native-device-info最新版本的文档,他们已经将一些apis移到react-native-localize中,以减少react-native-community模块中的重复。react-native-localize非常适合我。
设置:

$ npm install --save react-native-localize
# --- or ---
$ yarn add react-native-localize

用法:

import * as RNLocalize from "react-native-localize";

console.log(RNLocalize.getLocales());
console.log(RNLocalize.getCurrencies());
console.log(RNLocalize.getCountry());
console.log(RNLocalize.getCalendar());
console.log(RNLocalize.getTemperatureUnit());
console.log(RNLocalize.getTimeZone());
console.log(RNLocalize.uses24HourClock());

和更多。详细说明请访问他们的官方文件通过给定的链接:react-native-localize

bxjv4tth

bxjv4tth2#

它解决了我的问题;

**重大更改:**删除is 24小时、获取时区、自动时区和自动日期和时间、获取设备区域设置、获取设备国家/地区、获取首选区域设置

这是一项调查的结果,它消除了react-native-community模块中的API重复

相关PRhttps://github.com/react-native-community/react-native-localize/pull/65

使用yarn add
https://github.com/mikehardy/react-native-localize.git#e062f0d2dc3171dc18fdb7b7139d347ad03933dc 以维护isAutoTimeZone + isAutoDateAndTime,直到合并

9udxz4iz

9udxz4iz3#

接受的答案对我不起作用,可能是由于https://github.com/zoontek/react-native-localize/issues/81
然而,Expo的生态系统中有一些东西非常完美:

  1. expo install expo-localization
  2. import * as Localization from 'expo-localization';
  3. console.log(Localization.region);

**编辑:**文档位于https://docs.expo.io/versions/latest/sdk/localization/#localizationregion

1hdlvixo

1hdlvixo4#

似乎是React Native中的错误。请查看其故障排除部分
以下是他们的建议:
似乎是由react-native link引起的bug。您可以在Xcode -〉[您的iOS构建目标] -〉构建短语-〉将二进制文件与库链接中手动删除libRNDeviceInfo-tvOS. a。

7xzttuei

7xzttuei5#

请使用此软件包获取设备所在国家/地区。到具有不同类型的配置。
react-native-device-country
一些例子

import DeviceCountry, {
  TYPE_ANY,
  TYPE_TELEPHONY,
  TYPE_CONFIGURATION,
} from 'react-native-device-country';

DeviceCountry.getCountryCode()
  .then((result) => {
    console.log(result);
    // {"code": "BY", "type": "telephony"}
  })
  .catch((e) => {
    console.log(e);
  });

DeviceCountry.getCountryCode(TYPE_TELEPHONY)
  .then((result) => {
    console.log(result);
    // {"code": "BY", "type": "telephony"}
  })
  .catch((e) => {
    console.log(e);
  });

DeviceCountry.getCountryCode(TYPE_CONFIGURATION)
  .then((result) => {
    console.log(result);
    // {"code": "BY", "type": "config"}
  })
  .catch((e) => {
    console.log(e);
  });

相关问题