React Native module bridge to obtain information about the user’s home cellular service provider.
Makes use of the following native classes:
- iOS
 - Android
 
- Android support
 - Promosify all APIs
 - RN 0.47 support
 
All APIs are async functions
boolean allowsVOIP() - Indicates if the carrier allows VoIP calls to be made on its network.- If you configure a device for a carrier and then remove the SIM card, this property retains the Boolean value indicating the carrier’s policy regarding VoIP.
 - Always return 
trueon Android. 
string carrierName() - The name of the user’s home cellular service provider.- This string is provided by the carrier and formatted for presentation to the user. The value does not change if the user is roaming; it always represents the provider with whom the user has an account.
 - If you configure a device for a carrier and then remove the SIM card, this property retains the name of the carrier.
 - The value for this property is 'nil' if the device was never configured for a carrier.
 
string isoCountryCode() - The ISO country code for the user’s cellular service provider.- This property uses the ISO 3166-1 country code representation.
 - The value for this property is 'nil' if any of the following apply:
- The device is in Airplane mode.
 - There is no SIM card in the device.
 - The device is outside of cellular service range.
 
 
string mobileCountryCode() - The mobile country code (MCC) for the user’s cellular service provider.- MCCs are defined by ITU-T Recommendation E.212, “List of Mobile Country or Geographical Area Codes.”
 - The value for this property is 'nil' if any of the following apply:
- There is no SIM card in the device.
 - The device is outside of cellular service range.
 
 - The value may be 'nil' on hardware prior to iPhone 4S when in Airplane mode.
 
string mobileNetworkCode() - The mobile network code (MNC) for the user’s cellular service provider.- The value for this property is 'nil' if any of the following apply:
- There is no SIM card in the device.
 - The device is outside of cellular service range.
 
 - The value may be 'nil' on hardware prior to iPhone 4S when in Airplane mode.
 
string mobileNetworkOperator() - return MCC + MNC, e.g 46697- From inside your project run 
npm install react-native-carrier-info --save - In XCode, in the project navigator, right click 
Libraries➜Add Files to [your project's name] - Go to 
node_modules/react-native-carrier-info/iosand addRNCarrierInfo.xcodeproj - In XCode, in the project navigator, select your project. Add 
libRNCarrierInfo.ato your project'sBuild Phases➜Link Binary With Libraries - Click 
RNCarrierInfo.xcodeprojin the project navigator and go theBuild Settingstab. Make sure 'All' is toggled on (instead of 'Basic'). Look forHeader Search Pathsand make sure it contains both$(SRCROOT)/../react-native/Reactand$(SRCROOT)/../../React- mark both asrecursive. - Set up the project to run on your device (iOS simulator does not report cellular provider info)
 - Run your project (
Cmd+R) 
- app/build.gradle
 
dependencies {
  ...
  compile project(':react-native-carrier-info') <-- add this
  ...
}
- settings.gradle
 
include ':react-native-carrier-info'
project(':react-native-carrier-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-carrier-info/android')
- MainApplication.java
 
...
import com.ianlin.RNCarrierInfo.RNCarrierInfoPackage; <-- add this
...
@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
    new MainReactPackage(),
    ...
    newRNCarrierInfoPackage(), <-- add this
    ...
  );
}
import CarrierInfo from 'react-native-carrier-info';
// inside your code where you would like to retrieve carrier info
CarrierInfo.allowsVOIP()
.then((result) => {
  Alert.alert('Allows VoIP', JSON.stringify(result));
});
CarrierInfo.carrierName()
.then((result) => {
  Alert.alert('Carrier Name', result);
});
CarrierInfo.isoCountryCode()
.then((result) => {
  Alert.alert('ISO', result);
});
CarrierInfo.mobileCountryCode()
.then((result) => {
  Alert.alert('MCC', result);
});
CarrierInfo.mobileNetworkCode()
.then((result) => {
  Alert.alert('MNC', result);
});
CarrierInfo.mobileNetworkOperator()
.then((result) => {
  Alert.alert('MCC + MNC', result);
});There is an example project supplied with the repo in the RNCarrierInfoDemo folder. The sample app needs to be run on a device as the simulator does not report cellular provider info.
Any pull requests, issue reports and suggestion are highly welcome.
ISC License (functionality equivalent to MIT License)