8

フレームワークを使用して、 VPNツールをコーディングしていますNetworkExtension。経由でIPSecに接続でき、 VPN接続ステータスが変更されNEVPNManager.sharedManagerたときに通知を受け取ることができます。しかし、アプリを強制終了して再度開くと、常にゼロであり、正しい接続状態を表示できないことを意味します。それを解決する方法は?NEVPNManager.Connect.Status

4

2 に答える 2

5

これを試して:

func viewDidLoad() {
    // Register to be notified of changes in the status. These notifications only work when app is in foreground.
    notificationObserver = NSNotificationCenter.defaultCenter().addObserverForName(NEVPNStatusDidChangeNotification, object: nil , queue: nil) {
       notification in

       print("received NEVPNStatusDidChangeNotification")

       let nevpnconn = notification.object as! NEVPNConnection
       let status = nevpnconn.status
       self.checkNEStatus(status)
    }
}



func checkNEStatus( status:NEVPNStatus ) {
    switch status {
    case NEVPNStatus.Invalid:
      print("NEVPNConnection: Invalid")
    case NEVPNStatus.Disconnected:
      print("NEVPNConnection: Disconnected")
    case NEVPNStatus.Connecting:
      print("NEVPNConnection: Connecting")
    case NEVPNStatus.Connected:
      print("NEVPNConnection: Connected")
    case NEVPNStatus.Reasserting:
      print("NEVPNConnection: Reasserting")
    case NEVPNStatus.Disconnecting:
      print("NEVPNConnection: Disconnecting")
  }
}

上記のコードは、VPN が既に接続されている状態でアプリを実行すると、次のメッセージを生成する必要があります。

checkNEStatus:  NEVPNConnection: Invalid  
viewDidLoad:    received NEVPNStatusDidChangeNotification  
checkNEStatus:  NEVPNConnection: Connected
于 2016-08-21T04:42:07.100 に答える