Resources Bridge
is a tool for sending and requesting files from Mac on iOS devices.
Read and write your Mac's files in a sync manner like they are on your iPhone.
- Swift
5.2
- iOS
11.0
- macOS
10.13
Install via SwiftPM
.package(url: "https://github.com/eugenebokhan/ResourcesBridge.git",
.upToNextMinor(from: "0.0.4"))
First of all you need to launch the Monitor
app on your Mac. It is used to receive and send files from iOS devices and handle all local file management.
After the Monitor
app is launched, you may call one of the following functions on iPhone or iPad:
-
Init Bridge
let bridge = try ResourcesBridge()
-
Start session and try to connect to
Monitor
automaticallybridge.tryToConnect()
-
Abort connection and stop session
bridge.abortConnection()
-
Wait for connection synchronously
try bridge.waitForConnection()
-
Write resource on Mac
bridge.writeResource(_ resource: Data, at remotePath: String, progressHandler: ((Double) -> Void)? = nil) throws
progressHandler
:read
/write
functions are designed to be synchronous, but you may pass a progress handler that will report progress on other dispatch queue for debug purposes.remotePath
is an absolute path to the file on Mac.
-
Read resource from Mac
The logic is similar to the
write
func.bridge.readResource(at remotePath: String, progressHandler: ((Double) -> Void)? = nil) throws -> Data
In order for Resources Bridge
to work when running on iOS 14, you will have to include two keys in your app's Info.plist file.
The keys are Privacy - Local Network Usage Description
(NSLocalNetworkUsageDescription
) and Bonjour services
(NSBonjourServices
).
For the privacy key, include a human-readable description of what benefit the user gets by allowing your app to access devices on the local network.
The Bonjour services key is an array of service types that your app will browse for. For Resources Bridge
, he value of this key should be _ResourcesBridge._tcp
.
If you do not configure the above keys properly, then Resources Bridge
won't work.
This project is based on Bonjour
framework. You can use it for async communication and files transferring between 🍏 devices.
MIT