Speedify SDK
Welcome
This SDK lets you build the Speedify VPN engine right into your own iOS app.
Tools
This SDK was built with Xcode Version 9.2 (9C40b)
, iOS11
and Swift 4
. We highly recommend that you use the same (or later).
Getting Started
To get started copy the sample project SpeedifySDK
to the directory you wish to run it in.
A few provisioning profiles are needed in order to run the sample application and integrate the SDK into your app.
For the sample application, first go to Apple Developer and create the following two App IDs, replacing com.mycompany
with a domain you associate with your Developer Program:
com.mycompany.SpeedifySampleApp
com.mycompany.SpeedifySampleApp.PacketTunnel
For the SDK, first create the App ID, again replacing com.mycompany
with your Developer Program domain and replacing myapp
with your application name:
com.mycompany.myapp.PacketTunnel
And then create a provisioning profile for this new App ID, again including the NetworkExtension entitlements if you have them.
Important note: You must run the app on a device and not on a simulator.
After your profiles are set up, open with Xcode and press run. Upon opening the app you will be requested to give VPN Permissions. The SDK will not run without these permissions. Once permissions are granted you will be presented with a list of command buttons. If you wish to change the directory URL please to do that first.
All users will start out in a logged out state. You will need to log in to perform the majority of the commands. If you need a Speedify license when running the sample application please contact support@speedify.com
API Docs
The API Documents are provided as convenient HTML in the docs/index.html directory.
Licensing
The use of this SDK is dependent on you having a licensing agreement with Connectify, Inc.
This SDK uses a number of third party, open source libraries. Information on them and their licenses can be found here.
Support
We are here to support our developers! If you have any issues, questions or concerns, please email us at support@speedify.com
ChangeLog
Speedify 6.3.4
- New function
func loginOauth(oauthAccessToken: String)
which allows clients to login with JWT.
Speedify 6.3
- New
PrivacySettings
struct - New delegate function
privacySettingsDidUpdate(privacy: PrivacySettings)
- New function
setReportingEncryptionKey(key128bit: String)
Speedify 6.2.1
- New
AccountingData
property ->bytesAvailable
- New
AccountingData
property ->bytesUsed
Speedify 6.2
- New function
disableAdapterMonthlyDataLimit(adapterID: String)
- New function
disableAdapterDailyDataLimit(adapterID: String)
Speedify 6.1
- New
AccountingData
struct - Deprecated -
setUserUniqueID(uniqueID:String)
please useloginAutoAccount()
- New
generateLogs
method to help you send files from the Speedify Daemon *Require App Group Capabilities
Speedify 6.0
ValidationError
is nowErrorType
which gives you errors on login and when connecting to servers.- New property in the
AdapterUsageData
->overlimitRatelimit
- New functions for connecting now with an
ErrorType
parameter in the closure - New function
setAdapterOverlimitRatelimit(adapterID: String, bps: Int64)
- New function
setUserUniqueID(uniqueID:String)
- New Class
UUIDProvider
. This will help get a unique Id of the device
Speedify 5.9
- You may now Enable or Disable use of ChaCha for connection encryption.
- Just call
func setChaChaEncrypted(encrypted: Bool)
from the SpeedifySDK and listen for updates inside of the protocolfunc adapterDataDidUpdate(adapterData: [AdapterData])
- Just call
- New
AdapterUsageData
struct which gives information about the data usage and limits for a network adapter. You can watch for changes inside of the protocolfunc adapterDataDidUpdate(adapterData: [AdapterData])
which falls into a new property of theAdapterData
struct namedvar dataUsage: AdapterUsageData
- New Speedify Properties. Now you can simply refer to these referenced value types instead of subscribing to a protocol.
private(set) public var state: State?
private(set) public var version: Version?
private(set) public var adapterData: [AdapterData]?
private(set) public var serverInformation: ServerInformation?
private(set) public var settings: Settings?
private(set) public var stats: [ConnectionStats]?
- Unit Testing. Navigate to
SpeedifySDKTests.swift
and change the username/password then inside of Xcode press cmd+u to start the tests.
Speedify 5.7.1 -> 5.8 Migration
5.7.1 | 5.8 |
---|---|
ConnectionData | AdapterData |
ConnectionData.connectionID | AdapterData.adapterID |
ConnectionData.usageDaily | AdapterUsageData.usageDaily |
ConnectionData.usageMonthly | AdapterUsageData.usageMonthly |
NetworkState | NetworkType |
func setMode(mode: BondingMode,completionHandler:@escaping (_ message: [ConnectionData]?)->Void) |
func setMode(mode: BondingMode) |
func setConnectionPriorities(connection: String, priority: ConnectionPriority, completionHandler:@escaping (_ message: SessionStats)->Void) |
func setConnectionPriorities(connection: String, priority: ConnectionPriority) |
func setConnectionEncryption(connection: String, encrypt: Bool, completionHandler:@escaping (_ message: [ConnectionData]?)->Void) |
func setConnectionEncryption(adapterID: String, encrypt: Bool) |
func setTunnelEncrypted(encrypted: Bool, completionHandler:@escaping (_ message: [ConnectionData]?)->Void) |
func setTunnelEncrypted(encrypted: Bool) |
func setOverflowThreshold(bps: Double, completionHandler:@escaping (_ message: Dictionary<String, Any>)->Void |
func setOverflowThreshold(bps: Int64) |
func addAdapterDailyDataLimitBoost(adapterID: String, additionalBytes: Double, completionHandler:@escaping (_ message: Dictionary<String, Any>)->Void) |
func addAdapterDailyDataLimitBoost(adapterID: String, additionalBytes: Int64) |
func setAdapterDailyDataLimit(adapterID: String, allowedBytes: Double, completionHandler:@escaping (_ message: Dictionary<String, Any>)->Void) |
func setAdapterDailyDataLimit(adapterID: String, allowedBytes: Int64) |
func setAdapterMonthlyDataLimit(adapterID: String, allowedBytes: Double, resetDay: Double, completionHandler:@escaping (_ message: Dictionary<String, Any>)->Void) |
func setAdapterMonthlyDataLimit(adapterID: String, allowedBytes: Int64, resetDay: Int64) |
All rights reserved, Connectify, Inc.
Proprietary and Confidential