首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么NEHotspotHelper registerWithOptions返回FALSE?

为什么NEHotspotHelper registerWithOptions返回FALSE?
EN

Stack Overflow用户
提问于 2016-11-06 09:42:44
回答 2查看 1.7K关注 0票数 3

当我试图调用registerWithOptions时,您知道我在代码和设置中遗漏了什么吗?

我已经有NetworkExtension的权利了。

我已经创造了一个权利

已经在.plist中创建了一个数组

这是我的代码:

代码语言:javascript
复制
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");
}];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-27 12:01:40

检查您的应用程序是否与正确的权利文件签名。您可以使用以下命令来完成此操作:

代码语言:javascript
复制
codesign -d --entitlements :- /Users/User/Library/Developer/Xcode/DerivedData/appname-atpabrbgvqunorhiggpf/Build/Products/Debug-iphoneos/AppName.app

在输出中,您应该看到以下两个应享权利:

代码语言:javascript
复制
<key>com.apple.developer.networking.HotspotHelper</key>
<true/>
<key>com.apple.developer.networking.networkextension</key>
<array>

如果不这样做,可以通过以下线程调试您的协同设计过程:

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

请记住,hotspot助手代码将只在设备上运行。

作为参考,此代码适用于我(Swift)

代码语言:javascript
复制
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)")
                        }
                    }

                }



            }
        })
票数 2
EN

Stack Overflow用户

发布于 2018-03-20 09:47:25

除了上面的答案,你还必须把这个放在你的Info.plist上

代码语言:javascript
复制
<key>UIBackgroundModes</key>
<array>
   <string>network-authentication</string>
</array>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40447928

复制
相关文章

相似问题

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