3

エラーが発生します:

Error Domain=NEVPNErrorDomain Code=5 "permission denied"

NETunnelProviderManager に構成を保存しようとすると。これは私のコードです:

NETunnelProviderManager * man = [[NETunnelProviderManager alloc] init];
NETunnelProviderProtocol *protocol = [[NETunnelProviderProtocol alloc] init];

[protocol setServerAddress:@"aaa.bbb.ccc.ddd"]; // not actual value
[protocol setUsername:@"testuser"];

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];

NSData *data = [[NSData alloc] init];
[dictionary setObject:@"UUID" forKey:(id)kSecAttrService];
[dictionary setObject:data forKey:(id)kSecValueData];
[dictionary setObject:(__bridge id)kSecAttrAccessibleAlways forKey:(id)kSecAttrAccessible];
[dictionary setObject:(__bridge id)kSecClassGenericPassword forKey:(id)kSecClass];
[dictionary setObject:(__bridge id)kCFBooleanTrue forKey:(id)kSecReturnPersistentRef];

CFTypeRef passwordRef = nil;

OSStatus delStatus = SecItemDelete((__bridge CFDictionaryRef)dictionary);
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)dictionary, &passwordRef);

[protocol setPasswordReference:(__bridge NSData * _Nullable)(passwordRef)];

man.protocolConfiguration = protocol;
man.localizedDescription = @"My VPN";
man.onDemandEnabled = NO;
man.enabled = YES;

[man saveToPreferencesWithCompletionHandler:^(NSError *err) {
    NSLog(@"saved preferences: error = %@", err);
}];

機能でパーソナル VPN を有効にしており、アプリとネットワーク拡張機能の両方に .entitlements ファイルがあります。

4

2 に答える 2

2

あなたのアプリは、Network Extension 設定の読み取りまたは書き込みができない (権限がない) ようです。

アプリの ID で developer.apple.com を確認し、ネットワーク拡張機能とパーソナル VPN を使用していることを確認します。Xcode プロジェクト ターゲットでは、自動プロビジョニング プロファイル処理を使用しないでください。代わりに、Provisioning Profiles セクションで手動で作成してください。お役に立てれば!

于 2017-01-31T13:18:05.107 に答える