Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NEVPNManager.saveToPreferencesWithCompletionHandler上出错_Macos_Osx Yosemite_Vpn_Nevpnmanager - Fatal编程技术网

Macos NEVPNManager.saveToPreferencesWithCompletionHandler上出错

Macos NEVPNManager.saveToPreferencesWithCompletionHandler上出错,macos,osx-yosemite,vpn,nevpnmanager,Macos,Osx Yosemite,Vpn,Nevpnmanager,我的目标平台是OS X 10.10/Xcode 7.2 我正在尝试保存NEVPNManager的首选项,但在domain=NEConfigurationErrorDomain中出现错误: Error Domain = NEConfigurationErrorDomain Code = 10 "permission denied" UserInfo = 0x610000073280 {NSLocalizedDescription = permission denied} 下面是示例代码: let

我的目标平台是OS X 10.10/Xcode 7.2 我正在尝试保存NEVPNManager的首选项,但在domain=NEConfigurationErrorDomain中出现错误:

Error Domain = NEConfigurationErrorDomain Code = 10 "permission denied" UserInfo = 0x610000073280 {NSLocalizedDescription = permission denied}
下面是示例代码:

let manager = NEVPNManager.sharedManager()
manager.loadFromPreferencesWithCompletionHandler { (error) -> Void in
    if((error) != nil) {
        print("VPN load preferences error")
        print(error!)
        exit(0)
    }
    if manager.`protocol`  == nil {
        let proto = NEVPNProtocolIKEv2()
        proto.serverAddress = "host.net"
        proto.username = "username"
        Keychain.save("vpnpassword", data: "password".dataUsingEncoding(NSUTF8StringEncoding)!)
        proto.passwordReference = Keychain.load("vpnpassword") // I got the same error without passwordReference too
        proto.authenticationMethod = NEVPNIKEAuthenticationMethod.None
        manager.`protocol` = proto
        manager.enabled = true
        manager.localizedDescription = "VPN"
        manager.saveToPreferencesWithCompletionHandler({ (error) -> Void in
            if((error) != nil) {
                print("VPN Save to Preferences error")
                print(error!)
                exit(0)
            }
            else {
                do {
                    try manager.connection.startVPNTunnel()
                    print("Started error")
                } catch {
                    print("Unexpected error")
                    }
                }
            }
        })
    }
})
我还发现了下一个日志条目:

Jan 10 14:24:51 y.local nehelper[196]: app has the com.apple.developer.networking.vpn.api entitlement but not the application-identifier entitlement
Jan 10 14:24:51 y.local nehelper[196]: app Failed to obtain authorization right for 3: no authorization provided
Jan 10 14:24:51 y.local app[33627]: __55-[NEVPNManager saveToPreferencesWithCompletionHandler:]_block_invoke142: failed to save the new configuration: Error Domain=NEConfigurationErrorDomain Code=10 "permission denied" UserInfo=0x608000660240 {NSLocalizedDescription=permission denied}
我有下一个权利

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.application-identifier</key>
    <string>T76ZSM474A.app</string>
    <key>com.apple.developer.aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.networking.vpn.api</key>
    <array>
        <string>allow-vpn</string>
    </array>
    <key>com.apple.developer.team-identifier</key>
    <string>T76ZSM474A</string>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>T76ZSM474A.</string>
    </array>
    <key>keychain-access-groups</key>
    <array>
        <string>T76ZSM474A.group</string>
    </array>
</dict>
</plist>

com.apple.application-identifier
T76ZSM474A.app
com.apple.developer.aps-environment
发展
com.apple.developer.networking.vpn.api
允许vpn
com.apple.developer.team-identifier
T76ZSM474A
com.apple.security.application-groups
T76ZSM474A。
密钥链访问组
T76ZSM474A.组
接下来是xcent

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.application-identifier</key>
  <string>T76ZSM474A.vpn</string>
  <key>com.apple.developer.aps-environment</key>
  <string>development</string>
  <key>com.apple.developer.networking.vpn.api</key>
  <array>
  <string>allow-vpn</string>
  </array>
  <key>com.apple.developer.team-identifier</key>
  <string>T76ZSM474A</string>
  <key>com.apple.security.application-groups</key>
  <array>
  <string>T76ZSM474A.</string>
  </array>
  <key>keychain-access-groups</key>
  <array>
  <string>T76ZSM474A.group</string>
  </array>
</dict>
</plist>

com.apple.application-identifier
T76ZSM474A.vpn
com.apple.developer.aps-environment
发展
com.apple.developer.networking.vpn.api
允许vpn
com.apple.developer.team-identifier
T76ZSM474A
com.apple.security.application-groups
T76ZSM474A。
密钥链访问组
T76ZSM474A.组
embedded.provisionprofile具有允许vpn和正确的团队id(T76ZSM474A)

构建的应用程序具有下一个代码设计输出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.application-identifier</key>
    <string>T76ZSM474A.app</string>
    <key>com.apple.developer.aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.networking.vpn.api</key>
    <array>
        <string>allow-vpn</string>
    </array>
    <key>com.apple.developer.team-identifier</key>
    <string>T76ZSM474A</string>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>T76ZSM474A.</string>
    </array>
    <key>keychain-access-groups</key>
    <array>
        <string>T76ZSM474A.group</string>
    </array>
</dict>
</plist>

com.apple.application-identifier
T76ZSM474A.app
com.apple.developer.aps-environment
发展
com.apple.developer.networking.vpn.api
允许vpn
com.apple.developer.team-identifier
T76ZSM474A
com.apple.security.application-groups
T76ZSM474A。
密钥链访问组
T76ZSM474A.组
我试图反编译Network.framework,但并不容易。 我在OSX10.11上检查了这个问题,没有发现问题,我的应用程序工作正常。 我将构建的应用程序从OS X 10.11复制到了OS X 10.10,我得到了以前的错误。 我认为文档中有一个错误,OS X 10.10不支持NEVPNManager,或者OS X 10.10上的NEVPNManager有一个bug


我做错了什么?

我与苹果的支持人员进行了很长时间的会面。 他们说-NEVPNManager在10.10还没有完全可用。
您应该升级到OS X El Capitan或使用Strongswan Frontend for OS X()。

我建议您看看-从您的日志判断,这可能是问题所在。另一个建议是尝试以
root
的身份运行应用程序-您可能会解决这个问题,这意味着您需要在某个地方指定您需要
root
。第三个建议是检查您链接的SDK是否符合-10.10或10.11?是的,我已经尝试了您链接的建议,并尝试以root用户身份运行。我尝试链接到SDK 10.10,因为我希望在OS X 10.10上运行应用程序。