JimmyHezheng
JimmyHezheng
  • 发布:2014-11-27 16:38
  • 更新:2016-08-27 16:35
  • 阅读:4344

如何通过Native.js 的ios接口实现在IOS里面获取wifi模块的MAC地址??

分类:HTML5+
App

本来决定开始使用这套模式来做APP,但是现在遇到一个小问题。如何通过Native.js 的ios接口实现在IOS里面获取wifi模块的MAC地址,我们在Andriod已经实现了。但是IOS不知道如何弄。请教如何用Native.js 实现以下原生代码:

import <SystemConfiguration/CaptiveNetwork.h>

NSString ssid = @"Not Found";
NSString
macIp = @"Not Found";
CFArrayRef myArray = CNCopySupportedInterfaces();
if (myArray != nil) {
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
if (myDict != nil) {
NSDictionary dict = (NSDictionary)CFBridgingRelease(myDict);

        ssid = [dict valueForKey:@"SSID"];  
        macIp = [dict valueForKey:@"BSSID"];  
    }  
}  
UIAlertView *av = [[UIAlertView alloc] initWithTitle:ssid  
                                             message:macIp  
                                            delegate:nil  
                                   cancelButtonTitle:nil  
                                   otherButtonTitles:@"OK", nil];
2014-11-27 16:38 1 条评论 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

在Android上已经实现了啊。
可否把Android的代码贴出来共享下,好多前端开发者不了解原生api,很希望有人共享代码,替大家多谢谢了!

@XTY 帮看看ios上的代码对不对。

  • JimmyHezheng (作者)

    function getMac(){

    var mac = "xxx-xxx-xxx-xxx";

    if(plus.os.name=="Android"){

    // 导入UIAlertView类

    //WifiManager


                var Context = plus.android.importClass("android.content.Context");  

    var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");

    var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
    var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");

    var wifiInfo = wifiManager.getConnectionInfo();

    alert(wifiInfo.getMacAddress());

    }
    return mac;
    }

    2014-11-28 09:09

  • JimmyHezheng (作者)

    IOS的部分@697 麻烦帮忙看一下,真心不熟悉。

    2014-11-28 09:09

  • DCloud_IOS_XTY

    iOS获取mac地址已经被apple封杀,获取不到

    2014-11-28 14:31

JimmyHezheng

JimmyHezheng (作者)

Android的NJ代码:

function getMac(){
var mac = "xxx-xxx-xxx-xxx";
if(plus.os.name=="Android"){
// 导入UIAlertView类
//WifiManager

var Context = plus.android.importClass("android.content.Context");

var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");

var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");

var wifiInfo = wifiManager.getConnectionInfo();

alert(wifiInfo.getMacAddress());

}
return mac;
}

DCloud_IOS_XTY

DCloud_IOS_XTY

iOS获取mac地址已经被apple封杀,获取不到

  • JimmyHezheng (作者)

    那APPCAN里面还可以获取,也是在IOS8下。

    2014-11-28 15:13

  • DCloud_IOS_XTY

    那你对比下获取的mac 和真实的是否一致

    2014-11-28 16:09

  • JimmyHezheng (作者)

    是这样的,我们其实对真实性不追究,主要是一个固定的值,我可以用来鉴别设备就可以:)你看这种类似的需求应该如何实现。我记得IOS的UUID是每次启动都会变化,但是MAC地址我在APPCAN上获取的确实是不变的,至于是不是对的,对我这个需求不重要。麻烦你指导一下。如果这个问题解决了,我们团队就全部用NJ来做产品了。现在卡在这个地方。

    2014-11-28 18:36

  • DCloud_IOS_XTY

    可以使用plus.device.uuid,这个只要设备不重置就不会变

    2014-12-01 10:51

  • JimmyHezheng (作者)

    回复 DCloud_IOS_XTY:重启机器,或者重装应用都不会变。但是升级固件和重置会变,是这个意思吧

    2014-12-02 16:48

  • DCloud_IOS_XTY

    对,OTA升级也不会变

    2014-12-03 19:00

无极互联

无极互联

这个获取的是手机的mac地址,而非wifi路由的mac。能否获取到路由器信息呢

  • 无极互联

    安卓的已经可以获取到,ios的有类似代码吗

    2015-10-19 22:37

stock2

stock2

有没有 针对安卓的 封装到 hbulder 方面的书籍啊.

Ronson

Ronson

请问楼主,找到方法了吗?可以分享一下吗?

该问题目前已经被锁定, 无法添加新回复