我正在构建一个将在用户的 SIM 卡上获得许可的 android 应用程序。我可以检查两个可能的值:
- SIM 序列号:
TelephonyManager.getSimSerialNumber();
- 国际移动卫星系统:
TelephonyManager.getSubscriberId();
由于我不想同时使用两者,我想依赖一个或另一个实际上没有区别。我是对的还是我在这里遗漏了什么?
谢谢!
我正在构建一个将在用户的 SIM 卡上获得许可的 android 应用程序。我可以检查两个可能的值:
TelephonyManager.getSimSerialNumber();
TelephonyManager.getSubscriberId();
由于我不想同时使用两者,我想依赖一个或另一个实际上没有区别。我是对的还是我在这里遗漏了什么?
谢谢!
这取决于你想要什么。
如果许可证通过检查序列号是否与您的数据库匹配来工作,例如。
如果用户安装了您的应用程序并且 sim 卡序列号存储在您的数据库中,如果用户移除 sim 卡并插入新的 sim 卡,则许可证将失败,因为您的数据库没有存储新 sim 卡的序列号。
如果您根据 IMSI 号码获取许可证,则许可证将与设备一起使用,因此即使用户更换 SIM 卡,许可证仍将作为您使用的设备 ID 传递。
请注意,虽然我不知道 SIM 序列号是否可以工作,也不知道它将如何处理没有 SIM 卡的设备,例如美国的 CDMA 设备。
ICCID (SIM Serial) 是 SIM 的序列号。每个 SIM 卡都是唯一的。IMSI 是一个 SubsID。它实际上是一个网络 ID。