Skip to content

Commit 4b3888c

Browse files
committed
✨ feat(ios): 支持后台退出 App 时关闭 VPN
1 parent b72b921 commit 4b3888c

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

ios/RNSimpleOpenvpn.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,6 @@
2929

3030
@property(strong, nonatomic) NSObject *vpnStateObserver;
3131

32+
+ (void)dispose;
33+
3234
@end

ios/RNSimpleOpenvpn.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ @implementation RNSimpleOpenvpn
3434

3535
RCT_EXPORT_MODULE();
3636

37+
static NETunnelProviderManager *_cachedManager;
38+
39+
+ (void)dispose {
40+
if (_cachedManager) {
41+
[_cachedManager.connection stopVPNTunnel];
42+
}
43+
}
44+
3745
+ (BOOL)requiresMainQueueSetup {
3846
return YES;
3947
}
@@ -64,6 +72,7 @@ - (NSDictionary *)constantsToExport {
6472

6573
RCT_EXPORT_METHOD(disconnect : (RCTPromiseResolveBlock)resolve rejecter : (RCTPromiseRejectBlock)reject) {
6674
[self.providerManager.connection stopVPNTunnel];
75+
_cachedManager = nil;
6776
resolve(nil);
6877
}
6978

@@ -76,6 +85,7 @@ - (void)prepareVpn:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlo
7685
}
7786

7887
self.providerManager = managers.firstObject ? managers.firstObject : [NETunnelProviderManager new];
88+
_cachedManager = self.providerManager;
7989
[self startVpn:resolve rejecter:reject];
8090
}];
8191
}

0 commit comments

Comments
 (0)