NativeScript-获取设备本地IP地址

时间:2018-09-04 18:01:10

标签: ios connection ip nativescript nativescript-plugin

我想使用NativeScript / JavaScript获取设备的本地IP地址。

我已经进行了搜索,找到了一种在Android上执行此操作的方法,但是我希望有一个跨平台的解决方案也可以在iOS上使用。

我当前在运行iOS 11.4的iPhone 6S上使用NSPlayground

1 个答案:

答案 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

实际上,您可以考虑创建一个可以执行此操作的插件并与社区共享