I check the projiect setting as this:
My main app and an extension entitlements is same as flow:
<?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">
<array>
<string>packet-tunnel-provider</string>
<string>app-proxy-provider</string>
<string>content-filter-provider</string>
</array>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>allow-vpn</string>
</array>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<true/>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>group.com.myTunnel.testTunnel</string>
</array>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>$(AppIdentifierPrefix)com.myTunnel.testTunnel</string>
</array>
</plist>
My testTunnel.app.xcent is flow:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-/
<plist version="1.0">
<dict>
<key>com.apple.application-identifier</key>
<string>H3DPC4EH35.com.myTunnel.testTunnel</string>
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>packet-tunnel-provider</string>
<string>app-proxy-provider</string>
<string>content-filter-provider</string>
</array>
<key>com.apple.developer.networking.vpn.api</key>
<array>
<string>allow-vpn</string>
</array>
<key>com.apple.developer.team-identifier</key>
<string>H3DPC4EH35</string>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.myTunnel.testTunnel</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>H3DPC4EH35.com.myTunnel.testTunnel</string>
</array>
</dict>
</plist>
I involk startTunnelWithOptions like flow:
_gTunnelManager = tmpmanager;
NETunnelProviderSession *psession = [_gTunnelManager connection];
NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
NSError *err;
[psession startTunnelWithOptions:options andReturnError:&err];
if (err)
{
_gTunnelManager = nil;
NSLog(@"startTunnelWithOptions error: %@", err);
}
else
{
NSLog(@"_gTunnelManager : %@", _gTunnelManager);
NSLog(@"session status: %ld", psession.status);
NSLog(@"openAppleTun success");
}
My PacketTunnelProvider code like flow:
class PacketTunnelProvider: NEPacketTunnelProvider
override func startTunnel(options: [String : NSObject]? = nil, completionHandler: @escaping (Error?) -> Void) {
NSLog("startTunnel enter")
let settings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress:"0.0.0.0")
self.setTunnelNetworkSettings(settings, completionHandler: {(error:Error?) in
if (error != nil){
NSLog("startTunnel error:\(error)")
}else{
NSLog("startTunnel success")
}
})
Error tempErr;
completionHandler(tempErr)
}
But when run , the Debug is out put is:
2017-03-03 18:21:15.873611 testTunnel[2767:115046] _gTunnelManager : {
localizedDescription = test VPN
enabled = YES
protocolConfiguration = {
serverAddress = <4-char-str>
disconnectOnSleep = NO
providerConfiguration = {
key = value
}
providerBundleIdentifier = com.myTunnel.testTunnel.tunnel
}
onDemandEnabled = NO
}
2017-03-03 18:21:15.873650 testTunnel[2767:115046] session status: 2
2017-03-03 18:21:15.873670 testTunnel[2767:115046] openAppleTun success
The PacketTunnelProvider is not work(the log "startTunnel enter" is not print).
XCode version:Version 8.2.1 (8C1002)
My PC version:10.12.3 (16D32)
How did I fix this?