我想使用NativeScript / JavaScript获取设备的本地IP地址。
我已经进行了搜索,找到了一种在Android上执行此操作的方法,但是我希望有一个跨平台的解决方案也可以在iOS上使用。
我当前在运行iOS 11.4
的iPhone 6S上使用NSPlayground
。
答案 0 :(得分:2)
如果您找不到能轻松做到这一点的插件,则必须access the native platform-specific APIs自己在每个平台上完成。
在Android上,您将执行以下操作:
import * as application from 'application';
...
const wifiService: any = application.android.context
.getSystemService(android.content.Context.WIFI_SERVICE);
// See https://developer.android.com/reference/android/net/wifi/WifiManager#getConnectionInfo()
const wifiInfo: any = wifiService.getConnectionInfo();
// See https://developer.android.com/reference/android/net/wifi/WifiInfo.html#getIpAddress()
const ip: number = wifiInfo.getIpAddress();
请注意,WifiInfo#getIpAddress
返回的IP在TypeScript中是number
(在Java中是int
),这意味着您需要一种将其转换为{{3 }}:
function intToCDIRIP(ip) {
return `${ (ip >> 24 ) & 0xFF }.${ (ip >> 16 ) & 0xFF }.${ (ip >> 8 ) & 0xFF }.${ ip & 0xFF }`;
}
console.log(intToCDIRIP(33353454354)); // Should be 196.5.83.18
然后,您需要在iOS上执行类似的操作。在这里,您还有另一个问题和答案,说明您将如何在iOS上使用Swift进行此操作,您必须将其转换为TypeScript / JavaScript才能在两个平台上都获得IP:CIDR notation
实际上,您可以考虑创建一个可以执行此操作的插件并与社区共享