The Basic Meeting List Toolbox

The BMLTiOSLib iOS Framework

What is this “BMLTiOSLib” of Which You Speak?

The BMLTiOSLib project is an open-source Apple iOS Framework that has been written to support developers of Apple iOS (iPhone and iPad) apps.
It completely abstracts all the communication with the BMLT Root Server, including the Semantic Administration Interface (which means that you can write apps that allow administration, like meeting editing).
The main purpose of the BMLTiOSLib is to help people write great BMLT apps without having to worry about the (frankly annoying as hell) aspects of communicating with the Root Server. You simply instantiate the class with a URL to the server, and bingo! You’re connected!

Explain in English, Please

You can write apps for iPhones and iPads (not Android, sorry) in just a couple of days that offer tremendous power. This is opposed to spending weeks or months writing apps.
We offer this by providing a pre-written, and pre-tested bunch of code that handles all of the communications between the iOS device and the BMLT Root Server. The app developer doesn’t have to be bothered at all with that. They can concentrate on making a pretty app.

The Basics

What it Is
The BMLTiOSLib is a new-style Shared Framework, written in Swift. It is provided as a Shared Framework bundle that can be included into any iOS development project.
An iOS Shared Framework is a bundle of code and header files that you include into your Apple Xcode project; which you will be writing in Swift.

A prerequisite of using the BMLTiOSLib is that you already know how to write iOS programs. You absolutely don’t have to have experience with communications (that’s sort of the whole idea, here), but you do need to have a good grasp of Swift, know how to use Xcode, and know how to make functioning iOS apps.
What it Does
When you create an instance of BMLTiOSLib, it immediately goes and tries to contact the Root Server you directed it to. If the server is valid, then it establishes a connection that will remain stable as long as the BMLTiOSLib instance is around (and as long as the device is on and has an Internet connection). It doesn’t need any special libraries to communicate, as it uses very high-level iOS communication methods to manage the connection. These methods are provided by the main Foundation Framework, which is pretty much the baseline for all iOS apps.
Under the hood, the BMLTiOSLib communicates with the Root Server using the Semantic Interface. In particular, the JSON interface; but you don’t need to worry about that. It’s all sorted before you see it.
After the BMLTiOSLib connects to the Server, it extracts a bunch of information from the server, such as its version, how many languages it supports, what its default long/lat is, what are the Service bodies that have data on the Server, what are the available formats, etc. These are established immediately, with no need to ask explicitly.
The BMLTiOSLib provides a functional interface to the Server. It’s an object with a bunch of functions that you call to do things and ask the Server questions.
The BMLTiOSLib uses the Apple Delegation Pattern, so you need your app context to cleave to the BMLTiOSLibDelegate Protocol. This protocol defines a series of methods that you need to provide, and that are called after various operations are complete. Most of the protocol methods are optional, with only a couple of them required. You probably won’t need to define all of them.
You can do basic administration using the BMLTiOSLib. It supports logging in and maintaining a session; using the Semantic Administration Interface. This means that you can write an app that handles editing meetings.
What it Needs
As mentioned above, you need to have personal proficiency with programming iOS apps. You don’t have to be an expert, but you need to know your way around Xcode, the Swift programming language and Cocoa Touch, the SDK for developing iOS apps with Xcode.
The Root Server needs to be version 2.8.10 or greater. The BMLTiOSLib will refuse to connect to earlier versions.
The server needs to be accessed via SSL (HTTPS). If your server is not accessed via HTTPS, the BMLTiOSLib will refuse to connect to it. Additionally, you should not redirect to HTTPS. The URL you provide must be a direct HTTPS connection to a Root Server version 2.8.10 or above.
It requires that the app use the iOS 9.0 SDK or above (requires at least iOS 9).
This library is Swift-only. You need to write your app in Swift.
If you plan to use the administration capabilities of the BMLTiOSLib, then the Root Server needs to have Semantic Administration enabled.
You cannot have made big modifications to the various data fields (town, location, meeting name, etc.) for your Root Server database (The *_comdef_meetings_data table). You can add new ones, but you should leave the default ones there (You can change the prompts, language and visibility, but that’s about it).
If you plan to create release versions of your app for the Apple App Store, or run the app you create on a device (as opposed to just the simulators that are provided with Xcode), then you will also need to have a paid Apple Developer Account

PROTIP: It’s extremely easy to enroll as an individual, but a far better solution, if possible, is to enroll as an organization. They both cost the same, but it’s a bit more of a pain to enroll as an organization. If you have a 501(c)(3) -like an incorporated Service Office or Service body, then you have most of the heavy lifting done. We use an organizational account for the BMLT apps.
A paid account is $99 USD per year, which is absolutely peanuts.
Of course, in order to use Xcode, you need to own an Apple computer. Cross-platform solutions like Xamarin, Ionic or React Native aren’t supported; however, these frameworks often help you out a great deal with the types of things that BMLTiOSLib handles; so it may not be needed if you are using one of those systems.

Next Steps

If you’re interested in the BMLTiOSLib, then please follow us down the rabbit-hole…