首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NEHotspotHelper注释未出现

NEHotspotHelper注释未出现
EN

Stack Overflow用户
提问于 2015-07-29 15:05:57
回答 3查看 15K关注 0票数 4

我们试用了新的NetworkExtension API。我们成功地重新创建了我们的应用程序中的所有步骤。但是,我们仍然没有在Wifi设置屏幕中看到SSID名称下面的自定义注释。我们在ios 9 Beta 3,xcode 7 beta 3。

我们成功地完成了这些步骤:

  • @注1应用程序的Info.plist必须包括一个包含“网络身份验证”的UIBackgroundModes数组。
  • @备注2*再转换应用程序必须将'com.apple.developer.networking.HotspotHelper‘*再转换设置为其应享权利之一。应享权利的值是布尔值、重表示值、正值、真值。

这是我们在应用程序中的代码。我们正在尝试用"Internet“的名称来注释SSID,用文本”试试这里“。我们得到了为SSID "Internet“调用setConfidence方法的日志。然而,我们没有在Wifi选择屏幕中看到实际的注释。

我们还试图为options对象传递'nil‘,该对象承诺将App显示为默认注释。但我们也没有看到这一点。对方法registerWithOptions()的调用返回“true”,打开wifi设置屏幕时也会得到回调。

代码语言:javascript
复制
NSMutableDictionary* options = [[NSMutableDictionary alloc] init]; 
[options setObject:@"Try Here" forKey:kNEHotspotHelperOptionDisplayName]; 
 dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0); 
BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue 
handler: ^(NEHotspotHelperCommand * cmd) { 
    if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList ) { 
         
        for (NEHotspotNetwork* network  in cmd.networkList) {  
            if ([network.SSID isEqualToString:@"Internet"]){ 
                [network setConfidence:kNEHotspotHelperConfidenceHigh];               
                NSLog(@"Confidance set to high for ssid:%@",network.SSID); 
            }  
        }    
    } 
}];

=========================

请帮助我们了解我们缺少的是什么?

EN

回答 3

Stack Overflow用户

发布于 2016-08-28 07:44:24

我已经实现了下面的代码来验证和注释Wifi热点与“连接到MyWifi”的SSID“TP-链接”从应用程序,它工作得很好。

代码语言:javascript
复制
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:@"Connect to MyWifi", kNEHotspotHelperOptionDisplayName, nil];

dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0);
BOOL isAvailable = [NEHotspotHelper registerWithOptions:options queue:queue handler: ^(NEHotspotHelperCommand * cmd) {
    NSMutableArray *hotspotList = [NSMutableArray new];

    if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) {
        for (NEHotspotNetwork* network  in cmd.networkList) {
            NSLog(@"network name:%@", network.SSID);
            if ([network.SSID isEqualToString:@"TP-LINK"]) {
                [network setConfidence:kNEHotspotHelperConfidenceHigh];
                [network setPassword:@"<wifi-password>"];                    
                [hotspotList addObject:network];
            }
        }

        NEHotspotHelperResponse *response = [cmd createResponse:kNEHotspotHelperResultSuccess];
        [response setNetworkList:hotspotList];
        [response deliver];
    }
}];

注:上述代码若要工作,

  1. 你需要通过在networkextension@apple.com上邮寄苹果来获得他们的权利。
  2. 一旦您拥有了权限,就需要创建新的供应配置文件,在该配置文件中必须添加网络扩展权限(只有在有访问权限的情况下才可用),并在xcode中使用该配置文件才能工作。
  3. 将“应享权利”com.apple.developer.networking.HotspotHelper添加到xcode中的“权利”文件中的“真”中。

  1. network-authentication中将Info.plist键添加到所需的后台模式数组中

希望这能有所帮助。谢谢

票数 7
EN

Stack Overflow用户

发布于 2015-08-05 11:15:42

您首先需要通过电子邮件https://forums.developer.apple.com/thread/11807注册您的应用程序为Hotspot Helper

票数 1
EN

Stack Overflow用户

发布于 2015-09-14 21:26:58

它似乎不完全是那样工作的。NEHotspotHelperCommand对象实际上需要一个NEHotspotHelperResponse。您不能直接修改网络。

代码中所缺少的只是NEHotspotHelperResponse的交付。

代码语言:javascript
复制
NSMutableDictionary* options = [[NSMutableDictionary alloc] init];
[options setObject:@"Try Here" forKey:kNEHotspotHelperOptionDisplayName];
dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0);
BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue handler: ^(NEHotspotHelperCommand * cmd) {
   if (cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList ) {
       for (NEHotspotNetwork* network  in cmd.networkList) {
           if ([network.SSID isEqualToString:@"Internet"]) {
               [network setConfidence:kNEHotspotHelperConfidenceHigh];

               // This is required
               NEHotspotHelperResponse *response = [cmd createResponse:kNEHotspotHelperResultSuccess];
               [response setNetworkList:@[ network ]];
               [response deliver];   

               NSLog(@"Confidance set to high for ssid:%@",network.SSID); 
           }  
       }    
   } 
}];

希望这能有所帮助。已经过了一个多月了,但我才被批准享受这项权利。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31704292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档