l***@126.com
l***@126.com
  • 发布:2017-08-02 14:22
  • 更新:2017-10-20 17:07
  • 阅读:3520

通过native.js调用ios的WiFi信息问题,plus.ios.importClass("CaptiveNetwork");加载不到类和对应的函数

分类:Native.js

我在网上找的object-c 代码如下,我想通过NJS方式实现,但是var CaptiveNetwork = plus.ios.importClass("CaptiveNetwork");加载不到类和对应的函数。manifest.json已经配置了frameworks应用"SystemConfiguration.framework"

//导入框架头文件

import <SystemConfiguration/CaptiveNetwork.h>

@interface ViewController ()
//定义一个label用于显示当前所连WiFi名称
@property (weak, nonatomic) IBOutlet UILabel l1;
@property (weak, nonatomic) IBOutlet UILabel
l2;

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    id info = nil;
    NSArray ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
    for (NSString
    ifnam in ifs) {
    info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
    NSString str = info[@"SSID"];
    NSString
    str2 = info[@"BSSID"];
    NSString *str3 = [[ NSString alloc] initWithData:info[@"SSIDDATA"] encoding:NSUTF8StringEncoding];
    _l1.text = str;
    _l2.text = str2;

    }
    }

@end

manifest.json配置:
"distribute": {
"apple": {
"appid": "",/iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5/
"mobileprovision": "",/iOS应用打包配置文件/
"password": "",/iOS应用打包个人证书导入密码/
"p12": "",/iOS应用打包个人证书,打包配置文件关联的个人证书/
"devices": "universal",/iOS应用支持的设备类型,可取值iphone/ipad/universal/
"frameworks":[
"SystemConfiguration.framework"
]/调用Native.js调用原生Objective-c API需要引用的FrameWork,如需调用GameCenter,则添加"GameKit.framework"/
},

2017-08-02 14:22 负责人:无 分享
已邀请:
战无不胜

战无不胜

解决了么,我也遇到ios获取wifi信息的问题了,安卓容易解决,就是ios不会做啊!如果做好还请指点下啊!

  • _孙大圣_

    你解决了吗,离线打包后,nativie.js好像有问题,

    2017-10-23 21:04

  • 战无不胜

    @274335390@qq.com:没解决,ios采取坐标进行定位

    2017-10-30 16:42

DCloud_IOS_XTY

DCloud_IOS_XTY

需要写插件实现目前NJS暂不支持改功能

#import <SystemConfiguration/CaptiveNetwork.h>  
#import <NetworkExtension/NetworkExtension.h>  
#import "PGPlugin.h"  
#import "PGMethod.h"  

@interface PGWIFI :PGPlugin  
@end  

@implementation PGWIFI  
-(void)getCurWifiInfo:(PGMethod*)JSMethod {  
    NSString *retCb = [JSMethod getArgumentAtIndex:0];  

    NSMutableArray *retNetworkInfos = [NSMutableArray array];  
    CFArrayRef supportedInterfaces = CNCopySupportedInterfaces();  
    if ( supportedInterfaces ) {  
        CFIndex interfacesCount = CFArrayGetCount( supportedInterfaces );  
        for ( CFIndex idx = 0; idx < interfacesCount; idx++ ) {  
            CFStringRef name = CFArrayGetValueAtIndex( supportedInterfaces, idx);  
            CFDictionaryRef netInfoDict = CNCopyCurrentNetworkInfo( name );  
            if ( netInfoDict )  {  
                CFStringRef SSID = CFDictionaryGetValue( netInfoDict, kCNNetworkInfoKeySSID);  
                [retNetworkInfos addObject:@{@"SSID":(NSString*)SSID}];  
            }  
        }  
        CFRelease( supportedInterfaces );  
    }  
    [self toSucessCallback:retCb withArray:retNetworkInfos];  
}  
@end  

//2.注册插件  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
{  
    BOOL ret = [PDRCore initEngineWihtOptions:launchOptions  
                                  withRunMode:PDRCoreRunModeNormal];  

    [[PDRCore Instance] regPluginWithName:@"WIFI"  
                             impClassName:@"PGWIFI"  
                                     type:PDRExendPluginTypeApp  
                               javaScript:@";(function(window){\  
     var B = window.plus.bridge;\  
     window.WIFI = {\  
     getCurWifiInfo:function( callback ){\  
     var jsCbId = B.callbackId(function(list){\  
     if ( 'function' === typeof(callback) ) {\  
     callback(list);\  
     }\  
     });\  
     B.exec('WIFI','getCurWifiInfo', [jsCbId]);\  
     }\  
     }\  
     })(window);"];  
    return ret;  
    //3.manifest.json permissions节点下添加  
    "permissions": {  
        "WIFI": {  
            "description": ""  
        },  
        //4. Example  
        plus.WIFI.getCurWifiInfo(  
                             function( info ) {  
                                 console.log(JSON.stringify(info))  
                             }  
                             );

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