Bluetooth Logo

Writing an SDK With Core Bluetooth – 03 – Wireframes

This entry is part 6 of 24 in the series Writing an SDK With Core Bluetooth


Remember that I will be providing the code to do all this. The lesson is on Bluetooth; not app development. I just wanted to make sure that we all understand the user experience for the apps.

There will be one app for each platform:

It should be noted that the wireframes are only used as general functionality/layout heuristics. They are NOT to be considered “design guidance,” as far as the look and feel of the app goes.


The first screen will be a very simple screen (on iOS and MacOS), with just two buttons:

    If this is touched/clicked/selected, then the app will operate in “Central” mode, where the user finds peripherals, selects one, “asks a question,” and then “gets an answer.”
    All platforms will display a vertically-scrolling list of available peripherals. Touching/clicking/selecting one of these rows will open a screen that will handle the “asking” to that peripheral.
  • PERIPHERAL (iOS and MacOS Only)
    If this is touched/clicked/selected, then the app will operate in “Peripheral” mode, where it advertises to a Central, and waits for questions.
    On all platforms, a screen will be brought in that will act as a “waiting” screen. When the peripheral is questioned, another screen will be brought in that will display info about the Central (and also afford disconnecting), and the question being asked. It will then allow the user to either specify a random answer (the app chooses one of the twenty randomly, and sends it), or the user can specify one of the answers manually.

All platforms will use a “Navigation Controller”-style interface, with platform-appropriate “back” functionality.


In these apps, the Central screen will have a text entry box to “ask” the Peripheral a question. The user can enter the question manually.

The reply from the Peripheral will be displayed on the same screen as the question (when it is received).

Apple does not support Peripheral Mode on TV. That will only be Central.


For WatchOS, it won’t be practical to have the user type/scribble in a question, so the user can touch a “Random” button that will display a randomly-selected question. If the user wants to ask the question, then they can hit “SEND.”

Apple does not support Peripheral Mode on Watch. This will only be Central.

Traditional Storyboard Apps

I had considered making the apps with the new SwiftUI system that Apple has developed. It’s quite cool, and would allow a lot more synchronicity between the apps.

However, the system is still developing and getting known, which leads me to think it might just make things more confusing for folks if I did that. For this project, I’ll just stick to traditional storyboard-based apps. I may work with SwiftUI in the future; just not yet.

What I will do, however, is work in localization, SwiftLint, and other “pro” app development techniques. I won’t go out of my way to explain them, but they will be there for all to see. I’ll also probably add some testing for the parts that we’ll be working on.

At this point, we don’t really need to worry too much about the app design. The apps will “magically” develop in the background, and will be ready by the time we get there. We will mostly be working on a separate framework project.

Speaking of which, why don’t we start looking into a Bluetooth SDK…