3

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

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

我目前正在NSPlayground运行的 iPhone 6S 上使用iOS 11.4.

4

1 回答 1

3

如果你没有找到一个插件来轻松地做到这一点,你将不得不访问本地平台特定的 API来自己在每个平台上完成它。

在 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();

请注意,返回的 IP在 TypeScript中WifiInfo#getIpAddress是 a (在 Java 中),这意味着您需要一种将其转换为CIDR 表示法的方法:numberint

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:Swift - Get device's IP Address

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

于 2018-09-04T18:21:14.780 回答