airwatch_socket_workaround
This plugin has been created to enable flutter apps to reach endpoints that are only reachable using a VMWare airwatch per app vpn.
Current status
In development
TODO
provide simple example using custom HttpClientprepare for publishingadd examples for websocket- null safety
- add example for multipart post
- provide HLD
Getting started
Example
Example provides 3 basic use cases:
- HTTP GET
- Websocket (WIP)
- HTTP Post multipart (WIP)
Http requests
Http requests can be sent using the ‘native’ socket by using AirWatchHttpWorkAround. doRequest method receives a dart http Request which is part of dart http package and handover the request to the native part of the plugin.
Example:
Future<String> get(String endpoint) { var request = Request('GET', Uri.parse(endpoint)); return AirWatchWorkAroundFactory.getInstance().doRequest(request); }
Why is this needed?
Because Flutter(dart actually) currently is not respecting system “proxy” and therefore per APN VPN solutions, like vmware AirWatch do not work. Therefore, this class should only be used in IOS Plugin based Network client
The responsibility of using only in IOS is not enforced in any way by this class, it is delegated to plugin users.
Other considerations
Why not fetching system proxy?
Trying to get the current system proxy DO NOT WORK, since the system proxy is always null.
Is there already a bug for this?
An issue exists in flutter: https://github.com/flutter/flutter/issues/41500
Plugin development
Actions
- Build action is described in .github/workflows/build.yml, it executes
flutter pub get
andflutter test
commands - Publish (NOT WORKING) action is described in .github/workflows/public.yml. Currently is not working since i do not wish to upload my personal google credentials to a github secret.
Download airwatch socket workaround package source code on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.