NativeScript - 获取设备本地IP地址

3
我想使用NativeScript / JavaScript获取我的设备的本地IP地址。
我已经搜索并找到了在Android上完成此操作的方法,但我希望有一个跨平台的解决方案,也可以在iOS上使用。
我目前正在iPhone 6S上使用NSPlayground,运行iOS 11.4
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();

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

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上做类似的事情。这里有另一个问题和答案,解释了如何使用Swift在iOS上执行此操作,您需要将其翻译为TypeScript/JavaScript才能在两个平台上获取IP: Swift - 获取设备的IP地址 实际上,您可以考虑创建一个插件来完成这项工作,并与社区分享。

1
感谢您的回答,目前我认为我没有完成这项工作所需的条件,我更愿意使用插件,但似乎没有合适的。 - LukeTheWalker
1
@LukeTheWalker 这看起来是一个很棒的插件想法。社区会非常感激 :) - anthares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接