npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ns-sim-info

v1.0.0

Published

Get information of sim cards with NativeScript

Downloads

8

Readme

ns-sim-info

This plugin is forked from nativescript-sim-info. This plugin uses @nativescript/plugin-seed. The plugin will not request phone number in Android in order to reduce requested permissions. manager.getLine1Number requires permissions for SMS and phone numbers in Android, which are difficult to grant in play store. iOS does not provide phone numbers.

ns plugin add ns-sim-info

Usage

    import { SimInfo } from "ns-sim-info";

    load(): void {
        const simInfo = new SimInfo();
        simInfo.getData()
            .then((simData) => {
                console.log(simData)
            }).catch((error) => {
                console.error(error);
            });
    }

Android Output

Single Sim

[
    {
        "isoCountryCode": "at",
        "simOperator": "23XXX",
        "carrierName": "A1",
        "callState": null,
        "dataActivity": null,
        "phoneType": 1,
        "simState": 5,
        "isNetworkRoaming": true,
        "mcc": 232,
        "mnc": 1,
        "phoneNumber": "",
        "deviceSoftwareVersion": "01",
        "simSerialNumber": "894301561923869XXXX",
        "subscriberId": "23201163022XXXX",
        "isDefaultSim": true,
        "networkType": 13,
        "deviceImei": "35404611160XXXX",
        "deviceMeid": "",
        "subscriptionId": 1
    }
]

Dual Sim

[
    {
        "isoCountryCode": "at",
        "simOperator": "23XXX",
        "carrierName": "spusu",
        "callState": null,
        "dataActivity": 4,
        "phoneType": 1,
        "simState": 5,
        "isNetworkRoaming": true,
        "mcc": 232,
        "mnc": 17,
        "phoneNumber": "",
        "deviceSoftwareVersion": "00",
        "simSerialNumber": "894317008000176XXXX",
        "subscriberId": "23217004025XXXX",
        "isDefaultSim": true,
        "networkType": 13,
        "deviceImei": "86760103133XXXX",
        "deviceMeid": "9900111506XXXX",
        "subscriptionId": 1
    },
    {
        "isoCountryCode": "at",
        "carrierName": "A1",
        "isNetworkRoaming": true,
        "phoneNumber": "",
        "mcc": 232,
        "mnc": 1,
        "subscriptionId": 4,
        "simSerialNumber": "894301561520280XXXX",
        "isDefaultSim": false
    }
]

The plugin will request more or less permission items depending on the Android version. If any of the permissions are rejected by the user, an object will be returned as a rejected promise.

{
    "android.permission.READ_PHONE_STATE": false,
}

iOS Output

Single Sim

[
    {
        "mnc": "232",
        "isoCountryCode": "at",
        "carrierName": "A1",
        "allowsVOIP": true,
        "mcc": "1"
    }
]

API

| Property | Platform | Android Version | iOS Version | Type | Description | |-----------------------|----------|-----------------|-------------|------------------------|-------------------------------------------------------------------------------------------------------------------------| | isoCountryCode | common | 1 | 1 | string | Returns the ISO-3166 country code equivalent for the SIM provider's country code. | | carrierName | common | 1 | 1 | string | Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits. | | mcc | common | 1 | 1 | string - number - null | Returns the mobile country code (MCC). | | mnc | common | 1 | 1 | string - number - null | Returns the mobile network code (MNC). | | simOperator | android | 1 | - | string | Returns the Service Provider Name (SPN). | | callState | android | 1 | - | number - null | Returns the state of all calls on the device. | | dataActivity | android | 1 | - | number - null | Returns a constant indicating the type of activity on a data connection (cellular). | | phoneType | android | 1 | - | number - null | Returns a constant indicating the device phone type. | | simState | android | 1 | - | number - null | Returns a constant indicating the state of the default SIM card. | | isNetworkRoaming | android | 1 | - | boolean - null | Returns true if the device is considered roaming on the current network, for GSM purposes. | | phoneNumber | android | - | - | string | Returns the phone number string for line 1, for example, the MSISDN for a GSM phone. Returns null or "" if it is unavailable. | | deviceSoftwareVersion | android | 1 | - | string | Returns the software version number for the device, for example, the IMEI/SV for GSM phones. | | simSerialNumber | android | 1 | - | string | Returns the serial number of the SIM, if applicable. | | subscriberId | android | 1 | - | string | Returns the unique subscriber ID, for example, the IMSI for a GSM phone. | | subscriptionId | android | 5.1 (Api: 22) | - | number - null | Returns the subscription. | | simSerialNumber | android | 5.1 (Api: 22) | - | string | Returns SIM unique serial number (ICCID). | | networkType | android | 7 (Api: 24) | - | number - null | Returns a constant indicating the radio technology (network type) currently in use on the device for data transmission. | | deviceImei | android | 8 (Api: 26) | - | string | returns IMEI for GSM. | | isDefaultSim | android | - | - | boolean - null | Returns true if the sim is considered the default. | | allowsVOIP | ios | - | 1 | boolean - null | Indicates if the carrier allows making VoIP calls on its network. | |

Android

Dual-Sim Support

From Api Level 22, A.K.A LOLLIPOP_MR1 or Android 5.1, there is support for dual sim. I would like to point out that there is a difference in number of information attributes between what Android considers the default subscription (TelephonyManager) and the subscriptions (SubscriptionManager).

iOS

Dual-Sim Support

From iOS 12 on, Apple supports dual sim. The available information attributes are the same for the default and secondary sim.

Phone Number

Apple does not allow the access to the phone number under any circumstance. More information on this topic can be found under the point 2.5.2 of the guidelines.

Testing phones

  • Mi 9
  • iPhone 5s

Acknowledgements

nativescript-sim-info

License

Apache License Version 2.0