I Found I can use Per App VPN without MDM using Test Per App VPN. I created a profile which contains VPNUUID, PayloadType, VPNTYPE, VPNSubType etc (profile attached & it is created manually ).
- when I sent profile using air drop to my iPhone (from my Mac).
- profile appears in settings to install.
2A. after this installation failed with the message:
THE VPN SERVICE "VPN" could not be installed.
Here is my info.plist of my source app
<key>NETestAppMapping</key>
<dict>
<key>825886EA-BB00-4805-ADD6-1616161616</key>
<array>
<string>added the app ids for which I want to implement per App VPN like chrome and Firefox bundle identifier</string>
</array>
</dict>
Here is my profile
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadUUID</key>
<string>E6671FFB-66C2-49F7-AB1B-CD5A0CD5A0</string>
<key>PayloadType</key>
<string>com.apple.vpn.managed.applayer</string>
<key>PayloadIdentifier</key>
<string>com.apple.vpn.managed.applayer.388257C2-7902-42B5-BDAE-6E69A441C3A2</string>
<key>VPNType</key>
<string>VPN</string>
<key>VPNSubType</key>
<string>Here bundle identifier of my source app Main target</string>
<key>UserDefinedName</key>
<string>VPN_CONFIG</string>
<key>PayloadDescription</key>
<string>VPN Configuring</string>
<key>PayloadDisplayName</key>
<string>VPN_Config</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>VPNUUID</key>
<string>825886EA-BB00-4805-ADD6-1616161616</string>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>Name not set</string>
<key>PayloadIdentifier</key>
<string>Ignored</string>
<key>PayloadRemovalDisallowed</key>
<false />
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>Ignored</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>