2016-11-06 350 views
2

你知道我在代码和设置中缺少什么吗?当我尝试调用registerWithOptions时,它总是返回false?为什么NEHotspotHelper registerWithOptions返回FALSE?

我已经拥有NetworkExtension权利。

我已经创建了一个授权 enter image description here

而且已经创造的.plist enter image description here

这里的数组是我的代码:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:@"Try here", kNEHotspotHelperOptionDisplayName, nil]; 

dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0); 

BOOL isAvailable = [NEHotspotHelper registerWithOptions:options queue:queue handler: ^(NEHotspotHelperCommand * cmd) { 

    NSLog(@"Sucessfully Registered"); 
}]; 

回答

1

检查您的应用程序与签约正确的权利文件。你可以用下面的命令做到:

codesign -d --entitlements :- /Users/User/Library/Developer/Xcode/DerivedData/appname-atpabrbgvqunorhiggpf/Build/Products/Debug-iphoneos/AppName.app 

在输出中,你应该看到下面两个权利:

<key>com.apple.developer.networking.HotspotHelper</key> 
<true/> 
<key>com.apple.developer.networking.networkextension</key> 
<array> 

如果你没有,你可以通过以下线程调试你的代码签名过程在这里:

https://forums.developer.apple.com/message/75928#75928

记住热点助手代码将只在设备上运行。

仅供参考,此代码对我的作品(SWIFT)

var options = [String: NSObject]() 
     options[kNEHotspotHelperOptionDisplayName] = "Try Here" as NSObject? 

     NSLog("Lets register", "") 
     let returnType = NEHotspotHelper.register(options: options, queue: DispatchQueue.main, handler: {(_ cmd: NEHotspotHelperCommand) -> Void in 

      NSLog("Returned", "") 



      print(cmd) 

      if cmd.commandType == NEHotspotHelperCommandType.evaluate || cmd.commandType == NEHotspotHelperCommandType.filterScanList { 


       if cmd.networkList != nil { 

        for network: NEHotspotNetwork in cmd.networkList! { 

         NSLog("Found network \(network.bssid) with \(network.ssid)", "") 

         if (network.ssid == "Hub") { 

          print("Confidence set to high for ssid:\(network.ssid)") 
         } 
        } 

       } 



      } 
     })