# AltKit
**Repository Path**: matrixpods/AltKit
## Basic Information
- **Project Name**: AltKit
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-19
- **Last Updated**: 2021-09-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AltKit
AltKit allows apps to communicate with AltServers on the same WiFi network and enable features such as JIT compilation.
## Installation
To use AltKit in your app, add the following to your `Package.swift` file's dependencies:
```
.package(url: "https://github.com/rileytestut/AltKit.git", .upToNextMajor(from: "0.0.1")),
```
Next, add the AltKit package as a dependency for your target:
```
.product(name: "AltKit", package: "AltKit"),
```
Finally, right-click on your app's `Info.plist`, select "Open As > Source Code", then add the following entries:
```
NSBonjourServices
_altserver._tcp
NSLocalNetworkUsageDescription
[Your app] uses the local network to find and communicate with AltServer.
```
### CMake Integration
Note: CMake 3.15 is required for the integration. The integration only works with the Xcode generator.
Steps:
- Add the AltKit CMake project to your CMake project using `add_subdirectory`.
- Add Swift to your project's supported languages. (ex.: `project(projName LANGUAGES C Swift)`)
If you're using `add_compile_options` or `target_compile_options` and the Swift compiler complains about the option not being supported, it's possible to use CMake's generator expressions to limit the options to non-Swift source files.
Example:
```
add_compile_options($<$>:-fPIC>)
```
## Usage
### Swift
```
import AltKit
ServerManager.shared.startDiscovering()
ServerManager.shared.autoconnect { result in
switch result
{
case .failure(let error): print("Could not auto-connect to server.", error)
case .success(let connection):
connection.enableUnsignedCodeExecution { result in
switch result
{
case .failure(let error): print("Could not enable JIT compilation.", error)
case .success:
print("Successfully enabled JIT compilation!")
ServerManager.shared.stopDiscovering()
}
connection.disconnect()
}
}
}
```
### Objective-C
```
@import AltKit;
[[ALTServerManager sharedManager] startDiscovering];
[[ALTServerManager sharedManager] autoconnectWithCompletionHandler:^(ALTServerConnection *connection, NSError *error) {
if (error)
{
return NSLog(@"Could not auto-connect to server. %@", error);
}
[connection enableUnsignedCodeExecutionWithCompletionHandler:^(BOOL success, NSError *error) {
if (success)
{
NSLog(@"Successfully enabled JIT compilation!");
[[ALTServerManager sharedManager] stopDiscovering];
}
else
{
NSLog(@"Could not enable JIT compilation. %@", error);
}
[connection disconnect];
}];
}];
```