This text was initially written again ultimately of 2015. The supply code is deprecated and never appropriate with present Swift variations, so I eliminated it.
If you wish to discover ways to make a community connection between your units utilizing Bonjour discovery service you’re on the suitable place. On this submit I’m going to point out you the fundamentals, so for instance it is possible for you to to make a distant controller out of your watch or iOS machine so as to ship information on to any tvOS or macOS machines.
Multi-platform improvement
If you wish to create an app that helps a number of platforms, you may wish to goal macOS, iOS, watchOS, tvOS and shortly Linux as nicely. The code snippet beneath goes that will help you detecting the present platform that you’re working with.
#if os(iOS)
let platform = "iOS"
#elseif os(macOS)
let platform = "macOS"
#elseif os(watchOS)
let platform = "watchOS"
#elseif os(tvOS)
let platform = "tvOS"
#elseif os(Linux)
let platform = "linux"
#else
let platform = "unknown"
#endif
print(platform)
Community connection 101
Bonjour discovery service
Bonjour, also called zero-configuration networking, permits automated discovery of units and providers on an area community utilizing trade customary IP protocols.
So mainly with Bonjour yow will discover community units in your native community. This comes very helpful in case you are making an attempt to determine the listing of units which are related to your LAN. Utilizing NetService class will make it easier to to detect all of the units with the accessible providers that they assist. The entire Bonjour API is comparatively small and well-written. From the facet of server facet you simply must create the NetService object, and hearken to the incoming connections by the NetServiceDelegate.
It’s a must to be on the identical WiFi community with all units / simulators.
TCP connection
TCP offers dependable, ordered, and error-checked supply of a stream of octets (bytes) between functions operating on hosts speaking by an IP community.
With the assistance of TCP you’ll be able to construct up a dependable community connection. There’s a Stream class in Basis that will help you sending information backwards and forwards between units. When you have a working connection type NetServiceDelegate, simply hearken to the stream occasions to deal with incoming information by the StreamDelegate. I do not wish to go into the small print, simply obtain the instance code and test it out for your self.
UDP connection
With UDP, laptop functions can ship messages, on this case known as datagrams, to different hosts on an Web Protocol (IP) community.
In case you take a look at the article about UDP you will clearly see that the principle distinction from TCP is that this protocol won’t assure you security of the information supply. Knowledge could arrives unordered or duplicated, it is your process to deal with these eventualities, however the UDP is quick. If you wish to construct a file switch app it is best to undoubtedly go along with TCP, however for instance controlling a real-time motion recreation UDP is simply as ok.
CocoaAsyncSocket
This library is absolutely the winner for me and doubtless it’s the best choice for everybody who needs to arrange a community connection actually rapidly, as a result of it requires means much less code than implementing delegates. In fact you will nonetheless want the Bonjour layer above the entire thing, however that is simply effective to cope with.
If you’re utilizing CocoaAsyncSocket you will note that the API is simple, solely after 5 minutes I may comparatively simply determine it out what is going on on and I used to be in a position to ship messages by the community. It helps all of the Apple platforms, you’ll be able to seamlessly combine it utilizing Carthage or CocoaPods.
CoreBluetooth APIs
I used to be not likely acquainted with the CoreBluetooth framework API’s, that is the rationale why I mainly simply adopted and ported this tutsplus.com code instance to Swift 4. Actually I felt that the API is in some way over-complicated with all these messy delegate capabilities. If I’ve to selected between CoreBluetooth or CocoaAsyncSocket, I would go along with the final one. So sure, clearly I’m not a Bluetooth skilled, however this little mission was a superb first impression about how issues are working contained in the CB framework.
WatchConnectivity framework
If you wish to talk between iOS and watchOS you will in all probability use the WatchConnectivity framework, particularly the WKSession class. It is actually not so sophisticated, with only a few strains of code you’ll be able to ship messages type the watch to the iPhone. You’ll be able to learn this tutorial, however in case you obtain my last sources for this text, you will discover nearly the identical factor contained in the bundle.