nativescript-sim-info
A Nativescript 插件,用于从 SIM 卡获取信息。
npm i --save nativescript-sim-info

nativescript-sim-info

NativeScript-Sim-Info 是一个 NativeScript 插件,允许访问 SIM 卡信息。

安装

转到您的应用程序根目录并执行

tns plugin add nativescript-sim-info

用法

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

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

Android 输出

单卡

[
{
"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
}
]

双卡

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

该插件将根据 Android 版本请求更多或更少的权限项。如果用户拒绝任何权限,将返回一个表示拒绝的承诺的对象。

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

iOS 输出

单卡

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

API

属性 平台 Android 版本 iOS 版本 类型 描述
isoCountryCode 通用 1 1 字符串 返回 SIM 提供商国家代码的 ISO-3166 国家代码等效值。
carrierName 通用 1 1 字符串 返回 SIM 提供商的 MCC+MNC(移动国家代码 + 移动网络代码)。5 或 6 位十进制数字。
mcc 通用 1 1 字符串 - 数字 - 空值 返回移动国家代码 (MCC)。
mnc 通用 1 1 字符串 - 数字 - 空值 返回移动网络代码 (MNC)。
simOperator android 1 - 字符串 返回服务提供商名称 (SPN)。
callState android 1 - 数字 - 空值 返回设备上所有电话的状态。
dataActivity android 1 - 数字 - 空值 返回一个表示数据连接(蜂窝)上的活动类型的常量。
phoneType android 1 - 数字 - 空值 返回一个表示设备电话类型的常量。
simState android 1 - 数字 - 空值 返回一个表示默认 SIM 卡状态的常量。
isNetworkRoaming android 1 - 布尔值 - 空值 如果设备在当前网络上被视为漫游,则返回 true,用于 GSM。
phoneNumber android 1 - 字符串 返回线路 1 的电话号码字符串,例如,GSM 电话的 MSISDN。如果不可用,则返回 null。
deviceSoftwareVersion android 1 - 字符串 返回设备的软件版本号,例如,GSM 电话的 IMEI/SV。
simSerialNumber android 1 - 字符串 如果适用,返回 SIM 的序列号。
subscriberId android 1 - 字符串 返回唯一的订阅者 ID,例如,GSM 电话的 IMSI。
subscriptionId android 5.1 (Api: 22) - 数字 - 空值 返回订阅。
simSerialNumber android 5.1 (Api: 22) - 字符串 返回 SIM 唯一序列号 (ICCID)。
networkType android 7 (Api: 24) - 数字 - 空值 返回一个表示设备当前用于数据传输的无线电技术(网络类型)的常量。
deviceImei android 8 (Api: 26) - 字符串 返回 GSM 的 IMEI。
isDefaultSim android - - 布尔值 - 空值 如果 SIM 被认为是默认的,则返回 true。
allowsVOIP ios - 1 布尔值 - 空值 表示运营商是否允许在其网络上进行 VoIP 电话。

Android

双卡支持

从 Api 级别 22,即 LOLLIPOP_MR1 或 Android 5.1 开始,支持双卡。我想指出,Android 认为的默认订阅(TelephonyManager)和订阅(SubscriptionManager)之间的信息属性数量存在差异。

iOS

双卡支持

从iOS 12开始,苹果支持双卡。默认卡和副卡的可用的信息属性是相同的。目前,我无法测试对e-sim卡的支持。如果有人能测试并告诉我,我将不胜感激

电话号码

在任何情况下,苹果都不允许访问电话号码。更多关于这个话题的信息可以在指南的第2.5.2点找到。

致谢

此插件基于Nativescript-Telephony,并使用以下依赖项

NativeScript-Permissions: https://github.com/NathanaelA/nativescript-permissions