Wireguard Transport

To add Wireguard transport support:

  1. Add Wireguard dependency to build.gradle:

com.github.AnchorFreePartner.hydra-sdk-android:wireguard:{VERSION_NAME}

2. Register both or one transport with SDK config:

List<TransportConfig> transports = new ArrayList<>();
transports.add(HydraTransportConfig.create());
transports.add(WireTransportConfig.create());
UnifiedSDK.update(transportConfigs, callback);

3. Specify transport on VPN start:

final SessionInfo session = new SessionConfig.Builder()
                .withLocation(UnifiedSDK.COUNTRY_OPTIMAL)
                .withReason(TrackingConstants.GprReasons.M_UI)
                .withTransport(WireguardTransport.TRANSPORT_ID)
                .build();
sdk.getVpn().start(session, new CompletableCallback() {
    @Override
    public void complete() {

    }

    @Override
    public void error(@NonNull VpnException e) {

    }
});

Wireguard on Android S+

Starting from Android 31 apps that use exact alarm should request user permission to do so. Wireguard transport internally uses exact alarms, so before using it on Android 31+ you need to check if permission was granted and request that permission if not before starting vpn session


val shouldRequest = VERSION.SDK_INT >= VERSION_CODES.S &&
            !getSystemService(AlarmManager::class.java).canScheduleExactAlarms()
if (VERSION.SDK_INT >= VERSION_CODES.S) {
    startActivity(Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM))
}

Last updated