NativeScript - получает локальный IP-адрес устройства. - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу получить локальный IP-адрес моего устройства, используя NativeScript / JavaScript.

Я выполнил поиск и нашел способ сделать это на Android, но я хотел бы иметь кроссплатформенное решение, которое работает также на iOS.

В настоящее время я использую NSPlayground на iPhone 6S под управлением iOS 11.4.

1 Ответ

0 голосов
/ 04 сентября 2018

Если вы не можете найти плагин, который бы легко это делал, вам придется получить доступ к родным 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-адрес, возвращаемый WifiInfo#getIpAddress, представляет собой number в TypeScript (int в Java), что означает, что вам нужно преобразовать его в Обозначение 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. Здесь у вас есть еще один вопрос и ответ, объясняющий, как вы это сделаете на iOS с использованием Swift, который вам нужно будет перевести на TypeScript / JavaScript, чтобы иметь возможность получить IP на обеих платформах: Swift - Получить IP-адрес устройства

На самом деле, вы можете подумать о создании плагина, который делает это и делиться им с сообществом ?

...