cordova获取设备信息以及sim卡MSISDN等信息
6882WEBcordova2018-08-24

示例图片

设备信息获取

支持平台:Android、Browser、iOS、Windows、OSX
这是cordova官方插件,附上官方文档

1
2
插件安装
cordova plugin add cordova-plugin-device

使用方法

1
2
3
4
5
6
7
8
9
10
11
document.addEventListener("deviceready", onDeviceReady, false)
function onDeviceReady() {
alert(device.cordova) // 当前cordova的版本
alert(device.model) // 设备的模型或产品名称
alert(device.platform) // 获取操作系统
alert(device.uuid) // 设备通用唯一标识uuid
alert(device.version) // 操作系统版本
alert(device.isVirtual) // 判断设备是否在虚拟机上运行,返回Boolean
alert(device.serial) // 设备序列号
alert(device.serial) // 设备制造商
}

sim卡信息获取

支持平台:Android、iOS、Windows Phone 7 and 8
附上npm文档

1
2
插件安装
cordova plugin add cordova-plugin-sim

使用方法,更多参数查看文档

1
2
3
4
5
6
7
8
9
10
11
document.addEventListener("deviceready", onDeviceReady, false)
function onDeviceReady() {
window.plugins.sim.getSimInfo(function(res){
alert(res.carrierName) // 供应商 (SPN)
alert(res.countryCode) // ISO 国家代码[中国是CN]
alert(res.mcc) // 移动信号国家码
alert(res.mnc) // 移动网络号码
}, function(){
alert('error')
})
}

关于MSISDN获取

sim插件的phoneNumber这个获取MSISDN(手机号码)的参数还有deviceId、simSerialNumber、subscriptionId等等,官方文档表示了有时只能拿到一个空字符串

原因:

MSISDN可以存储在SIM卡上,但大部分电话运营商都不会将MSISDN存储在SIM卡上,有以下一些原因:
动态MSISDN分配:首次使用预付费SIM时,有时会为其分配MSISDN。这意味着网络具有可用的MSISDN池,并在新的预付费SIM上线时分配它们。这意味着当SIM卡出厂时,它们还没有MSISDN,这意味着在发送SIM卡之前无法存储MSISDN。有些网络在一段时间不活动后会过期’MSISDN分配,特别是当它们的可用数量不足时,并将这些数字返回到可用池。
移动号码可携带性:一些国家/地区允许移动用户保留其MSISDN但更改网络。这意味着MSISDN将从用于1个网络的SIM移动到用于另一个网络的SIM。

因此SIM上的MSISDN条目通常为空,用户可以在SIM卡上存储MSISDN或者任意数字
所以MSISDN通常为空,但如果你获取到了也是因为用户在设备中设置“我的电话号码”什么的所以也并不保证一定正确

可能的方法:通过WAP / WEB,当移动运营商在标题中包含MSISDN时(你可以做一些webview技巧来查看标题是通过的 - 但是你只看到这些如果是网络支持它,如果用户在移动数据上 - 即如果用户在WiFi上,它将无法工作

来源:https://stackoverflow.com/questions/10695601/msisdn-is-it-a-sim-card-data-why-all-the-provided-function-from-blackberry-a

欢迎留言交流  (´▽`ʃ♡ƪ)